<?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>226024</bug_id>
          
          <creation_ts>2021-05-20 09:14:28 -0700</creation_ts>
          <short_desc>[webkitcorepy] Add shared terminal input code</short_desc>
          <delta_ts>2021-08-04 10:59:01 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225985</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761983</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-20 09:14:28 -0700</bug_when>
    <thetext>Python 2 and 3 have slightly different stdin input functions, we should have shared code that centralizes these differences. In developing https://bugs.webkit.org/show_bug.cgi?id=225985, I found myself building a Yes/No command line input picker multiple times, that seems like something that should be shared as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761984</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-20 09:15:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/78261645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761985</commentid>
    <comment_count>2</comment_count>
      <attachid>429178</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-20 09:19:29 -0700</bug_when>
    <thetext>Created attachment 429178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762663</commentid>
    <comment_count>3</comment_count>
      <attachid>429362</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-21 16:44:23 -0700</bug_when>
    <thetext>Created attachment 429362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769463</commentid>
    <comment_count>4</comment_count>
      <attachid>431344</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-06-14 10:56:36 -0700</bug_when>
    <thetext>Created attachment 431344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780195</commentid>
    <comment_count>5</comment_count>
      <attachid>434461</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-07-28 13:59:37 -0700</bug_when>
    <thetext>Created attachment 434461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781789</commentid>
    <comment_count>6</comment_count>
      <attachid>434873</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-03 17:20:04 -0700</bug_when>
    <thetext>Created attachment 434873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781916</commentid>
    <comment_count>7</comment_count>
      <attachid>434461</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-08-04 10:02:58 -0700</bug_when>
    <thetext>Comment on attachment 434461
Patch

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

r=me

&gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:32
&gt; +    def choose(cls, prompt, options=None, default=None, strict=False, numbered=False):

Is this used any where other than unit tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781917</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-04 10:03:58 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #7)
&gt; Comment on attachment 434461 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434461&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Tools/Scripts/libraries/webkitcorepy/webkitcorepy/terminal.py:32
&gt; &gt; +    def choose(cls, prompt, options=None, default=None, strict=False, numbered=False):
&gt; 
&gt; Is this used any where other than unit tests?

Not yet, but https://bugs.webkit.org/show_bug.cgi?id=225985 uses it. Patch for that change is up, needs some clean up before review, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781920</commentid>
    <comment_count>9</comment_count>
      <attachid>434461</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-04 10:15:22 -0700</bug_when>
    <thetext>Comment on attachment 434461
Patch

Need to bump webkitcorepy version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781922</commentid>
    <comment_count>10</comment_count>
      <attachid>434911</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-08-04 10:26:23 -0700</bug_when>
    <thetext>Created attachment 434911
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781940</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-04 10:58:59 -0700</bug_when>
    <thetext>Committed r280640 (240253@main): &lt;https://commits.webkit.org/240253@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434911.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429178</attachid>
            <date>2021-05-20 09:19:29 -0700</date>
            <delta_ts>2021-05-21 16:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226024-20210520091928.patch</filename>
            <type>text/plain</type>
            <size>15715</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmY1ZmRhZmZjNGRlODA0Yjg4OGU1MmM1MzRmNjU0N2Qy
MmExNjhmYi4uNzczOTQ4NGFhNjNhNGYxNzM5MTJhOWFkNzhhMmJjZWRiNWVhMjhhMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDIxLTA1LTIwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzgyNjE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L19faW5pdF9fLnB5OiBFeHBvcnQgVGVybWluYWwgb2JqZWN0LgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlh
bHMucHk6CisgICAgICAgIChjcmVkZW50aWFscyk6IFVzZSBUZXJtaW5hbC5pbnB1dC4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFs
LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlcm1pbmFsKToKKyAgICAgICAgKFRlcm1pbmFsLmlucHV0
KTogUHl0aG9uIDIvMyBjb21wYXRpYmxlIGlucHV0IGZ1bmN0aW9uLgorICAgICAgICAoVGVybWlu
YWwuY2hvb3NlKTogR2VuZXJpYyBZZXMvTm8gaW5wdXQgcHJvbXB0LgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5p
dHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS91c2VyLnB5OgorICAgICAgICAoVXNlci5wcm9tcHQpOiBVc2UgVGVybWluYWwuaW5wdXQuCisg
ICAgICAgIChVc2VyLnByb21wdF93aXRoX211bHRpcGxlX2xpc3RzKTogRGl0dG8uCisgICAgICAg
IChVc2VyLnByb21wdF93aXRoX2xpc3QpOiBEaXR0by4KKyAgICAgICAgKFVzZXIuY29uZmlybSk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX21v
Y2sucHk6CisgICAgICAgIChNb2NrVXNlci5wcm9tcHQpOiBVc2UgVGVybWluYWwuaW5wdXQuCisg
ICAgICAgIChNb2NrVXNlci5wcm9tcHRfd2l0aF9saXN0KTogRGl0dG8uCisKIDIwMjEtMDUtMTkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wICJnZXQiIHBy
ZWZpeCBmcm9tIFNRTGl0ZVN0YXRlbWVudCBtZW1iZXIgZnVuY3Rpb25zIGFzIHdlbGwgYXMgb3V0
LXBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CmluZGV4IGU5Nzg1MDZiZjE1Y2Qw
ZDU0ZDU1YTc3MzIxYzA2M2JiMzQ1ZjgxNmMuLjQ4OWUwYjA3OTcyN2M5YzhjMzY5MWNjZjVkYTNk
ZTQ4MTEzYTNhODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQpAQCAtMzUsNiArMzUsNyBA
QCBmcm9tIHdlYmtpdGNvcmVweS50aW1lb3V0IGltcG9ydCBUaW1lb3V0CiBmcm9tIHdlYmtpdGNv
cmVweS5zdWJwcm9jZXNzX3V0aWxzIGltcG9ydCBUaW1lb3V0RXhwaXJlZCwgQ29tcGxldGVkUHJv
Y2VzcywgcnVuCiBmcm9tIHdlYmtpdGNvcmVweS5vdXRwdXRfY2FwdHVyZSBpbXBvcnQgTG9nZ2Vy
Q2FwdHVyZSwgT3V0cHV0Q2FwdHVyZSwgT3V0cHV0RHVwbGljYXRlCiBmcm9tIHdlYmtpdGNvcmVw
eS50YXNrX3Bvb2wgaW1wb3J0IFRhc2tQb29sCitmcm9tIHdlYmtpdGNvcmVweS50ZXJtaW5hbCBp
bXBvcnQgVGVybWluYWwKIGZyb20gd2Via2l0Y29yZXB5LmNyZWRlbnRpYWxzIGltcG9ydCBjcmVk
ZW50aWFscwogCiB2ZXJzaW9uID0gVmVyc2lvbigwLCA1LCAxNCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMu
cHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2Ny
ZWRlbnRpYWxzLnB5CmluZGV4IGExNDM5M2I3OTY2NGMwNmQ4ZGVhZGU0ZjQ1NGQ1YzkzOWI1Y2Zm
MDMuLjUwMWY4MGYzNTg1YzlhN2ExYTZkYzg0NDcxZjRiNDAzZWZkZTM4ZTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVu
dGlhbHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9jcmVkZW50aWFscy5weQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQgZ2V0cGFzcwog
aW1wb3J0IHN5cwogCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IENhbGxlZFByb2Nlc3NFcnJvcgot
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0Y29yZXB5
IGltcG9ydCBPdXRwdXRDYXB0dXJlLCBUZXJtaW5hbAogCiBfY2FjaGUgPSBkaWN0KCkKIApAQCAt
NjQsNyArNjQsNyBAQCBkZWYgY3JlZGVudGlhbHModXJsLCByZXF1aXJlZD1UcnVlLCBuYW1lPU5v
bmUsIHByb21wdD1Ob25lLCBrZXlfbmFtZT0ncGFzc3dvcmQnKQogICAgICAgICAgICAgICAgIHJh
aXNlIE9TRXJyb3IoJ05vIHR0eSB0byBwcm9tcHQgdXNlciBmb3IgdXNlcm5hbWUnKQogICAgICAg
ICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQXV0aGVudGljYXRpb24gcmVxdWlyZWQgdG8gdXNlIHt9
XG4iLmZvcm1hdChwcm9tcHQgb3IgbmFtZSkpCiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCdVc2VybmFtZTogJykKLSAgICAgICAgICAgIHVzZXJuYW1lID0gKGlucHV0IGlmIHN5cy52ZXJz
aW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQpKCkKKyAgICAgICAgICAgIHVzZXJuYW1l
ID0gVGVybWluYWwuaW5wdXQoKQogICAgICAgICAgICAgdXNlcm5hbWVfcHJvbXB0ZWQgPSBUcnVl
CiAKICAgICBpZiBub3Qga2V5IGFuZCByZXF1aXJlZDoKQEAgLTg1LDcgKzg1LDcgQEAgZGVmIGNy
ZWRlbnRpYWxzKHVybCwgcmVxdWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBwcm9tcHQ9Tm9uZSwga2V5
X25hbWU9J3Bhc3N3b3JkJykKIAogICAgIGlmIGtleXJpbmcgYW5kICh1c2VybmFtZV9wcm9tcHRl
ZCBvciBrZXlfcHJvbXB0ZWQpOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdTdG9yZSB1c2Vy
bmFtZSBhbmQge30gaW4gc3lzdGVtIGtleXJpbmcgZm9yIHt9PyAoWS9OKTogJy5mb3JtYXQoa2V5
X25hbWUsIHVybCkpCi0gICAgICAgIHJlc3BvbnNlID0gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2lu
Zm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQpKCkKKyAgICAgICAgcmVzcG9uc2UgPSBUZXJtaW5h
bC5pbnB1dCgpCiAgICAgICAgIGlmIHJlc3BvbnNlLmxvd2VyKCkgaW4gWyd5JywgJ3llcycsICdv
ayddOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnU3RvcmluZyBjcmVkZW50aWFscy4u
LlxuJykKICAgICAgICAgICAgIGtleXJpbmcuc2V0X3Bhc3N3b3JkKHVybCwgJ3VzZXJuYW1lJywg
dXNlcm5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Njg1YzViYzY0
NWVhYzE4MGVmZThkM2Q1MTMzMjViMDgwYTYyYjgzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weQpA
QCAtMCwwICsxLDQ0IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCBzeXMKKworCitjbGFzcyBUZXJtaW5hbChvYmplY3QpOgorICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBpbnB1dChjbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiAoaW5w
dXQgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIHJhd19pbnB1dCkoKmFyZ3MsICoq
a3dhcmdzKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGNob29zZShjbHMsIHByb21wdCwg
b3B0aW9ucz1Ob25lLCBkZWZhdWx0PU5vbmUsIHN0cmljdD1GYWxzZSk6CisgICAgICAgIG9wdGlv
bnMgPSBvcHRpb25zIG9yICgnWWVzJywgJ05vJykKKworICAgICAgICByZXNwb25zZSA9IGNscy5p
bnB1dCgne30gKHt9KTogJy5mb3JtYXQocHJvbXB0LCAnLycuam9pbihvcHRpb25zKSkpCisgICAg
ICAgIGlmIG5vdCBzdHJpY3Q6CisgICAgICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6Cisg
ICAgICAgICAgICAgICAgaWYgb3B0aW9uLmxvd2VyKCkuc3RhcnRzd2l0aChyZXNwb25zZS5sb3dl
cigpKToKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBvcHRpb24KKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiByZXNwb25zZSBpbiBvcHRpb25zOgorICAgICAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlCisgICAgICAgIHJldHVybiBkZWZhdWx0IG9yIG9wdGlvbnNb
MF0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJr
aXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3Rlcm1pbmFsX3VuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNlMTk0MDIyNzc1M2ZlZGQ3OWNmZThiMGJkZGFlMzA5MmZjZTJlNzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3Rlc3RzL3Rlcm1pbmFsX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsOTYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zy
b20gbW9jayBpbXBvcnQgcGF0Y2gKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0
dXJlLCBUZXJtaW5hbAorCisKK2NsYXNzIFRlcm1pbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2Up
OgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpbnB1dChjbHMsIHZhbHVlKToKKyAgICAgICAg
ZGVmIGZ1bmN0aW9uKG91dHB1dCk6CisgICAgICAgICAgICBwcmludChvdXRwdXQpCisgICAgICAg
ICAgICByZXR1cm4gdmFsdWUKKworICAgICAgICByZXR1cm4gZnVuY3Rpb24KKworICAgIGRlZiB0
ZXN0X2Nob29zZV9iYXNpYyhzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5
LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ3knKSksIE91dHB1dENhcHR1cmUoKSBh
cyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFs
LmNob29zZSgnQ29udGludWU6ICcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vKTogXG4nKQorCisgICAgICAg
IHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0
KCduJykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWU6ICcpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAo
WWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5h
bC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0KCdodWgnKSksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0
dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29z
ZSgnQ29udGludWU6ICcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vKTogXG4nKQorCisgICAgZGVmIHRlc3Rf
Y2hvb3NlX3N0cmljdChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRl
cm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ1llcycpKSwgT3V0cHV0Q2FwdHVyZSgpIGFz
IGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwu
Y2hvb3NlKCdDb250aW51ZTogJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vKTogXG4n
KQorCisgICAgICAgIHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5l
dz1zZWxmLmlucHV0KCdObycpKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAn
LCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZTogIChZZXMvTm8pOiBcbicpCisKKyAgICAgICAgd2l0aCBw
YXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ24nKSks
IE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWU6ICcsIHN0cmljdD1UcnVlKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRp
bnVlOiAgKFllcy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIHBhdGNoKCd3ZWJraXRjb3JlcHku
VGVybWluYWwuaW5wdXQnLCBuZXc9c2VsZi5pbnB1dCgneScpKSwgT3V0cHV0Q2FwdHVyZSgpIGFz
IGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwu
Y2hvb3NlKCdDb250aW51ZTogJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vKTogXG4n
KQorCisgICAgZGVmIHRlc3RfY2hvb3NlX2RlZmF1bHQoc2VsZik6CisgICAgICAgIHdpdGggcGF0
Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0KCd5JykpLCBP
dXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAnLCBkZWZhdWx0PSdPdGhlcicpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29u
dGludWU6ICAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVw
eS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0KCduJykpLCBPdXRwdXRDYXB0dXJlKCkg
YXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFs
LmNob29zZSgnQ29udGludWU6ICcsIGRlZmF1bHQ9J090aGVyJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZTogIChZZXMvTm8p
OiBcbicpCisKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0
JywgbmV3PXNlbGYuaW5wdXQoJ2h1aCcpKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnT3RoZXInLCBUZXJtaW5hbC5jaG9vc2UoJ0Nv
bnRpbnVlOiAnLCBkZWZhdWx0PSdPdGhlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNh
cHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vKTogXG4nKQorCisg
ICAgZGVmIHRlc3RfY2hvb3NlX3RyaXBsZShzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Vi
a2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ3knKSksIE91dHB1dENh
cHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycs
IFRlcm1pbmFsLmNob29zZSgnQ29udGludWU6ICcsIG9wdGlvbnM9KCdZZXMnLCAnTm8nLCAnTWF5
YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVl
KCksICdDb250aW51ZTogIChZZXMvTm8vTWF5YmUpOiBcbicpCisKKyAgICAgICAgd2l0aCBwYXRj
aCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ24nKSksIE91
dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZTogJywgb3B0aW9ucz0oJ1llcycsICdObycs
ICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0
dmFsdWUoKSwgJ0NvbnRpbnVlOiAgKFllcy9Oby9NYXliZSk6IFxuJykKKworICAgICAgICB3aXRo
IHBhdGNoKCd3ZWJraXRjb3JlcHkuVGVybWluYWwuaW5wdXQnLCBuZXc9c2VsZi5pbnB1dCgnbWF5
JykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdNYXliZScsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWU6ICcsIG9wdGlvbnM9KCdZ
ZXMnLCAnTm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQu
c3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZTogIChZZXMvTm8vTWF5YmUpOiBcbicpCisKKyAg
ICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYu
aW5wdXQoJ2h1aCcpKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZTogJywgb3B0
aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
YXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlOiAgKFllcy9Oby9NYXliZSk6IFxu
JykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2Vy
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkKaW5kZXgg
MTQ3YzEwMzU1NzQ3NTU5MTEzMzMxYTFiODI2OWVhMjc2NGY4ODVkNy4uZTdjMDExZTdhYTJiOTE4
MTRjMTYxOTFlZjVlODc5MDQxNGJhOTk2MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3VzZXIucHkKQEAgLTM2LDYgKzM2LDggQEAgaW1wb3J0IHN5cwogaW1wb3J0
IHN1YnByb2Nlc3MKIGltcG9ydCB3ZWJicm93c2VyCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9y
dCBUZXJtaW5hbAorCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9y
dCBFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wbGF0Zm9ybWluZm8gaW1w
b3J0IFBsYXRmb3JtSW5mbwogCkBAIC01MCwxMSArNTIsNiBAQCBleGNlcHQgSW1wb3J0RXJyb3I6
CiAgICAgICAgICMgVGhlcmUgaXMgbm8gcmVhZGxpbmUgbW9kdWxlIGZvciB3aW4zMiwgbm90IG11
Y2ggdG8gZG8gZXhjZXB0IGNyeS4KICAgICAgICAgX2xvZy53YXJuKCJVbmFibGUgdG8gaW1wb3J0
IHJlYWRsaW5lLiIpCiAKLWlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6Ci0gICAgaW5wdXRf
ZnVuYyA9IGlucHV0Ci1lbHNlOgotICAgIGlucHV0X2Z1bmMgPSByYXdfaW5wdXQKLQogCiBjbGFz
cyBVc2VyKG9iamVjdCk6CiAgICAgREVGQVVMVF9OTyA9ICduJwpAQCAtNjcsNyArNjQsNyBAQCBj
bGFzcyBVc2VyKG9iamVjdCk6CiAKICAgICAjIEZJWE1FOiBUaGVzZSBhcmUgQGNsYXNzbWV0aG9k
cyBiZWNhdXNlIGJ1Z3ppbGxhLnB5IGRvZXNuJ3QgaGF2ZSBhIFRvb2wgb2JqZWN0ICh0aHVzIG5v
IFVzZXIgaW5zdGFuY2UpLgogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHQoY2xzLCBt
ZXNzYWdlLCByZXBlYXQ9MSwgcmF3X2lucHV0PWlucHV0X2Z1bmMpOgorICAgIGRlZiBwcm9tcHQo
Y2xzLCBtZXNzYWdlLCByZXBlYXQ9MSwgcmF3X2lucHV0PVRlcm1pbmFsLmlucHV0KToKICAgICAg
ICAgcmVzcG9uc2UgPSBOb25lCiAgICAgICAgIHdoaWxlIChyZXBlYXQgYW5kIG5vdCByZXNwb25z
ZSk6CiAgICAgICAgICAgICByZXBlYXQgLT0gMQpAQCAtNzksNyArNzYsNyBAQCBjbGFzcyBVc2Vy
KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBjbHMucHJvbXB0KG1lc3NhZ2UsIHJlcGVhdD1yZXBl
YXQsIHJhd19pbnB1dD1nZXRwYXNzLmdldHBhc3MpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgcHJvbXB0X3dpdGhfbXVsdGlwbGVfbGlzdHMoY2xzLCBsaXN0X3RpdGxlLCBzdWJ0aXRsZXMs
IGxpc3RzLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9aW5wdXRfZnVuYyk6
CisgICAgZGVmIHByb21wdF93aXRoX211bHRpcGxlX2xpc3RzKGNscywgbGlzdF90aXRsZSwgc3Vi
dGl0bGVzLCBsaXN0cywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRlcm1p
bmFsLmlucHV0KToKICAgICAgICAgaXRlbV9pbmRleCA9IDAKICAgICAgICAgY3VtdWxhdGVkX2xp
c3QgPSBbXQogICAgICAgICBwcmludChsaXN0X3RpdGxlKQpAQCAtMTE5LDcgKzExNiw3IEBAIGNs
YXNzIFVzZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdF9pdGVtc1tyZXN1
bHRdCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcHJvbXB0X3dpdGhfbGlzdChjbHMsIGxp
c3RfdGl0bGUsIGxpc3RfaXRlbXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1
dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgcHJvbXB0X3dpdGhfbGlzdChjbHMsIGxpc3RfdGl0bGUs
IGxpc3RfaXRlbXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1UZXJtaW5h
bC5pbnB1dCk6CiAgICAgICAgIHByaW50KGxpc3RfdGl0bGUpCiAgICAgICAgIGkgPSAwCiAgICAg
ICAgIGZvciBpdGVtIGluIGxpc3RfaXRlbXM6CkBAIC0xNjEsNyArMTU4LDcgQEAgY2xhc3MgVXNl
cihvYmplY3QpOgogICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAot
ICAgIGRlZiBjb25maXJtKHNlbGYsIG1lc3NhZ2U9Tm9uZSwgZGVmYXVsdD1ERUZBVUxUX1lFUywg
cmF3X2lucHV0PWlucHV0X2Z1bmMpOgorICAgIGRlZiBjb25maXJtKHNlbGYsIG1lc3NhZ2U9Tm9u
ZSwgZGVmYXVsdD1ERUZBVUxUX1lFUywgcmF3X2lucHV0PVRlcm1pbmFsLmlucHV0KToKICAgICAg
ICAgaWYgbm90IG1lc3NhZ2U6CiAgICAgICAgICAgICBtZXNzYWdlID0gIkNvbnRpbnVlPyIKICAg
ICAgICAgY2hvaWNlID0geyd5JzogJ1kvbicsICduJzogJ3kvTid9W2RlZmF1bHRdCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQppbmRleCAz
NTNjMDlhZWVlZTIyYTY3ZjFlMzdmMWI4ZjA1NGRlMmJkOTMwNjA4Li45NjJjZjg2MmFmNjY2YTc5
Y2Q2MzEzYzExMGU3ODc5NGQwOTcyZGNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS91c2VyX21vY2sucHkKQEAgLTI5LDIwICsyOSwxOSBAQAogaW1wb3J0
IGxvZ2dpbmcKIGltcG9ydCBzeXMKIAotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFRlcm1pbmFsCiAKLWlmIHN5cy52ZXJzaW9uX2lu
Zm8gPCAoMywgMCk6Ci0gICAgaW5wdXQgPSByYXdfaW5wdXQKK19sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBNb2NrVXNlcihvYmplY3QpOgogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9
aW5wdXQpOgorICAgIGRlZiBwcm9tcHQoY2xzLCBtZXNzYWdlLCByZXBlYXQ9MSwgcmF3X2lucHV0
PVRlcm1pbmFsLmlucHV0KToKICAgICAgICAgcmV0dXJuICJNb2NrIHVzZXIgcmVzcG9uc2UiCiAK
ICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcHJvbXB0X3dpdGhfbGlzdChjbHMsIGxpc3RfdGl0
bGUsIGxpc3RfaXRlbXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1pbnB1
dCk6CisgICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBsaXN0X3RpdGxlLCBsaXN0X2l0ZW1z
LCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgog
ICAgICAgICBwYXNzCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429362</attachid>
            <date>2021-05-21 16:44:23 -0700</date>
            <delta_ts>2021-06-14 10:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226024-20210521164422.patch</filename>
            <type>text/plain</type>
            <size>16143</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjMwOTRiYWZkZWM3Mjc0N2UzYTgwZTYxMzg5MWViZmVk
MmNlZTQzOC4uNjA1OTFhOGMzOGQwNjA4MTY3ZjgzNGE2MTRhZjQ2MGQzNGQ3Y2MxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDIxLTA1LTIxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzgyNjE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L19faW5pdF9fLnB5OiBFeHBvcnQgVGVybWluYWwgb2JqZWN0LgorICAgICAg
ICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlh
bHMucHk6CisgICAgICAgIChjcmVkZW50aWFscyk6IFVzZSBUZXJtaW5hbC5pbnB1dC4KKyAgICAg
ICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFs
LnB5OiBBZGRlZC4KKyAgICAgICAgKFRlcm1pbmFsKToKKyAgICAgICAgKFRlcm1pbmFsLmlucHV0
KTogUHl0aG9uIDIvMyBjb21wYXRpYmxlIGlucHV0IGZ1bmN0aW9uLgorICAgICAgICAoVGVybWlu
YWwuY2hvb3NlKTogR2VuZXJpYyBZZXMvTm8gaW5wdXQgcHJvbXB0LgorICAgICAgICAqIFNjcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5p
dHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS91c2VyLnB5OgorICAgICAgICAoVXNlci5wcm9tcHQpOiBVc2UgVGVybWluYWwuaW5wdXQuCisg
ICAgICAgIChVc2VyLnByb21wdF93aXRoX211bHRpcGxlX2xpc3RzKTogRGl0dG8uCisgICAgICAg
IChVc2VyLnByb21wdF93aXRoX2xpc3QpOiBEaXR0by4KKyAgICAgICAgKFVzZXIuY29uZmlybSk6
IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX21v
Y2sucHk6CisgICAgICAgIChNb2NrVXNlci5wcm9tcHQpOiBVc2UgVGVybWluYWwuaW5wdXQuCisg
ICAgICAgIChNb2NrVXNlci5wcm9tcHRfd2l0aF9saXN0KTogRGl0dG8uCisKIDIwMjEtMDUtMjEg
IEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBsYXlv
dXQgdGVzdHMgaW4gc3RyZXNzIG1vZGUgZm9yIDEwIGl0ZXJhdGlvbnMgb24gcmVndWxhciBFV1Mg
bGF5b3V0LXRlc3QgcXVldWVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQppbmRleCBlOTc4NTA2
YmYxNWNkMGQ1NGQ1NWE3NzMyMWMwNjNiYjM0NWY4MTZjLi40ODllMGIwNzk3MjdjOWM4YzM2OTFj
Y2Y1ZGEzZGU0ODExM2EzYTg0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkKQEAgLTM1LDYg
KzM1LDcgQEAgZnJvbSB3ZWJraXRjb3JlcHkudGltZW91dCBpbXBvcnQgVGltZW91dAogZnJvbSB3
ZWJraXRjb3JlcHkuc3VicHJvY2Vzc191dGlscyBpbXBvcnQgVGltZW91dEV4cGlyZWQsIENvbXBs
ZXRlZFByb2Nlc3MsIHJ1bgogZnJvbSB3ZWJraXRjb3JlcHkub3V0cHV0X2NhcHR1cmUgaW1wb3J0
IExvZ2dlckNhcHR1cmUsIE91dHB1dENhcHR1cmUsIE91dHB1dER1cGxpY2F0ZQogZnJvbSB3ZWJr
aXRjb3JlcHkudGFza19wb29sIGltcG9ydCBUYXNrUG9vbAorZnJvbSB3ZWJraXRjb3JlcHkudGVy
bWluYWwgaW1wb3J0IFRlcm1pbmFsCiBmcm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBv
cnQgY3JlZGVudGlhbHMKIAogdmVyc2lvbiA9IFZlcnNpb24oMCwgNSwgMTQpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRl
bnRpYWxzLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNv
cmVweS9jcmVkZW50aWFscy5weQppbmRleCBhMTQzOTNiNzk2NjRjMDZkOGRlYWRlNGY0NTRkNWM5
MzliNWNmZjAzLi41MDFmODBmMzU4NWM5YTdhMWE2ZGM4NDQ3MWY0YjQwM2VmZGUzOGUyIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L2NyZWRlbnRpYWxzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMucHkKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0IGdl
dHBhc3MKIGltcG9ydCBzeXMKIAogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBDYWxsZWRQcm9jZXNz
RXJyb3IKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCitmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwgVGVybWluYWwKIAogX2NhY2hlID0gZGljdCgp
CiAKQEAgLTY0LDcgKzY0LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVxdWlyZWQ9VHJ1ZSwg
bmFtZT1Ob25lLCBwcm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3JkJykKICAgICAgICAgICAg
ICAgICByYWlzZSBPU0Vycm9yKCdObyB0dHkgdG8gcHJvbXB0IHVzZXIgZm9yIHVzZXJuYW1lJykK
ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIHRv
IHVzZSB7fVxuIi5mb3JtYXQocHJvbXB0IG9yIG5hbWUpKQogICAgICAgICAgICAgc3lzLnN0ZGVy
ci53cml0ZSgnVXNlcm5hbWU6ICcpCi0gICAgICAgICAgICB1c2VybmFtZSA9IChpbnB1dCBpZiBz
eXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2UgcmF3X2lucHV0KSgpCisgICAgICAgICAgICB1
c2VybmFtZSA9IFRlcm1pbmFsLmlucHV0KCkKICAgICAgICAgICAgIHVzZXJuYW1lX3Byb21wdGVk
ID0gVHJ1ZQogCiAgICAgaWYgbm90IGtleSBhbmQgcmVxdWlyZWQ6CkBAIC04NSw3ICs4NSw3IEBA
IGRlZiBjcmVkZW50aWFscyh1cmwsIHJlcXVpcmVkPVRydWUsIG5hbWU9Tm9uZSwgcHJvbXB0PU5v
bmUsIGtleV9uYW1lPSdwYXNzd29yZCcpCiAKICAgICBpZiBrZXlyaW5nIGFuZCAodXNlcm5hbWVf
cHJvbXB0ZWQgb3Iga2V5X3Byb21wdGVkKToKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnU3Rv
cmUgdXNlcm5hbWUgYW5kIHt9IGluIHN5c3RlbSBrZXlyaW5nIGZvciB7fT8gKFkvTik6ICcuZm9y
bWF0KGtleV9uYW1lLCB1cmwpKQotICAgICAgICByZXNwb25zZSA9IChpbnB1dCBpZiBzeXMudmVy
c2lvbl9pbmZvID4gKDMsIDApIGVsc2UgcmF3X2lucHV0KSgpCisgICAgICAgIHJlc3BvbnNlID0g
VGVybWluYWwuaW5wdXQoKQogICAgICAgICBpZiByZXNwb25zZS5sb3dlcigpIGluIFsneScsICd5
ZXMnLCAnb2snXToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1N0b3JpbmcgY3JlZGVu
dGlhbHMuLi5cbicpCiAgICAgICAgICAgICBrZXlyaW5nLnNldF9wYXNzd29yZCh1cmwsICd1c2Vy
bmFtZScsIHVzZXJuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRm
MTA2YzM3NzAwY2JmZWI2MDc3ZmQ1ODcwYjdkYmNkNGFhODc2ZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWlu
YWwucHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisj
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgc3lzCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgaW5wdXQoY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1
cm4gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQpKCph
cmdzLCAqKmt3YXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaG9vc2UoY2xzLCBw
cm9tcHQsIG9wdGlvbnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBzdHJpY3Q9RmFsc2UpOgorICAgICAg
ICBvcHRpb25zID0gb3B0aW9ucyBvciAoJ1llcycsICdObycpCisKKyAgICAgICAgcmVzcG9uc2Ug
PSBOb25lCisgICAgICAgIHdoaWxlIHJlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICByZXNw
b25zZSA9IGNscy5pbnB1dCgne30gKHt9KTogJy5mb3JtYXQocHJvbXB0LCAnLycuam9pbihvcHRp
b25zKSkpCisgICAgICAgICAgICBpZiBub3Qgc3RyaWN0OgorICAgICAgICAgICAgICAgIGZvciBv
cHRpb24gaW4gb3B0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9uLmxvd2VyKCku
c3RhcnRzd2l0aChyZXNwb25zZS5sb3dlcigpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlID0gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAg
ICAgICBpZiByZXNwb25zZSBub3QgaW4gb3B0aW9uczoKKyAgICAgICAgICAgICAgICBpZiBub3Qg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIid7fScgaXMgbm90IGFuIG9wdGlv
biIuZm9ybWF0KHJlc3BvbnNlKSkKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGRlZmF1bHQK
KyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2xpYnJh
cmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3Rlcm1pbmFsX3VuaXR0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0
cy90ZXJtaW5hbF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2Q4NjdhZjY4YmJhZTM0MTAxOTE4
MmM1MDlhZjMyY2M3NDg0NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy90ZXJtaW5hbF91bml0dGVzdC5w
eQpAQCAtMCwwICsxLDk5IEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCB1bml0dGVzdAorCitmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwgVGVybWluYWwKKworCitjbGFzcyBUZXJtaW5hbFRl
c3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaW5wdXQo
Y2xzLCAqYXJncyk6CisgICAgICAgIGNscy5pbmRleCA9IDAKKworICAgICAgICBkZWYgZnVuY3Rp
b24ob3V0cHV0KToKKyAgICAgICAgICAgIHByaW50KG91dHB1dCkKKyAgICAgICAgICAgIGNscy5p
bmRleCArPSAxCisgICAgICAgICAgICByZXR1cm4gYXJnc1tjbHMuaW5kZXggLSAxXQorCisgICAg
ICAgIHJldHVybiBmdW5jdGlvbgorCisgICAgZGVmIHRlc3RfY2hvb3NlX2Jhc2ljKHNlbGYpOgor
ICAgICAgICB3aXRoIHBhdGNoKCd3ZWJraXRjb3JlcHkuVGVybWluYWwuaW5wdXQnLCBuZXc9c2Vs
Zi5pbnB1dCgneScpKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZTogJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250
aW51ZTogIChZZXMvTm8pOiBcbicpCisKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5
LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ24nKSksIE91dHB1dENhcHR1cmUoKSBh
cyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ05vJywgVGVybWluYWwu
Y2hvb3NlKCdDb250aW51ZTogJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQu
c3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZTogIChZZXMvTm8pOiBcbicpCisKKyAgICAgICAg
d2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQo
J2h1aCcsICd5JykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNvbnRp
bnVlOiAgKFllcy9Obyk6IFxuJ2h1aCcgaXMgbm90IGFuIG9wdGlvblxuQ29udGludWU6ICAoWWVz
L05vKTogXG4iKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX3N0cmljdChzZWxmKToKKyAgICAgICAg
d2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQo
J1llcycpKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZTogJywgc3RyaWN0PVRy
dWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgp
LCAnQ29udGludWU6ICAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggcGF0Y2goJ3dlYmtp
dGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0KCdObycpKSwgT3V0cHV0Q2Fw
dHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBU
ZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAnLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZTogIChZZXMv
Tm8pOiBcbicpCisKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlu
cHV0JywgbmV3PXNlbGYuaW5wdXQoJ24nLCAnWWVzJykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2Fw
dHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlOiAnLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICJDb250aW51ZTogIChZZXMvTm8pOiBcbiduJyBp
cyBub3QgYW4gb3B0aW9uXG5Db250aW51ZTogIChZZXMvTm8pOiBcbiIpCisKKyAgICAgICAgd2l0
aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ3kn
LCAnTm8nKSksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZTogJywgc3RyaWN0PVRy
dWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgp
LCAiQ29udGludWU6ICAoWWVzL05vKTogXG4neScgaXMgbm90IGFuIG9wdGlvblxuQ29udGludWU6
ICAoWWVzL05vKTogXG4iKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX2RlZmF1bHQoc2VsZik6Cisg
ICAgICAgIHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxm
LmlucHV0KCd5JykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAnLCBkZWZh
dWx0PSdPdGhlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5n
ZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggcGF0
Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0KCduJykpLCBP
dXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWU6ICcsIGRlZmF1bHQ9J090aGVyJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250
aW51ZTogIChZZXMvTm8pOiBcbicpCisKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5
LlRlcm1pbmFsLmlucHV0JywgbmV3PXNlbGYuaW5wdXQoJ2h1aCcpKSwgT3V0cHV0Q2FwdHVyZSgp
IGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnT3RoZXInLCBUZXJt
aW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAnLCBkZWZhdWx0PSdPdGhlcicpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVz
L05vKTogXG4nKQorCisgICAgZGVmIF90ZXN0X2Nob29zZV90cmlwbGUoc2VsZik6CisgICAgICAg
IHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxmLmlucHV0
KCd5JykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlOiAnLCBvcHRpb25zPSgn
WWVzJywgJ05vJywgJ01heWJlJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vL01heWJlKTogXG4nKQorCisg
ICAgICAgIHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5pbnB1dCcsIG5ldz1zZWxm
LmlucHV0KCduJykpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWU6ICcsIG9wdGlv
bnM9KCdZZXMnLCAnTm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Fw
dHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZTogIChZZXMvTm8vTWF5YmUpOiBcbicp
CisKKyAgICAgICAgd2l0aCBwYXRjaCgnd2Via2l0Y29yZXB5LlRlcm1pbmFsLmlucHV0JywgbmV3
PXNlbGYuaW5wdXQoJ21heScpKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTWF5YmUnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVl
OiAnLCBvcHRpb25zPSgnWWVzJywgJ05vJywgJ01heWJlJykpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWU6ICAoWWVzL05vL01h
eWJlKTogXG4nKQorCisgICAgICAgIHdpdGggcGF0Y2goJ3dlYmtpdGNvcmVweS5UZXJtaW5hbC5p
bnB1dCcsIG5ldz1zZWxmLmlucHV0KCdodWgnKSksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJl
ZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdD
b250aW51ZTogJywgb3B0aW9ucz0oJ1llcycsICdObycsICdNYXliZScpLCBkZWZhdWx0PSdObycp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAn
Q29udGludWU6ICAoWWVzL05vL01heWJlKTogXG4nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vdXNlci5weQppbmRleCA2NTQwODcyOTJmNDQxY2JhODE0MTJlZGIyOTI2
N2FkMjE2OWEyMzZkLi4wODc2YjlhN2Y5ODhjYjEwYTE0MWIxMzgxYmY4OTllMjc0YWU0MzI1IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQpAQCAtMzYs
NiArMzYsOCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHdlYmJyb3dz
ZXIKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFRlcm1pbmFsCisKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLnBsYXRmb3JtaW5mbyBpbXBvcnQgUGxhdGZvcm1JbmZvCiAKQEAgLTUwLDEx
ICs1Miw2IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgIyBUaGVyZSBpcyBubyByZWFk
bGluZSBtb2R1bGUgZm9yIHdpbjMyLCBub3QgbXVjaCB0byBkbyBleGNlcHQgY3J5LgogICAgICAg
ICBfbG9nLndhcm4oIlVuYWJsZSB0byBpbXBvcnQgcmVhZGxpbmUuIikKIAotaWYgc3lzLnZlcnNp
b25faW5mbyA+ICgzLCAwKToKLSAgICBpbnB1dF9mdW5jID0gaW5wdXQKLWVsc2U6Ci0gICAgaW5w
dXRfZnVuYyA9IHJhd19pbnB1dAotCiAKIGNsYXNzIFVzZXIob2JqZWN0KToKICAgICBERUZBVUxU
X05PID0gJ24nCkBAIC02Nyw3ICs2NCw3IEBAIGNsYXNzIFVzZXIob2JqZWN0KToKIAogICAgICMg
RklYTUU6IFRoZXNlIGFyZSBAY2xhc3NtZXRob2RzIGJlY2F1c2UgYnVnemlsbGEucHkgZG9lc24n
dCBoYXZlIGEgVG9vbCBvYmplY3QgKHRodXMgbm8gVXNlciBpbnN0YW5jZSkuCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9
aW5wdXRfZnVuYyk6CisgICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdf
aW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICByZXNwb25zZSA9IE5vbmUKICAgICAgICAg
d2hpbGUgKHJlcGVhdCBhbmQgbm90IHJlc3BvbnNlKToKICAgICAgICAgICAgIHJlcGVhdCAtPSAx
CkBAIC03OSw3ICs3Niw3IEBAIGNsYXNzIFVzZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIGNs
cy5wcm9tcHQobWVzc2FnZSwgcmVwZWF0PXJlcGVhdCwgcmF3X2lucHV0PWdldHBhc3MuZ2V0cGFz
cykKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHRfd2l0aF9tdWx0aXBsZV9saXN0
cyhjbHMsIGxpc3RfdGl0bGUsIHN1YnRpdGxlcywgbGlzdHMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9
RmFsc2UsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgcHJvbXB0X3dpdGhfbXVsdGlw
bGVfbGlzdHMoY2xzLCBsaXN0X3RpdGxlLCBzdWJ0aXRsZXMsIGxpc3RzLCBjYW5fY2hvb3NlX211
bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBpdGVtX2lu
ZGV4ID0gMAogICAgICAgICBjdW11bGF0ZWRfbGlzdCA9IFtdCiAgICAgICAgIHByaW50KGxpc3Rf
dGl0bGUpCkBAIC0xMTksNyArMTE2LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogICAgICAgICAg
ICAgICAgIHJldHVybiBsaXN0X2l0ZW1zW3Jlc3VsdF0KIAogICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywgY2FuX2No
b29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0X2Z1bmMpOgorICAgIGRlZiBwcm9t
cHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywgY2FuX2Nob29zZV9tdWx0
aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRlcm1pbmFsLmlucHV0KToKICAgICAgICAgcHJpbnQobGlz
dF90aXRsZSkKICAgICAgICAgaSA9IDAKICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdF9pdGVtczoK
QEAgLTE2MSw3ICsxNTgsNyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCBJ
T0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIGNvbmZpcm0oc2VsZiwgbWVzc2Fn
ZT1Ob25lLCBkZWZhdWx0PURFRkFVTFRfWUVTLCByYXdfaW5wdXQ9aW5wdXRfZnVuYyk6CisgICAg
ZGVmIGNvbmZpcm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZhdWx0PURFRkFVTFRfWUVTLCByYXdf
aW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBpZiBub3QgbWVzc2FnZToKICAgICAgICAg
ICAgIG1lc3NhZ2UgPSAiQ29udGludWU/IgogICAgICAgICBjaG9pY2UgPSB7J3knOiAnWS9uJywg
J24nOiAneS9OJ31bZGVmYXVsdF0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS91c2VyX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vdXNlcl9tb2NrLnB5CmluZGV4IDM1M2MwOWFlZWVlMjJhNjdmMWUzN2YxYjhmMDU0
ZGUyYmQ5MzA2MDguLjk2MmNmODYyYWY2NjZhNzljZDYzMTNjMTEwZTc4Nzk0ZDA5NzJkY2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX21vY2su
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5w
eQpAQCAtMjksMjAgKzI5LDE5IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHN5cwogCi1fbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
VGVybWluYWwKIAotaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICBpbnB1dCA9IHJh
d19pbnB1dAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIE1v
Y2tVc2VyKG9iamVjdCk6CiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcHJvbXB0KGNscywg
bWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1pbnB1dCk6CisgICAgZGVmIHByb21wdChjbHMs
IG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBy
ZXR1cm4gIk1vY2sgdXNlciByZXNwb25zZSIKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBw
cm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywgY2FuX2Nob29zZV9t
dWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0KToKKyAgICBkZWYgcHJvbXB0X3dpdGhfbGlz
dChjbHMsIGxpc3RfdGl0bGUsIGxpc3RfaXRlbXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2Us
IHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431344</attachid>
            <date>2021-06-14 10:56:36 -0700</date>
            <delta_ts>2021-07-28 13:59:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226024-20210614105635.patch</filename>
            <type>text/plain</type>
            <size>19923</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODgzNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU4IEBACisyMDIxLTA2LTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAy
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzgyNjE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyA2NiAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5OiBBZGRlZC4KKyA2NyAgICAgICAgKFRl
cm1pbmFsKToKKyA2OCAgICAgICAgKFRlcm1pbmFsLmlucHV0KTogUHl0aG9uIDIvMyBjb21wYXRp
YmxlIGlucHV0IGZ1bmN0aW9uLgorIDY5ICAgICAgICAoVGVybWluYWwuY2hvb3NlKTogR2VuZXJp
YyBZZXMvTm8gaW5wdXQgcHJvbXB0LgorIDcwICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dl
YmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3QucHk6IEFkZGVk
LgorIDcxICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5Ogor
IDcyICAgICAgICAoVXNlci5wcm9tcHQpOiBVc2UgVGVybWluYWwuaW5wdXQuCisgNzMgICAgICAg
IChVc2VyLnByb21wdF93aXRoX211bHRpcGxlX2xpc3RzKTogRGl0dG8uCisgNzQgICAgICAgIChV
c2VyLnByb21wdF93aXRoX2xpc3QpOiBEaXR0by4KKyA3NSAgICAgICAgKFVzZXIuY29uZmlybSk6
IERpdHRvLgorIDc2ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2Vy
X21vY2sucHk6CisgNzcgICAgICAgIChNb2NrVXNlci5wcm9tcHQpOiBVc2UgVGVybWluYWwuaW5w
dXQuCisgNzggICAgICAgIChNb2NrVXNlci5wcm9tcHRfd2l0aF9saXN0KTogRGl0dG8uCisKKyAg
ICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhl
IGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkv
X19pbml0X18ucHk6IEV4cG9ydCBUZXJtaW5hbCBvYmplY3QuCisgICAgICAgICogU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weToKKyAgICAg
ICAgKGNyZWRlbnRpYWxzKTogVXNlIFRlcm1pbmFsLmlucHV0LgorICAgICAgICAqIFNjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHk6Cisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nr
cy90ZXJtaW5hbC5weTogQWRkZWQuCisgICAgICAgIChUZXJtaW5hbCk6CisgICAgICAgIChUZXJt
aW5hbC5pbnB1dCk6IE1vY2tpbmcgaW5wdXQgYW5kIHJhd19pbnB1dCByZXF1aXJlcyBzbyBzcGVj
aWFsaXplZCBrbm93bGVkZ2UsCisgICAgICAgIHNvIHdlIHNob3VsZCBnZW5lcmFsaXplIGl0Lgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVy
bWluYWwucHk6IEFkZGVkLgorICAgICAgICAoVGVybWluYWwpOgorICAgICAgICAoVGVybWluYWwu
aW5wdXQpOiBQeXRob24gMi8zIGNvbXBhdGlibGUgaW5wdXQgZnVuY3Rpb24uCisgICAgICAgIChU
ZXJtaW5hbC5jaG9vc2UpOiBHZW5lcmljIG11bHRpcGxlLWNob2ljZSBpbnB1dCBwcm9tcHQuCisg
ICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0
cy90ZXJtaW5hbF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChUZXJtaW5hbFRlc3RzKToK
KyAgICAgICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9vc2VfYmFzaWMpOgorICAgICAgICAoVGVy
bWluYWxUZXN0cy50ZXN0X2Nob29zZV9zdHJpY3QpOgorICAgICAgICAoVGVybWluYWxUZXN0cy50
ZXN0X2Nob29zZV9kZWZhdWx0KToKKyAgICAgICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9vc2Vf
dHJpcGxlKToKKyAgICAgICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9vc2VfbnVtYmVyKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weToKKyAgICAgICAg
KFVzZXIucHJvbXB0KTogVXNlIFRlcm1pbmFsLmlucHV0LgorICAgICAgICAoVXNlci5wcm9tcHRf
d2l0aF9tdWx0aXBsZV9saXN0cyk6IERpdHRvLgorICAgICAgICAoVXNlci5wcm9tcHRfd2l0aF9s
aXN0KTogRGl0dG8uCisgICAgICAgIChVc2VyLmNvbmZpcm0pOiBEaXR0by4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5OgorICAgICAgICAoTW9j
a1VzZXIucHJvbXB0KTogVXNlIFRlcm1pbmFsLmlucHV0LgorICAgICAgICAoTW9ja1VzZXIucHJv
bXB0X3dpdGhfbGlzdCk6IERpdHRvLgorCiAyMDIxLTA2LTE0ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlciBub3Qg
aW5zdGFudGlhdGVkIGJ1dCBvYmplY3RzIGFyZSBwdW5uZWQgdG8gdGhlIHR5cGUKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18u
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9fX2luaXRfXy5weQkocmV2aXNpb24gMjc4ODI5KQorKysgVG9vbHMvU2NyaXB0
cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBmcm9tIHdlYmtpdGNvcmVweS50aW1lb3V0IGltcG9y
dCBUaW1lb3V0CiBmcm9tIHdlYmtpdGNvcmVweS5zdWJwcm9jZXNzX3V0aWxzIGltcG9ydCBUaW1l
b3V0RXhwaXJlZCwgQ29tcGxldGVkUHJvY2VzcywgcnVuCiBmcm9tIHdlYmtpdGNvcmVweS5vdXRw
dXRfY2FwdHVyZSBpbXBvcnQgTG9nZ2VyQ2FwdHVyZSwgT3V0cHV0Q2FwdHVyZSwgT3V0cHV0RHVw
bGljYXRlCiBmcm9tIHdlYmtpdGNvcmVweS50YXNrX3Bvb2wgaW1wb3J0IFRhc2tQb29sCitmcm9t
IHdlYmtpdGNvcmVweS50ZXJtaW5hbCBpbXBvcnQgVGVybWluYWwKIGZyb20gd2Via2l0Y29yZXB5
LmNyZWRlbnRpYWxzIGltcG9ydCBjcmVkZW50aWFscwogCiB2ZXJzaW9uID0gVmVyc2lvbigwLCA1
LCAxNykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRj
b3JlcHkvY3JlZGVudGlhbHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weQkocmV2aXNpb24gMjc4
ODI5KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVw
eS9jcmVkZW50aWFscy5weQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQg
Z2V0cGFzcwogaW1wb3J0IHN5cwogCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IENhbGxlZFByb2Nl
c3NFcnJvcgotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Vi
a2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlLCBUZXJtaW5hbAogCiBfY2FjaGUgPSBkaWN0
KCkKIApAQCAtNjQsNyArNjQsNyBAQCBkZWYgY3JlZGVudGlhbHModXJsLCByZXF1aXJlZD1UcnVl
LCBuYW1lCiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTm8gdHR5IHRvIHByb21wdCB1
c2VyIGZvciB1c2VybmFtZScpCiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJBdXRoZW50
aWNhdGlvbiByZXF1aXJlZCB0byB1c2Uge31cbiIuZm9ybWF0KHByb21wdCBvciBuYW1lKSkKICAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1VzZXJuYW1lOiAnKQotICAgICAgICAgICAgdXNl
cm5hbWUgPSAoaW5wdXQgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIHJhd19pbnB1
dCkoKQorICAgICAgICAgICAgdXNlcm5hbWUgPSBUZXJtaW5hbC5pbnB1dCgpCiAgICAgICAgICAg
ICB1c2VybmFtZV9wcm9tcHRlZCA9IFRydWUKIAogICAgIGlmIG5vdCBrZXkgYW5kIHJlcXVpcmVk
OgpAQCAtODUsNyArODUsNyBAQCBkZWYgY3JlZGVudGlhbHModXJsLCByZXF1aXJlZD1UcnVlLCBu
YW1lCiAKICAgICBpZiBrZXlyaW5nIGFuZCAodXNlcm5hbWVfcHJvbXB0ZWQgb3Iga2V5X3Byb21w
dGVkKToKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnU3RvcmUgdXNlcm5hbWUgYW5kIHt9IGlu
IHN5c3RlbSBrZXlyaW5nIGZvciB7fT8gKFkvTik6ICcuZm9ybWF0KGtleV9uYW1lLCB1cmwpKQot
ICAgICAgICByZXNwb25zZSA9IChpbnB1dCBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVs
c2UgcmF3X2lucHV0KSgpCisgICAgICAgIHJlc3BvbnNlID0gVGVybWluYWwuaW5wdXQoKQogICAg
ICAgICBpZiByZXNwb25zZS5sb3dlcigpIGluIFsneScsICd5ZXMnLCAnb2snXToKICAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoJ1N0b3JpbmcgY3JlZGVudGlhbHMuLi5cbicpCiAgICAgICAg
ICAgICBrZXlyaW5nLnNldF9wYXNzd29yZCh1cmwsICd1c2VybmFtZScsIHVzZXJuYW1lKQpJbmRl
eDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXJt
aW5hbC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisj
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitpbXBvcnQgc3lzCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAgICBAY2xh
c3NtZXRob2QKKyAgICBkZWYgaW5wdXQoY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBy
ZXR1cm4gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQp
KCphcmdzLCAqKmt3YXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaG9vc2UoY2xz
LCBwcm9tcHQsIG9wdGlvbnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBzdHJpY3Q9RmFsc2UsIG51bWJl
cmVkPUZhbHNlKToKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgKCdZZXMnLCAnTm8nKQor
CisgICAgICAgIHJlc3BvbnNlID0gTm9uZQorICAgICAgICB3aGlsZSByZXNwb25zZSBpcyBOb25l
OgorICAgICAgICAgICAgaWYgbnVtYmVyZWQ6CisgICAgICAgICAgICAgICAgbnVtYmVyZWRfb3B0
aW9ucyA9IFsne30pIHt9Jy5mb3JtYXQoaSArIDEsIG9wdGlvbnNbaV0pIGZvciBpIGluIHJhbmdl
KGxlbihvcHRpb25zKSldCisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjbHMuaW5wdXQoJ3t9
OlxuICAgIHt9XG46ICcuZm9ybWF0KHByb21wdCwgJ1xuICAgICcuam9pbihudW1iZXJlZF9vcHRp
b25zKSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY2xz
LmlucHV0KCd7fSAoe30pOiAnLmZvcm1hdChwcm9tcHQsICcvJy5qb2luKG9wdGlvbnMpKSkKKwor
ICAgICAgICAgICAgaWYgbnVtYmVyZWQgYW5kIHJlc3BvbnNlLmlzZGlnaXQoKToKKyAgICAgICAg
ICAgICAgICBpbmRleCA9IGludChyZXNwb25zZSkgLSAxCisgICAgICAgICAgICAgICAgaWYgaW5k
ZXggPj0gMCBhbmQgaW5kZXggPCBsZW4ob3B0aW9ucyk6CisgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlID0gb3B0aW9uc1tpbmRleF0KKworICAgICAgICAgICAgaWYgbm90IHN0cmljdDoKKyAg
ICAgICAgICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6CisgICAgICAgICAgICAgICAgICAg
IGlmIG9wdGlvbi5sb3dlcigpLnN0YXJ0c3dpdGgocmVzcG9uc2UubG93ZXIoKSk6CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG9wdGlvbgorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcmVzcG9uc2Ugbm90IGluIG9wdGlvbnM6CisgICAg
ICAgICAgICAgICAgaWYgbm90IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIn
e30nIGlzIG5vdCBhbiBvcHRpb24iLmZvcm1hdChyZXNwb25zZSkpCisgICAgICAgICAgICAgICAg
cmVzcG9uc2UgPSBkZWZhdWx0CisKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCkluZGV4OiBUb29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5p
dF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkJKHJldmlzaW9uIDI3ODgyOSkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19p
bml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDMgKzI1LDQgQEAgZnJvbSB3ZWJraXRjb3Jl
cHkubW9ja3MudGltZV8gaW1wb3J0IFRpbQogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Muc3VicHJv
Y2VzcyBpbXBvcnQgUHJvY2Vzc0NvbXBsZXRpb24sIFN1YnByb2Nlc3MKIAogZnJvbSB3ZWJraXRj
b3JlcHkubW9ja3MucmVxdWVzdHNfIGltcG9ydCBSZXNwb25zZSwgUmVxdWVzdHMKK2Zyb20gd2Vi
a2l0Y29yZXB5Lm1vY2tzLnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbApJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy90ZXJtaW5hbC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L21vY2tzL3Rlcm1pbmFsLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgc3lzCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAg
ICBpbmRleCA9IDAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpbnB1dChjbHMsICphcmdz
KToKKyAgICAgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorCisgICAgICAgIGNscy5pbmRleCA9
IDAKKworICAgICAgICBkZWYgZnVuY3Rpb24ob3V0cHV0KToKKyAgICAgICAgICAgIHByaW50KG91
dHB1dCkKKyAgICAgICAgICAgIGNscy5pbmRleCArPSAxCisgICAgICAgICAgICByZXR1cm4gYXJn
c1tjbHMuaW5kZXggLSAxXQorCisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6
CisgICAgICAgICAgICByZXR1cm4gcGF0Y2goJ2J1aWx0aW5zLmlucHV0JywgbmV3PWZ1bmN0aW9u
KQorCisgICAgICAgIGltcG9ydCBfX2J1aWx0aW5fXworICAgICAgICByZXR1cm4gcGF0Y2gub2Jq
ZWN0KF9fYnVpbHRpbl9fLCAncmF3X2lucHV0JywgbmV3PWZ1bmN0aW9uKQpJbmRleDogVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy90ZXJtaW5h
bF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlc3RzL3Rlcm1pbmFsX3VuaXR0ZXN0LnB5CShub25leGlz
dGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1v
Y2tzLCBPdXRwdXRDYXB0dXJlLCBUZXJtaW5hbAorCisKK2NsYXNzIFRlcm1pbmFsVGVzdHModW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Nob29zZV9iYXNpYyhzZWxmKToKKyAgICAg
ICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2Fw
dHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9j
a3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVl
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwu
aW5wdXQoJ2h1aCcsICd5JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNv
bnRpbnVlIChZZXMvTm8pOiBcbidodWgnIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMv
Tm8pOiBcbiIpCisKKyAgICBkZWYgdGVzdF9jaG9vc2Vfc3RyaWN0KHNlbGYpOgorICAgICAgICB3
aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCdZZXMnKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1
cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3Nl
KCdDb250aW51ZScsIHN0cmljdD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8pOiBcbicpCisKKyAgICAg
ICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnTm8nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNh
cHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAg
ICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCduJywgJ1llcycpLCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJt
aW5hbC5jaG9vc2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAiQ29udGludWUgKFllcy9Obyk6IFxu
J24nIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMvTm8pOiBcbiIpCisKKyAgICAgICAg
d2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScsICdObycpLCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNo
b29zZSgnQ29udGludWUnLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICJDb250aW51ZSAoWWVzL05vKTogXG4neScgaXMg
bm90IGFuIG9wdGlvblxuQ29udGludWUgKFllcy9Obyk6IFxuIikKKworICAgIGRlZiB0ZXN0X2No
b29zZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCd5
JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBkZWZhdWx0PSdPdGhlcicp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAn
Q29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlu
cHV0KCduJyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIGRlZmF1bHQ9J090
aGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVl
KCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWlu
YWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdPdGhlcicsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBk
ZWZhdWx0PSdPdGhlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgIGRlZiB0ZXN0X2No
b29zZV90cmlwbGUoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ3kn
KSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAn
Tm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0Nv
bnRpbnVlJywgb3B0aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8v
TWF5YmUpOiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnbWF5Jyks
IE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ01heWJlJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAn
Tm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgn
Q29udGludWUnLCBvcHRpb25zPSgnWWVzJywgJ05vJywgJ01heWJlJyksIGRlZmF1bHQ9J05vJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdD
b250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX251bWJl
cihzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnMicpLCBPdXRwdXRD
YXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdCZXRh
JywgVGVybWluYWwuY2hvb3NlKCdQaWNrJywgb3B0aW9ucz0oJ0FscGhhJywgJ0JldGEnLCAnQ2hh
cmxpZScsICdEZWx0YScpLCBudW1iZXJlZD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ1BpY2s6XG4gICAgMSkgQWxwaGFcbiAgICAy
KSBCZXRhXG4gICAgMykgQ2hhcmxpZVxuICAgIDQpIERlbHRhXG46IFxuJykKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5CShyZXZpc2lvbiAyNzg4
MjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgc3VicHJvY2Vz
cwogaW1wb3J0IHdlYmJyb3dzZXIKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFRlcm1pbmFs
CisKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2
ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBsYXRmb3JtaW5mbyBpbXBvcnQgUGxhdGZv
cm1JbmZvCiAKQEAgLTUwLDExICs1Miw2IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAg
IyBUaGVyZSBpcyBubyByZWFkbGluZSBtb2R1bGUgZm9yIHdpbjMyLCBub3QgbXVjaCB0byBkbyBl
eGNlcHQgY3J5LgogICAgICAgICBfbG9nLndhcm4oIlVuYWJsZSB0byBpbXBvcnQgcmVhZGxpbmUu
IikKIAotaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICBpbnB1dF9mdW5jID0gaW5w
dXQKLWVsc2U6Ci0gICAgaW5wdXRfZnVuYyA9IHJhd19pbnB1dAotCiAKIGNsYXNzIFVzZXIob2Jq
ZWN0KToKICAgICBERUZBVUxUX05PID0gJ24nCkBAIC02Nyw3ICs2NCw3IEBAIGNsYXNzIFVzZXIo
b2JqZWN0KToKIAogICAgICMgRklYTUU6IFRoZXNlIGFyZSBAY2xhc3NtZXRob2RzIGJlY2F1c2Ug
YnVnemlsbGEucHkgZG9lc24ndCBoYXZlIGEgVG9vbCBvYmplY3QgKHRodXMgbm8gVXNlciBpbnN0
YW5jZSkuCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJl
cGVhdD0xLCByYXdfaW5wdXQ9aW5wdXRfZnVuYyk6CisgICAgZGVmIHByb21wdChjbHMsIG1lc3Nh
Z2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICByZXNwb25z
ZSA9IE5vbmUKICAgICAgICAgd2hpbGUgKHJlcGVhdCBhbmQgbm90IHJlc3BvbnNlKToKICAgICAg
ICAgICAgIHJlcGVhdCAtPSAxCkBAIC03OSw3ICs3Niw3IEBAIGNsYXNzIFVzZXIob2JqZWN0KToK
ICAgICAgICAgcmV0dXJuIGNscy5wcm9tcHQobWVzc2FnZSwgcmVwZWF0PXJlcGVhdCwgcmF3X2lu
cHV0PWdldHBhc3MuZ2V0cGFzcykKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHRf
d2l0aF9tdWx0aXBsZV9saXN0cyhjbHMsIGxpc3RfdGl0bGUsIHN1YnRpdGxlcywgbGlzdHMsIGNh
bl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYg
cHJvbXB0X3dpdGhfbXVsdGlwbGVfbGlzdHMoY2xzLCBsaXN0X3RpdGxlLCBzdWJ0aXRsZXMsIGxp
c3RzLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQp
OgogICAgICAgICBpdGVtX2luZGV4ID0gMAogICAgICAgICBjdW11bGF0ZWRfbGlzdCA9IFtdCiAg
ICAgICAgIHByaW50KGxpc3RfdGl0bGUpCkBAIC0xMTksNyArMTE2LDcgQEAgY2xhc3MgVXNlcihv
YmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBsaXN0X2l0ZW1zW3Jlc3VsdF0KIAogICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwg
bGlzdF9pdGVtcywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0X2Z1
bmMpOgorICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVt
cywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRlcm1pbmFsLmlucHV0KToK
ICAgICAgICAgcHJpbnQobGlzdF90aXRsZSkKICAgICAgICAgaSA9IDAKICAgICAgICAgZm9yIGl0
ZW0gaW4gbGlzdF9pdGVtczoKQEAgLTE2MSw3ICsxNTgsNyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6
CiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIGNv
bmZpcm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZhdWx0PURFRkFVTFRfWUVTLCByYXdfaW5wdXQ9
aW5wdXRfZnVuYyk6CisgICAgZGVmIGNvbmZpcm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZhdWx0
PURFRkFVTFRfWUVTLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBpZiBub3Qg
bWVzc2FnZToKICAgICAgICAgICAgIG1lc3NhZ2UgPSAiQ29udGludWU/IgogICAgICAgICBjaG9p
Y2UgPSB7J3knOiAnWS9uJywgJ24nOiAneS9OJ31bZGVmYXVsdF0KSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX21vY2sucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQkocmV2aXNpb24g
Mjc4ODI5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9j
ay5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMjAgKzI5LDE5IEBACiBpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IHN5cwogCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgVGVybWluYWwKIAotaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAw
KToKLSAgICBpbnB1dCA9IHJhd19pbnB1dAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQogCiAKIGNsYXNzIE1vY2tVc2VyKG9iamVjdCk6CiAKICAgICBAY2xhc3NtZXRob2QKLSAg
ICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1pbnB1dCk6Cisg
ICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9VGVybWluYWwu
aW5wdXQpOgogICAgICAgICByZXR1cm4gIk1vY2sgdXNlciByZXNwb25zZSIKIAogICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9p
dGVtcywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0KToKKyAgICBk
ZWYgcHJvbXB0X3dpdGhfbGlzdChjbHMsIGxpc3RfdGl0bGUsIGxpc3RfaXRlbXMsIGNhbl9jaG9v
c2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIHBh
c3MKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434461</attachid>
            <date>2021-07-28 13:59:37 -0700</date>
            <delta_ts>2021-08-04 10:26:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226024-20210728135937.patch</filename>
            <type>text/plain</type>
            <size>19151</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDM5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDIxLTA3LTI4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAy
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzgyNjE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L19faW5pdF9fLnB5OiBFeHBvcnQgVGVybWluYWwgb2JqZWN0Lgor
ICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3Jl
ZGVudGlhbHMucHk6CisgICAgICAgIChjcmVkZW50aWFscyk6IFVzZSBUZXJtaW5hbC5pbnB1dC4K
KyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21v
Y2tzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHk6IEFkZGVkLgorICAgICAgICAoVGVybWlu
YWwpOgorICAgICAgICAoVGVybWluYWwuaW5wdXQpOiBNb2NraW5nIGlucHV0IGFuZCByYXdfaW5w
dXQgcmVxdWlyZXMgc28gc3BlY2lhbGl6ZWQga25vd2xlZGdlLAorICAgICAgICBzbyB3ZSBzaG91
bGQgZ2VuZXJhbGl6ZSBpdC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5OiBBZGRlZC4KKyAgICAgICAgKFRlcm1pbmFsKToK
KyAgICAgICAgKFRlcm1pbmFsLmlucHV0KTogUHl0aG9uIDIvMyBjb21wYXRpYmxlIGlucHV0IGZ1
bmN0aW9uLgorICAgICAgICAoVGVybWluYWwuY2hvb3NlKTogR2VuZXJpYyBtdWx0aXBsZS1jaG9p
Y2UgaW5wdXQgcHJvbXB0LgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAg
ICAoVGVybWluYWxUZXN0cyk6CisgICAgICAgIChUZXJtaW5hbFRlc3RzLnRlc3RfY2hvb3NlX2Jh
c2ljKToKKyAgICAgICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9vc2Vfc3RyaWN0KToKKyAgICAg
ICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9vc2VfZGVmYXVsdCk6CisgICAgICAgIChUZXJtaW5h
bFRlc3RzLnRlc3RfY2hvb3NlX3RyaXBsZSk6CisgICAgICAgIChUZXJtaW5hbFRlc3RzLnRlc3Rf
Y2hvb3NlX251bWJlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3VzZXIucHk6CisgICAgICAgIChVc2VyLnByb21wdCk6IFVzZSBUZXJtaW5hbC5pbnB1dC4KKyAg
ICAgICAgKFVzZXIucHJvbXB0X3dpdGhfbXVsdGlwbGVfbGlzdHMpOiBEaXR0by4KKyAgICAgICAg
KFVzZXIucHJvbXB0X3dpdGhfbGlzdCk6IERpdHRvLgorICAgICAgICAoVXNlci5jb25maXJtKTog
RGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9j
ay5weToKKyAgICAgICAgKE1vY2tVc2VyLnByb21wdCk6IFVzZSBUZXJtaW5hbC5pbnB1dC4KKyAg
ICAgICAgKE1vY2tVc2VyLnByb21wdF93aXRoX2xpc3QpOiBEaXR0by4KKwogMjAyMS0wNy0yOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFdl
YlNvY2tldDogU2FmYXJpIG9uIGlPUyAxNSBiZXRhIDMgaXMgc2VuZGluZyBpbnZhbGlkIGNsb3Nl
IGZyYW1lCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkJKHJldmlzaW9uIDI4MDM5OCkK
KysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19p
bml0X18ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgZnJvbSB3ZWJraXRjb3Jl
cHkudGltZW91dCBpbXBvcnQgVGltZW91dAogZnJvbSB3ZWJraXRjb3JlcHkuc3VicHJvY2Vzc191
dGlscyBpbXBvcnQgVGltZW91dEV4cGlyZWQsIENvbXBsZXRlZFByb2Nlc3MsIHJ1bgogZnJvbSB3
ZWJraXRjb3JlcHkub3V0cHV0X2NhcHR1cmUgaW1wb3J0IExvZ2dlckNhcHR1cmUsIE91dHB1dENh
cHR1cmUsIE91dHB1dER1cGxpY2F0ZQogZnJvbSB3ZWJraXRjb3JlcHkudGFza19wb29sIGltcG9y
dCBUYXNrUG9vbAorZnJvbSB3ZWJraXRjb3JlcHkudGVybWluYWwgaW1wb3J0IFRlcm1pbmFsCiBm
cm9tIHdlYmtpdGNvcmVweS5jcmVkZW50aWFscyBpbXBvcnQgY3JlZGVudGlhbHMKIGZyb20gd2Vi
a2l0Y29yZXB5Lm1lYXN1cmVfdGltZSBpbXBvcnQgTWVhc3VyZVRpbWUKIGZyb20gd2Via2l0Y29y
ZXB5Lm5lc3RlZF9mdXp6eV9kaWN0IGltcG9ydCBOZXN0ZWRGdXp6eURpY3QKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9jcmVkZW50aWFscy5weQkocmV2aXNpb24gMjgwMzk4KQorKysgVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50aWFscy5weQko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQCBpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IHN5
cwogCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IENhbGxlZFByb2Nlc3NFcnJvcgotZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBP
dXRwdXRDYXB0dXJlLCBUZXJtaW5hbAogCiBfY2FjaGUgPSBkaWN0KCkKIApAQCAtNjQsNyArNjQs
NyBAQCBkZWYgY3JlZGVudGlhbHModXJsLCByZXF1aXJlZD1UcnVlLCBuYW1lCiAgICAgICAgICAg
ICAgICAgcmFpc2UgT1NFcnJvcignTm8gdHR5IHRvIHByb21wdCB1c2VyIGZvciB1c2VybmFtZScp
CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJBdXRoZW50aWNhdGlvbiByZXF1aXJlZCB0
byB1c2Uge31cbiIuZm9ybWF0KHByb21wdCBvciBuYW1lKSkKICAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ1VzZXJuYW1lOiAnKQotICAgICAgICAgICAgdXNlcm5hbWUgPSAoaW5wdXQgaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKSBlbHNlIHJhd19pbnB1dCkoKQorICAgICAgICAgICAg
dXNlcm5hbWUgPSBUZXJtaW5hbC5pbnB1dCgpCiAgICAgICAgICAgICB1c2VybmFtZV9wcm9tcHRl
ZCA9IFRydWUKIAogICAgIGlmIG5vdCBrZXk6CkBAIC04NSw3ICs4NSw3IEBAIGRlZiBjcmVkZW50
aWFscyh1cmwsIHJlcXVpcmVkPVRydWUsIG5hbWUKIAogICAgIGlmIGtleXJpbmcgYW5kICh1c2Vy
bmFtZV9wcm9tcHRlZCBvciBrZXlfcHJvbXB0ZWQpOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCdTdG9yZSB1c2VybmFtZSBhbmQge30gaW4gc3lzdGVtIGtleXJpbmcgZm9yIHt9PyAoWS9OKTog
Jy5mb3JtYXQoa2V5X25hbWUsIHVybCkpCi0gICAgICAgIHJlc3BvbnNlID0gKGlucHV0IGlmIHN5
cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQpKCkKKyAgICAgICAgcmVzcG9u
c2UgPSBUZXJtaW5hbC5pbnB1dCgpCiAgICAgICAgIGlmIHJlc3BvbnNlLmxvd2VyKCkgaW4gWyd5
JywgJ3llcycsICdvayddOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnU3RvcmluZyBj
cmVkZW50aWFscy4uLlxuJykKICAgICAgICAgICAgIGtleXJpbmcuc2V0X3Bhc3N3b3JkKHVybCwg
J3VzZXJuYW1lJywgdXNlcm5hbWUpCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJr
aXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS90ZXJtaW5hbC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisjIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworCitjbGFzcyBU
ZXJtaW5hbChvYmplY3QpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpbnB1dChjbHMsICph
cmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiAoaW5wdXQgaWYgc3lzLnZlcnNpb25faW5m
byA+ICgzLCAwKSBlbHNlIHJhd19pbnB1dCkoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgQGNsYXNz
bWV0aG9kCisgICAgZGVmIGNob29zZShjbHMsIHByb21wdCwgb3B0aW9ucz1Ob25lLCBkZWZhdWx0
PU5vbmUsIHN0cmljdD1GYWxzZSwgbnVtYmVyZWQ9RmFsc2UpOgorICAgICAgICBvcHRpb25zID0g
b3B0aW9ucyBvciAoJ1llcycsICdObycpCisKKyAgICAgICAgcmVzcG9uc2UgPSBOb25lCisgICAg
ICAgIHdoaWxlIHJlc3BvbnNlIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBudW1iZXJlZDoKKyAg
ICAgICAgICAgICAgICBudW1iZXJlZF9vcHRpb25zID0gWyd7fSkge30nLmZvcm1hdChpICsgMSwg
b3B0aW9uc1tpXSkgZm9yIGkgaW4gcmFuZ2UobGVuKG9wdGlvbnMpKV0KKyAgICAgICAgICAgICAg
ICByZXNwb25zZSA9IGNscy5pbnB1dCgne306XG4gICAge31cbjogJy5mb3JtYXQocHJvbXB0LCAn
XG4gICAgJy5qb2luKG51bWJlcmVkX29wdGlvbnMpKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgcmVzcG9uc2UgPSBjbHMuaW5wdXQoJ3t9ICh7fSk6ICcuZm9ybWF0KHByb21w
dCwgJy8nLmpvaW4ob3B0aW9ucykpKQorCisgICAgICAgICAgICBpZiBudW1iZXJlZCBhbmQgcmVz
cG9uc2UuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KHJlc3BvbnNlKSAt
IDEKKyAgICAgICAgICAgICAgICBpZiBpbmRleCA+PSAwIGFuZCBpbmRleCA8IGxlbihvcHRpb25z
KToKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBvcHRpb25zW2luZGV4XQorCisgICAg
ICAgICAgICBpZiBub3Qgc3RyaWN0OgorICAgICAgICAgICAgICAgIGZvciBvcHRpb24gaW4gb3B0
aW9uczoKKyAgICAgICAgICAgICAgICAgICAgaWYgb3B0aW9uLmxvd2VyKCkuc3RhcnRzd2l0aChy
ZXNwb25zZS5sb3dlcigpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gb3B0
aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiByZXNw
b25zZSBub3QgaW4gb3B0aW9uczoKKyAgICAgICAgICAgICAgICBpZiBub3QgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnQoIid7fScgaXMgbm90IGFuIG9wdGlvbiIuZm9ybWF0KHJl
c3BvbnNlKSkKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGRlZmF1bHQKKworICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5w
eQkocmV2aXNpb24gMjgwMzk4KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQkod29ya2luZyBjb3B5KQpAQCAtMjUs
MyArMjUsNCBAQCBmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy50aW1lXyBpbXBvcnQgVGltCiBmcm9t
IHdlYmtpdGNvcmVweS5tb2Nrcy5zdWJwcm9jZXNzIGltcG9ydCBQcm9jZXNzQ29tcGxldGlvbiwg
U3VicHJvY2VzcwogCiBmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy5yZXF1ZXN0c18gaW1wb3J0IFJl
c3BvbnNlLCBSZXF1ZXN0cworZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MudGVybWluYWwgaW1wb3J0
IFRlcm1pbmFsCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L21vY2tzL3Rlcm1pbmFsLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHkJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9tb2Nrcy90ZXJtaW5hbC5weQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
CisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKKworCitj
bGFzcyBUZXJtaW5hbChvYmplY3QpOgorICAgIGluZGV4ID0gMAorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIGlucHV0KGNscywgKmFyZ3MpOgorICAgICAgICBmcm9tIG1vY2sgaW1wb3J0IHBh
dGNoCisKKyAgICAgICAgY2xzLmluZGV4ID0gMAorCisgICAgICAgIGRlZiBmdW5jdGlvbihvdXRw
dXQpOgorICAgICAgICAgICAgcHJpbnQob3V0cHV0KQorICAgICAgICAgICAgY2xzLmluZGV4ICs9
IDEKKyAgICAgICAgICAgIHJldHVybiBhcmdzW2Nscy5pbmRleCAtIDFdCisKKyAgICAgICAgaWYg
c3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKKyAgICAgICAgICAgIHJldHVybiBwYXRjaCgnYnVp
bHRpbnMuaW5wdXQnLCBuZXc9ZnVuY3Rpb24pCisKKyAgICAgICAgaW1wb3J0IF9fYnVpbHRpbl9f
CisgICAgICAgIHJldHVybiBwYXRjaC5vYmplY3QoX19idWlsdGluX18sICdyYXdfaW5wdXQnLCBu
ZXc9ZnVuY3Rpb24pCkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkv
d2Via2l0Y29yZXB5L3Rlc3RzL3Rlcm1pbmFsX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVy
bWluYWxfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy90ZXJtaW5hbF91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisjIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIG1vY2sgaW1wb3J0IHBhdGNoCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgbW9ja3MsIE91dHB1dENhcHR1cmUsIFRlcm1pbmFsCisK
KworY2xhc3MgVGVybWluYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rf
Y2hvb3NlX2Jhc2ljKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCd5
JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8p
OiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnbicpLCBPdXRwdXRD
YXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycs
IFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
YXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8pOiBcbicpCisKKyAg
ICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnaHVoJywgJ3knKSwgT3V0cHV0Q2FwdHVy
ZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVy
bWluYWwuY2hvb3NlKCdDb250aW51ZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1
cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAiQ29udGludWUgKFllcy9Obyk6IFxuJ2h1aCcgaXMgbm90
IGFuIG9wdGlvblxuQ29udGludWUgKFllcy9Obyk6IFxuIikKKworICAgIGRlZiB0ZXN0X2Nob29z
ZV9zdHJpY3Qoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ1llcycp
LCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGlu
dWUgKFllcy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCdO
bycpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBzdHJpY3Q9VHJ1ZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250
aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQo
J24nLCAnWWVzJyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBzdHJpY3Q9
VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVl
KCksICJDb250aW51ZSAoWWVzL05vKTogXG4nbicgaXMgbm90IGFuIG9wdGlvblxuQ29udGludWUg
KFllcy9Obyk6IFxuIikKKworICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCd5Jywg
J05vJyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIHN0cmljdD1UcnVlKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNv
bnRpbnVlIChZZXMvTm8pOiBcbid5JyBpcyBub3QgYW4gb3B0aW9uXG5Db250aW51ZSAoWWVzL05v
KTogXG4iKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX2RlZmF1bHQoc2VsZik6CisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ3knKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdD
b250aW51ZScsIGRlZmF1bHQ9J090aGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Fw
dHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAg
ICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJywgZGVmYXVsdD0nT3RoZXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8pOiBcbicpCisK
KyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnaHVoJyksIE91dHB1dENhcHR1cmUo
KSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ090aGVyJywgVGVy
bWluYWwuY2hvb3NlKCdDb250aW51ZScsIGRlZmF1bHQ9J090aGVyJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05v
KTogXG4nKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX3RyaXBsZShzZWxmKToKKyAgICAgICAgd2l0
aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0Nv
bnRpbnVlJywgb3B0aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8v
TWF5YmUpOiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnbicpLCBP
dXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBvcHRpb25zPSgnWWVzJywgJ05vJywg
J01heWJlJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2
YWx1ZSgpLCAnQ29udGludWUgKFllcy9Oby9NYXliZSk6IFxuJykKKworICAgICAgICB3aXRoIG1v
Y2tzLlRlcm1pbmFsLmlucHV0KCdtYXknKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTWF5YmUnLCBUZXJtaW5hbC5jaG9vc2UoJ0Nv
bnRpbnVlJywgb3B0aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8v
TWF5YmUpOiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnaHVoJyks
IE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAnTm8n
LCAnTWF5YmUnKSwgZGVmYXVsdD0nTm8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8vTWF5YmUpOiBcbicpCisK
KyAgICBkZWYgdGVzdF9jaG9vc2VfbnVtYmVyKHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRl
cm1pbmFsLmlucHV0KCcyJyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0JldGEnLCBUZXJtaW5hbC5jaG9vc2UoJ1BpY2snLCBvcHRp
b25zPSgnQWxwaGEnLCAnQmV0YScsICdDaGFybGllJywgJ0RlbHRhJyksIG51bWJlcmVkPVRydWUp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAn
UGljazpcbiAgICAxKSBBbHBoYVxuICAgIDIpIEJldGFcbiAgICAzKSBDaGFybGllXG4gICAgNCkg
RGVsdGFcbjogXG4nKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3VzZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3VzZXIucHkJKHJldmlzaW9uIDI4MDM5OCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS91c2VyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIGlt
cG9ydCBzeXMKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgd2ViYnJvd3NlcgogCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgVGVybWluYWwKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
cGxhdGZvcm1pbmZvIGltcG9ydCBQbGF0Zm9ybUluZm8KIApAQCAtNTAsMTEgKzUyLDYgQEAgZXhj
ZXB0IEltcG9ydEVycm9yOgogICAgICAgICAjIFRoZXJlIGlzIG5vIHJlYWRsaW5lIG1vZHVsZSBm
b3Igd2luMzIsIG5vdCBtdWNoIHRvIGRvIGV4Y2VwdCBjcnkuCiAgICAgICAgIF9sb2cud2Fybigi
VW5hYmxlIHRvIGltcG9ydCByZWFkbGluZS4iKQogCi1pZiBzeXMudmVyc2lvbl9pbmZvID4gKDMs
IDApOgotICAgIGlucHV0X2Z1bmMgPSBpbnB1dAotZWxzZToKLSAgICBpbnB1dF9mdW5jID0gcmF3
X2lucHV0Ci0KIAogY2xhc3MgVXNlcihvYmplY3QpOgogICAgIERFRkFVTFRfTk8gPSAnbicKQEAg
LTY3LDcgKzY0LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogCiAgICAgIyBGSVhNRTogVGhlc2Ug
YXJlIEBjbGFzc21ldGhvZHMgYmVjYXVzZSBidWd6aWxsYS5weSBkb2Vzbid0IGhhdmUgYSBUb29s
IG9iamVjdCAodGh1cyBubyBVc2VyIGluc3RhbmNlKS4KICAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToK
KyAgICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1UZXJtaW5h
bC5pbnB1dCk6CiAgICAgICAgIHJlc3BvbnNlID0gTm9uZQogICAgICAgICB3aGlsZSAocmVwZWF0
IGFuZCBub3QgcmVzcG9uc2UpOgogICAgICAgICAgICAgcmVwZWF0IC09IDEKQEAgLTc5LDcgKzc2
LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gY2xzLnByb21wdChtZXNz
YWdlLCByZXBlYXQ9cmVwZWF0LCByYXdfaW5wdXQ9Z2V0cGFzcy5nZXRwYXNzKQogCiAgICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93aXRoX211bHRpcGxlX2xpc3RzKGNscywgbGlzdF90
aXRsZSwgc3VidGl0bGVzLCBsaXN0cywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lu
cHV0PWlucHV0X2Z1bmMpOgorICAgIGRlZiBwcm9tcHRfd2l0aF9tdWx0aXBsZV9saXN0cyhjbHMs
IGxpc3RfdGl0bGUsIHN1YnRpdGxlcywgbGlzdHMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2Us
IHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIGl0ZW1faW5kZXggPSAwCiAgICAg
ICAgIGN1bXVsYXRlZF9saXN0ID0gW10KICAgICAgICAgcHJpbnQobGlzdF90aXRsZSkKQEAgLTEx
OSw3ICsxMTYsNyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGxpc3RfaXRlbXNbcmVzdWx0XQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93
aXRoX2xpc3QoY2xzLCBsaXN0X3RpdGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxl
PUZhbHNlLCByYXdfaW5wdXQ9aW5wdXRfZnVuYyk6CisgICAgZGVmIHByb21wdF93aXRoX2xpc3Qo
Y2xzLCBsaXN0X3RpdGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCBy
YXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBwcmludChsaXN0X3RpdGxlKQogICAg
ICAgICBpID0gMAogICAgICAgICBmb3IgaXRlbSBpbiBsaXN0X2l0ZW1zOgpAQCAtMTYxLDcgKzE1
OCw3IEBAIGNsYXNzIFVzZXIob2JqZWN0KToKICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAg
ICAgICAgICBwYXNzCiAKLSAgICBkZWYgY29uZmlybShzZWxmLCBtZXNzYWdlPU5vbmUsIGRlZmF1
bHQ9REVGQVVMVF9ZRVMsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgY29uZmlybShz
ZWxmLCBtZXNzYWdlPU5vbmUsIGRlZmF1bHQ9REVGQVVMVF9ZRVMsIHJhd19pbnB1dD1UZXJtaW5h
bC5pbnB1dCk6CiAgICAgICAgIGlmIG5vdCBtZXNzYWdlOgogICAgICAgICAgICAgbWVzc2FnZSA9
ICJDb250aW51ZT8iCiAgICAgICAgIGNob2ljZSA9IHsneSc6ICdZL24nLCAnbic6ICd5L04nfVtk
ZWZhdWx0XQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJf
bW9jay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vdXNlcl9tb2NrLnB5CShyZXZpc2lvbiAyODAzOTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyMCAr
MjksMTkgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiAKLV9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBUZXJtaW5hbAogCi1p
ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApOgotICAgIGlucHV0ID0gcmF3X2lucHV0CitfbG9n
ID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgTW9ja1VzZXIob2JqZWN0
KToKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHQoY2xzLCBtZXNzYWdlLCByZXBl
YXQ9MSwgcmF3X2lucHV0PWlucHV0KToKKyAgICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVw
ZWF0PTEsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIHJldHVybiAiTW9jayB1
c2VyIHJlc3BvbnNlIgogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93aXRoX2xp
c3QoY2xzLCBsaXN0X3RpdGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNl
LCByYXdfaW5wdXQ9aW5wdXQpOgorICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90
aXRsZSwgbGlzdF9pdGVtcywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRl
cm1pbmFsLmlucHV0KToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434873</attachid>
            <date>2021-08-03 17:20:04 -0700</date>
            <delta_ts>2021-08-03 17:33:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226024-20210803172003.patch</filename>
            <type>text/plain</type>
            <size>24728</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjgyNDY2OTFkNWUyNTYwYjY5NzgzYWU2NmZjZjRhNDI5
ZWZiZmRlZS4uZDkyMzU0ZjBkODM4YTBkZDc0MDhiMzMwODIyNmVhZjc0MjUzYmEyMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA4LTAzICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzgyNjE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKIDIwMjEtMDgtMDMgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRweV0gSGFuZGxlIGNhc2Ug
d2hlcmUgbm8gZXhpc3Rpbmcgc2ltdWxhdG9ycyBhcmUgZGVmaW5lZApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19p
bml0X18ucHkKaW5kZXggYjMxMDgyNTRkMzA1MmQ1ODY3NDJmZDk0NWNlYjkzN2I3MmQ1ZWQ1NS4u
NTVmMzA1NzIwNDc3OGVhMmM2MWU0NmE4OWQ3OGJhYmYxOWVmYmY3ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5
L19faW5pdF9fLnB5CkBAIC0zNSw2ICszNSw3IEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQg
aW1wb3J0IFRpbWVvdXQKIGZyb20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0
IFRpbWVvdXRFeHBpcmVkLCBDb21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5
Lm91dHB1dF9jYXB0dXJlIGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRw
dXREdXBsaWNhdGUKIGZyb20gd2Via2l0Y29yZXB5LnRhc2tfcG9vbCBpbXBvcnQgVGFza1Bvb2wK
K2Zyb20gd2Via2l0Y29yZXB5LnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbAogZnJvbSB3ZWJraXRj
b3JlcHkuY3JlZGVudGlhbHMgaW1wb3J0IGNyZWRlbnRpYWxzCiBmcm9tIHdlYmtpdGNvcmVweS5t
ZWFzdXJlX3RpbWUgaW1wb3J0IE1lYXN1cmVUaW1lCiBmcm9tIHdlYmtpdGNvcmVweS5uZXN0ZWRf
ZnV6enlfZGljdCBpbXBvcnQgTmVzdGVkRnV6enlEaWN0CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxzLnB5IGIv
VG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9jcmVkZW50
aWFscy5weQppbmRleCAxM2FhNDYxOGJjNzdjOGEyZjFmM2JkZWQ5NjRmN2ZhNjA5OTQwYjVlLi5l
Y2IzOWRlYmY2OGM5NWU3M2U5YzhmOGJlZDA1YmE4N2Y5MjNlOGVkIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L2NyZWRlbnRpYWxz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvY3JlZGVudGlhbHMucHkKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0IGdldHBhc3MKIGltcG9y
dCBzeXMKIAogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBDYWxsZWRQcm9jZXNzRXJyb3IKLWZyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZSwgVGVybWluYWwKIAogX2NhY2hlID0gZGljdCgpCiAKQEAgLTY0LDcg
KzY0LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVxdWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBw
cm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3JkJykKICAgICAgICAgICAgICAgICByYWlzZSBP
U0Vycm9yKCdObyB0dHkgdG8gcHJvbXB0IHVzZXIgZm9yIHVzZXJuYW1lJykKICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIHRvIHVzZSB7fVxuIi5m
b3JtYXQocHJvbXB0IG9yIG5hbWUpKQogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnVXNl
cm5hbWU6ICcpCi0gICAgICAgICAgICB1c2VybmFtZSA9IChpbnB1dCBpZiBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApIGVsc2UgcmF3X2lucHV0KSgpCisgICAgICAgICAgICB1c2VybmFtZSA9IFRl
cm1pbmFsLmlucHV0KCkKICAgICAgICAgICAgIHVzZXJuYW1lX3Byb21wdGVkID0gVHJ1ZQogCiAg
ICAgaWYgbm90IGtleToKQEAgLTg1LDcgKzg1LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVx
dWlyZWQ9VHJ1ZSwgbmFtZT1Ob25lLCBwcm9tcHQ9Tm9uZSwga2V5X25hbWU9J3Bhc3N3b3JkJykK
IAogICAgIGlmIGtleXJpbmcgYW5kICh1c2VybmFtZV9wcm9tcHRlZCBvciBrZXlfcHJvbXB0ZWQp
OgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdTdG9yZSB1c2VybmFtZSBhbmQge30gaW4gc3lz
dGVtIGtleXJpbmcgZm9yIHt9PyAoWS9OKTogJy5mb3JtYXQoa2V5X25hbWUsIHVybCkpCi0gICAg
ICAgIHJlc3BvbnNlID0gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSBy
YXdfaW5wdXQpKCkKKyAgICAgICAgcmVzcG9uc2UgPSBUZXJtaW5hbC5pbnB1dCgpCiAgICAgICAg
IGlmIHJlc3BvbnNlLmxvd2VyKCkgaW4gWyd5JywgJ3llcycsICdvayddOgogICAgICAgICAgICAg
c3lzLnN0ZGVyci53cml0ZSgnU3RvcmluZyBjcmVkZW50aWFscy4uLlxuJykKICAgICAgICAgICAg
IGtleXJpbmcuc2V0X3Bhc3N3b3JkKHVybCwgJ3VzZXJuYW1lJywgdXNlcm5hbWUpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21v
Y2tzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dl
YmtpdGNvcmVweS9tb2Nrcy9fX2luaXRfXy5weQppbmRleCBhMDRhMjYwYTM5ZTBlMDU5MTlmNzUz
MzExNGY4NmM0MTNiNjRiYzJmLi4wZmQwZGZhZWI4N2I2ODgxMjFhNzZjZjVmZDJhODA1MDBkYjFh
ODkwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkKQEAgLTI1LDMgKzI1
LDQgQEAgZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MudGltZV8gaW1wb3J0IFRpbWUKIGZyb20gd2Vi
a2l0Y29yZXB5Lm1vY2tzLnN1YnByb2Nlc3MgaW1wb3J0IFByb2Nlc3NDb21wbGV0aW9uLCBTdWJw
cm9jZXNzCiAKIGZyb20gd2Via2l0Y29yZXB5Lm1vY2tzLnJlcXVlc3RzXyBpbXBvcnQgUmVzcG9u
c2UsIFJlcXVlc3RzCitmcm9tIHdlYmtpdGNvcmVweS5tb2Nrcy50ZXJtaW5hbCBpbXBvcnQgVGVy
bWluYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93
ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93
ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL3Rlcm1pbmFsLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcx
YjMwOTcxZGFkYWRkMmQzNTQxMjFlZmQxZmRkZTk3MmY4MjIyM2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tz
L3Rlcm1pbmFsLnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IHN5cworCisKK2NsYXNzIFRlcm1pbmFsKG9iamVjdCk6CisgICAg
aW5kZXggPSAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaW5wdXQoY2xzLCAqYXJncyk6
CisgICAgICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKKworICAgICAgICBjbHMuaW5kZXggPSAw
CisKKyAgICAgICAgZGVmIGZ1bmN0aW9uKG91dHB1dCk6CisgICAgICAgICAgICBwcmludChvdXRw
dXQpCisgICAgICAgICAgICBjbHMuaW5kZXggKz0gMQorICAgICAgICAgICAgcmV0dXJuIGFyZ3Nb
Y2xzLmluZGV4IC0gMV0KKworICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgor
ICAgICAgICAgICAgcmV0dXJuIHBhdGNoKCdidWlsdGlucy5pbnB1dCcsIG5ldz1mdW5jdGlvbikK
KworICAgICAgICBpbXBvcnQgX19idWlsdGluX18KKyAgICAgICAgcmV0dXJuIHBhdGNoLm9iamVj
dChfX2J1aWx0aW5fXywgJ3Jhd19pbnB1dCcsIG5ldz1mdW5jdGlvbikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwu
cHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rl
cm1pbmFsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwY2Y0ZGRjMDA0YzE1OTlmNzY3MDk3ZTY1ZDNkZGQ2MzNk
MjlmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRj
b3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisj
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworCisKK2NsYXNzIFRlcm1p
bmFsKG9iamVjdCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGlucHV0KGNscywgKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIChpbnB1dCBpZiBzeXMudmVyc2lvbl9pbmZvID4g
KDMsIDApIGVsc2UgcmF3X2lucHV0KSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgY2hvb3NlKGNscywgcHJvbXB0LCBvcHRpb25zPU5vbmUsIGRlZmF1bHQ9Tm9u
ZSwgc3RyaWN0PUZhbHNlLCBudW1iZXJlZD1GYWxzZSk6CisgICAgICAgIG9wdGlvbnMgPSBvcHRp
b25zIG9yICgnWWVzJywgJ05vJykKKworICAgICAgICByZXNwb25zZSA9IE5vbmUKKyAgICAgICAg
d2hpbGUgcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIG51bWJlcmVkOgorICAgICAg
ICAgICAgICAgIG51bWJlcmVkX29wdGlvbnMgPSBbJ3t9KSB7fScuZm9ybWF0KGkgKyAxLCBvcHRp
b25zW2ldKSBmb3IgaSBpbiByYW5nZShsZW4ob3B0aW9ucykpXQorICAgICAgICAgICAgICAgIHJl
c3BvbnNlID0gY2xzLmlucHV0KCd7fTpcbiAgICB7fVxuOiAnLmZvcm1hdChwcm9tcHQsICdcbiAg
ICAnLmpvaW4obnVtYmVyZWRfb3B0aW9ucykpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IGNscy5pbnB1dCgne30gKHt9KTogJy5mb3JtYXQocHJvbXB0LCAn
Lycuam9pbihvcHRpb25zKSkpCisKKyAgICAgICAgICAgIGlmIG51bWJlcmVkIGFuZCByZXNwb25z
ZS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQocmVzcG9uc2UpIC0gMQor
ICAgICAgICAgICAgICAgIGlmIGluZGV4ID49IDAgYW5kIGluZGV4IDwgbGVuKG9wdGlvbnMpOgor
ICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IG9wdGlvbnNbaW5kZXhdCisKKyAgICAgICAg
ICAgIGlmIG5vdCBzdHJpY3Q6CisgICAgICAgICAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25z
OgorICAgICAgICAgICAgICAgICAgICBpZiBvcHRpb24ubG93ZXIoKS5zdGFydHN3aXRoKHJlc3Bv
bnNlLmxvd2VyKCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBvcHRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIGlmIHJlc3BvbnNl
IG5vdCBpbiBvcHRpb25zOgorICAgICAgICAgICAgICAgIGlmIG5vdCBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBwcmludCgiJ3t9JyBpcyBub3QgYW4gb3B0aW9uIi5mb3JtYXQocmVzcG9u
c2UpKQorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZGVmYXVsdAorCisgICAgICAgIHJldHVy
biByZXNwb25zZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29y
ZXB5L3dlYmtpdGNvcmVweS90ZXN0cy90ZXJtaW5hbF91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5p
dHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiYzg2NmYxOTRhNzRkN2JjOTdjNTJmZTc1OGQ2ODNiOWFm
NDJmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNv
cmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw5
MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1v
Y2tzLCBPdXRwdXRDYXB0dXJlLCBUZXJtaW5hbAorCisKK2NsYXNzIFRlcm1pbmFsVGVzdHModW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Nob29zZV9iYXNpYyhzZWxmKToKKyAgICAg
ICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2Fw
dHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9j
a3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVl
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwu
aW5wdXQoJ2h1aCcsICd5JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNv
bnRpbnVlIChZZXMvTm8pOiBcbidodWgnIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMv
Tm8pOiBcbiIpCisKKyAgICBkZWYgdGVzdF9jaG9vc2Vfc3RyaWN0KHNlbGYpOgorICAgICAgICB3
aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCdZZXMnKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1
cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3Nl
KCdDb250aW51ZScsIHN0cmljdD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8pOiBcbicpCisKKyAgICAg
ICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnTm8nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9v
c2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNh
cHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAg
ICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCduJywgJ1llcycpLCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJt
aW5hbC5jaG9vc2UoJ0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAiQ29udGludWUgKFllcy9Obyk6IFxu
J24nIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMvTm8pOiBcbiIpCisKKyAgICAgICAg
d2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgneScsICdObycpLCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNo
b29zZSgnQ29udGludWUnLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICJDb250aW51ZSAoWWVzL05vKTogXG4neScgaXMg
bm90IGFuIG9wdGlvblxuQ29udGludWUgKFllcy9Obyk6IFxuIikKKworICAgIGRlZiB0ZXN0X2No
b29zZV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCd5
JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBkZWZhdWx0PSdPdGhlcicp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAn
Q29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlu
cHV0KCduJyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIGRlZmF1bHQ9J090
aGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVl
KCksICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWlu
YWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdPdGhlcicsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBk
ZWZhdWx0PSdPdGhlcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgIGRlZiB0ZXN0X2No
b29zZV90cmlwbGUoc2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ3kn
KSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAn
Tm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVk
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0Nv
bnRpbnVlJywgb3B0aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8v
TWF5YmUpOiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnbWF5Jyks
IE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ01heWJlJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAn
Tm8nLCAnTWF5YmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdp
dGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgn
Q29udGludWUnLCBvcHRpb25zPSgnWWVzJywgJ05vJywgJ01heWJlJyksIGRlZmF1bHQ9J05vJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdD
b250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX251bWJl
cihzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnMicpLCBPdXRwdXRD
YXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdCZXRh
JywgVGVybWluYWwuY2hvb3NlKCdQaWNrJywgb3B0aW9ucz0oJ0FscGhhJywgJ0JldGEnLCAnQ2hh
cmxpZScsICdEZWx0YScpLCBudW1iZXJlZD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ1BpY2s6XG4gICAgMSkgQWxwaGFcbiAgICAy
KSBCZXRhXG4gICAgMykgQ2hhcmxpZVxuICAgIDQpIERlbHRhXG46IFxuJykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0v
X19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRzY21weS93ZWJraXRz
Y21weS9wcm9ncmFtL19faW5pdF9fLnB5CmluZGV4IDJmOWUwNDc3OTk2NGEwYjIzMzM4MmQwYzY2
NTU3OWY1NWIwY2ZjOTcuLjE1NzhkZDk2ZTgxNWI2NjMzNTEyYzJhYjYwOWE3MzViNGNhZjhlMGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNj
bXB5L3Byb2dyYW0vX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9fX2luaXRfXy5weQpAQCAtMzMsNiArMzMsNyBA
QCBmcm9tIC5maW5kIGltcG9ydCBGaW5kLCBJbmZvCiBmcm9tIC5sb2cgaW1wb3J0IExvZwogZnJv
bSAucHVsbCBpbXBvcnQgUHVsbAogZnJvbSAuc2V0dXBfZ2l0X3N2biBpbXBvcnQgU2V0dXBHaXRT
dm4KK2Zyb20gLnNldHVwIGltcG9ydCBTZXR1cAogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
YXJndW1lbnRzLCBsb2cgYXMgd2Via2l0Y29yZXB5X2xvZwogZnJvbSB3ZWJraXRzY21weSBpbXBv
cnQgbG9jYWwsIGxvZywgcmVtb3RlCkBAIC02Myw3ICs2NCw3IEBAIGRlZiBtYWluKGFyZ3M9Tm9u
ZSwgcGF0aD1Ob25lLCBsb2dnZXJzPU5vbmUsIGNvbnRyaWJ1dG9ycz1Ob25lLCBpZGVudGlmaWVy
X3RlbXBsCiAKICAgICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGhlbHA9J3N1
Yi1jb21tYW5kIGhlbHAnKQogCi0gICAgcHJvZ3JhbXMgPSBbRmluZCwgSW5mbywgQ2hlY2tvdXQs
IENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW4sIExvZywgQmxhbWVdCisgICAgcHJvZ3JhbXMgPSBb
RmluZCwgSW5mbywgQ2hlY2tvdXQsIENhbm9uaWNhbGl6ZSwgUHVsbCwgQ2xlYW4sIExvZywgQmxh
bWUsIFNldHVwXQogICAgIGlmIHN1YnZlcnNpb246CiAgICAgICAgIHByb2dyYW1zLmFwcGVuZChT
ZXR1cEdpdFN2bikKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0
c2NtcHkvd2Via2l0c2NtcHkvcHJvZ3JhbS9zZXR1cC5weSBiL1Rvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dyYW0vc2V0dXAucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTQ1MmU4NjE3NmZlNWZiODgyMzA4ZmQxNWQ0MzcxZjUxN2U5ZTAyMAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdHNjbXB5L3dlYmtpdHNjbXB5L3Byb2dy
YW0vc2V0dXAucHkKQEAgLTAsMCArMSwxMTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2ltcG9ydCBqc29uCitpbXBvcnQgc3lzCisKK2Zyb20gLmNvbW1hbmQgaW1w
b3J0IENvbW1hbmQKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBhcmd1bWVudHMsIHJ1biwgT3V0
cHV0Q2FwdHVyZSwgVGVybWluYWwKK2Zyb20gd2Via2l0c2NtcHkgaW1wb3J0IGxvZywgbG9jYWws
IHJlbW90ZQorCisKK2NsYXNzIFNldHVwKENvbW1hbmQpOgorICAgIG5hbWUgPSAnc2V0dXAnCisg
ICAgaGVscCA9ICdDb25maWd1cmUgbG9jYWwgc2V0dGluZ3MgZm9yIHRoZSBjdXJyZW50IHJlcG9z
aXRvcnknCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2l0aHViKGNscywgYXJncywgcmVw
b3NpdG9yeSwgKiprd2FyZ3MpOgorICAgICAgICBsb2cud2FybmluZygnU2F2aW5nIEdpdEh1YiBj
cmVkZW50aWFscyBpbiBzeXN0ZW0gY3JlZGVudGlhbCBzdG9yZS4uLicpCisgICAgICAgIHJlcG9z
aXRvcnkuY3JlZGVudGlhbHMocmVxdWlyZWQ9VHJ1ZSkKKyAgICAgICAgbG9nLndhcm5pbmcoJ0dp
dEh1YiBjcmVkZW50aWFscyBzYXZlZCB2aWEgS2V5cmluZyEnKQorICAgICAgICByZXR1cm4gMAor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdpdChjbHMsIGFyZ3MsIHJlcG9zaXRvcnksICoq
a3dhcmdzKToKKyAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IGxvY2FsLkdpdC5jb25maWcoKQorICAg
ICAgICByZXN1bHQgPSAwCisKKyAgICAgICAgZW1haWwgPSBnbG9iYWxfY29uZmlnLmdldCgndXNl
ci5lbWFpbCcpCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGdpdCB1c2VyIGVtYWlsIGZv
ciB7fS4uLicuZm9ybWF0KHJlcG9zaXRvcnkucm9vdF9wYXRoKSkKKyAgICAgICAgaWYgbm90IGVt
YWlsIG9yIGFyZ3MuZGVmYXVsdHMgaXMgRmFsc2Ugb3IgKG5vdCBhcmdzLmRlZmF1bHRzIGFuZCBU
ZXJtaW5hbC5jaG9vc2UoCisgICAgICAgICAgICAiU2V0ICd7fScgYXMgdGhlIGdpdCB1c2VyIGVt
YWlsIi5mb3JtYXQoZW1haWwpLAorICAgICAgICAgICAgZGVmYXVsdD0nWWVzJywKKyAgICAgICAg
KSA9PSAnTm8nKToKKyAgICAgICAgICAgIGVtYWlsID0gVGVybWluYWwuaW5wdXQoJ0dpdCB1c2Vy
IGVtYWlsOiAnKQorCisgICAgICAgIGlmIHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhl
Y3V0YWJsZSgpLCAnY29uZmlnJywgJ3VzZXIuZW1haWwnLCBlbWFpbF0sIGNhcHR1cmVfb3V0cHV0
PVRydWUsIGN3ZD1yZXBvc2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlOgor
ICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIHNldCB0aGUgZ2l0IHVzZXIg
ZW1haWwgdG8ge30nLmZvcm1hdChlbWFpbCkpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoIlNldCBnaXQgdXNlciBlbWFpbCB0
byAne30nIi5mb3JtYXQoZW1haWwpKQorCisgICAgICAgIG5hbWUgPSByZXBvc2l0b3J5LmNvbnRy
aWJ1dG9ycy5nZXQoZW1haWwpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBuYW1lID0g
bmFtZS5uYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lID0gZ2xvYmFsX2NvbmZp
Zy5nZXQoJ3VzZXIubmFtZScpCisgICAgICAgIGxvZy53YXJuaW5nKCdTZXR0aW5nIGdpdCB1c2Vy
IG5hbWUgZm9yIHt9Li4uJy5mb3JtYXQocmVwb3NpdG9yeS5yb290X3BhdGgpKQorICAgICAgICBp
ZiBub3QgbmFtZSBvciBhcmdzLmRlZmF1bHRzIGlzIEZhbHNlIG9yIChub3QgYXJncy5kZWZhdWx0
cyBhbmQgVGVybWluYWwuY2hvb3NlKAorICAgICAgICAgICAgIlNldCAne30nIGFzIHRoZSBnaXQg
dXNlciBuYW1lIi5mb3JtYXQobmFtZSksCisgICAgICAgICAgICBkZWZhdWx0PSdZZXMnLAorICAg
ICAgICApID09ICdObycpOgorICAgICAgICAgICAgbmFtZSA9IFRlcm1pbmFsLmlucHV0KCdHaXQg
dXNlciBuYW1lOiAnKQorICAgICAgICBpZiBydW4oCisgICAgICAgICAgICBbbG9jYWwuR2l0LmV4
ZWN1dGFibGUoKSwgJ2NvbmZpZycsICd1c2VyLm5hbWUnLCBuYW1lXSwgY2FwdHVyZV9vdXRwdXQ9
VHJ1ZSwgY3dkPXJlcG9zaXRvcnkucm9vdF9wYXRoLAorICAgICAgICApLnJldHVybmNvZGU6Cisg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdGYWlsZWQgdG8gc2V0IHRoZSBnaXQgdXNlciBu
YW1lIHRvIHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByZXN1bHQgKz0gMQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoIlNldCBnaXQgdXNlciBuYW1lIHRvICd7
fSciLmZvcm1hdChuYW1lKSkKKworICAgICAgICBsb2cud2FybmluZygnVXNpbmcge30gbWVyZ2Ug
c3RyYXRlZ3knLmZvcm1hdCgnbWVyZ2UgY29tbWl0cyBhcyBhJyBpZiBhcmdzLm1lcmdlIGVsc2Ug
J2EgcmViYXNlJykpCisgICAgICAgIGlmIHJ1bigKKyAgICAgICAgICAgIFtsb2NhbC5HaXQuZXhl
Y3V0YWJsZSgpLCAnY29uZmlnJywgJ3B1bGwucmViYXNlJywgJ2ZhbHNlJyBpZiBhcmdzLm1lcmdl
IGVsc2UgJ3RydWUnXSwKKyAgICAgICAgICAgIGNhcHR1cmVfb3V0cHV0PVRydWUsIGN3ZD1yZXBv
c2l0b3J5LnJvb3RfcGF0aCwKKyAgICAgICAgKS5yZXR1cm5jb2RlOgorICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgnRmFpbGVkIHRvIHVzZSB7fSBhcyB0aGUgbWVyZ2Ugc3RyYXRlZ3knLmZv
cm1hdCgnbWVyZ2UgY29tbWl0cycgaWYgYXJncy5tZXJnZSBlbHNlICdyZWJhc2UnKSkKKyAgICAg
ICAgICAgIHJlc3VsdCArPSAxCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBwYXJzZXIoY2xzLCBwYXJzZXIsIGxvZ2dlcnM9Tm9uZSk6CisgICAgICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1kZWZhdWx0cycsICctLW5vLWRl
ZmF1bHRzJywgYWN0aW9uPWFyZ3VtZW50cy5Ob0FjdGlvbiwgZGVmYXVsdD1Ob25lLAorICAgICAg
ICAgICAgaGVscD0nRG8gbm90IHByb21wdCB0aGUgdXNlciBmb3IgZGVmYXVsdHMsIGFsd2F5cyB1
c2UgKG9yIGRvIG5vdCB1c2UpIHRoZW0nLAorICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICAgICAnLS1tZXJnZScsICctLW5vLW1lcmdlJywgYWN0aW9uPWFy
Z3VtZW50cy5Ob0FjdGlvbiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9J1VzZSBh
IG1lcmdlLWNvbW1pdCB3b3JrZmxvdyBpbnN0ZWFkIG9mIGEgcmViYXNlIHdvcmtmbG93JywKKyAg
ICAgICAgKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1haW4oY2xzLCBhcmdzLCByZXBv
c2l0b3J5LCAqKmt3YXJncyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgbG9j
YWwuR2l0KToKKyAgICAgICAgICAgIHJldHVybiBjbHMuZ2l0KGFyZ3MsIHJlcG9zaXRvcnksICoq
a3dhcmdzKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgcmVtb3RlLkdpdEh1
Yik6CisgICAgICAgICAgICByZXR1cm4gY2xzLmdpdGh1YihhcmdzLCByZXBvc2l0b3J5LCAqKmt3
YXJncykKKworICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdObyBzZXR1cCByZXF1aXJlZCBmb3Ig
e31cbicuZm9ybWF0KAorICAgICAgICAgICAgZ2V0YXR0cihyZXBvc2l0b3J5LCAncm9vdF9wYXRo
JywgZ2V0YXR0cihyZXBvc2l0b3J5LCAndXJsJywgJz8nKSksCisgICAgICAgICkpCisgICAgICAg
IHJldHVybiAxCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vdXNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5
CmluZGV4IDY1NDA4NzI5MmY0NDFjYmE4MTQxMmVkYjI5MjY3YWQyMTY5YTIzNmQuLjA4NzZiOWE3
Zjk4OGNiMTBhMTQxYjEzODFiZjg5OWUyNzRhZTQzMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5CkBAIC0zNiw2ICszNiw4IEBAIGltcG9ydCBzeXMK
IGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgd2ViYnJvd3NlcgogCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgVGVybWluYWwKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2
ZSBpbXBvcnQgRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGxhdGZvcm1p
bmZvIGltcG9ydCBQbGF0Zm9ybUluZm8KIApAQCAtNTAsMTEgKzUyLDYgQEAgZXhjZXB0IEltcG9y
dEVycm9yOgogICAgICAgICAjIFRoZXJlIGlzIG5vIHJlYWRsaW5lIG1vZHVsZSBmb3Igd2luMzIs
IG5vdCBtdWNoIHRvIGRvIGV4Y2VwdCBjcnkuCiAgICAgICAgIF9sb2cud2FybigiVW5hYmxlIHRv
IGltcG9ydCByZWFkbGluZS4iKQogCi1pZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgotICAg
IGlucHV0X2Z1bmMgPSBpbnB1dAotZWxzZToKLSAgICBpbnB1dF9mdW5jID0gcmF3X2lucHV0Ci0K
IAogY2xhc3MgVXNlcihvYmplY3QpOgogICAgIERFRkFVTFRfTk8gPSAnbicKQEAgLTY3LDcgKzY0
LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogCiAgICAgIyBGSVhNRTogVGhlc2UgYXJlIEBjbGFz
c21ldGhvZHMgYmVjYXVzZSBidWd6aWxsYS5weSBkb2Vzbid0IGhhdmUgYSBUb29sIG9iamVjdCAo
dGh1cyBubyBVc2VyIGluc3RhbmNlKS4KICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcHJvbXB0
KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYg
cHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6
CiAgICAgICAgIHJlc3BvbnNlID0gTm9uZQogICAgICAgICB3aGlsZSAocmVwZWF0IGFuZCBub3Qg
cmVzcG9uc2UpOgogICAgICAgICAgICAgcmVwZWF0IC09IDEKQEAgLTc5LDcgKzc2LDcgQEAgY2xh
c3MgVXNlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gY2xzLnByb21wdChtZXNzYWdlLCByZXBl
YXQ9cmVwZWF0LCByYXdfaW5wdXQ9Z2V0cGFzcy5nZXRwYXNzKQogCiAgICAgQGNsYXNzbWV0aG9k
Ci0gICAgZGVmIHByb21wdF93aXRoX211bHRpcGxlX2xpc3RzKGNscywgbGlzdF90aXRsZSwgc3Vi
dGl0bGVzLCBsaXN0cywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0
X2Z1bmMpOgorICAgIGRlZiBwcm9tcHRfd2l0aF9tdWx0aXBsZV9saXN0cyhjbHMsIGxpc3RfdGl0
bGUsIHN1YnRpdGxlcywgbGlzdHMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFsc2UsIHJhd19pbnB1
dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIGl0ZW1faW5kZXggPSAwCiAgICAgICAgIGN1bXVs
YXRlZF9saXN0ID0gW10KICAgICAgICAgcHJpbnQobGlzdF90aXRsZSkKQEAgLTExOSw3ICsxMTYs
NyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RfaXRl
bXNbcmVzdWx0XQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93aXRoX2xpc3Qo
Y2xzLCBsaXN0X3RpdGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCBy
YXdfaW5wdXQ9aW5wdXRfZnVuYyk6CisgICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBsaXN0
X3RpdGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9
VGVybWluYWwuaW5wdXQpOgogICAgICAgICBwcmludChsaXN0X3RpdGxlKQogICAgICAgICBpID0g
MAogICAgICAgICBmb3IgaXRlbSBpbiBsaXN0X2l0ZW1zOgpAQCAtMTYxLDcgKzE1OCw3IEBAIGNs
YXNzIFVzZXIob2JqZWN0KToKICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICBw
YXNzCiAKLSAgICBkZWYgY29uZmlybShzZWxmLCBtZXNzYWdlPU5vbmUsIGRlZmF1bHQ9REVGQVVM
VF9ZRVMsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgY29uZmlybShzZWxmLCBtZXNz
YWdlPU5vbmUsIGRlZmF1bHQ9REVGQVVMVF9ZRVMsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6
CiAgICAgICAgIGlmIG5vdCBtZXNzYWdlOgogICAgICAgICAgICAgbWVzc2FnZSA9ICJDb250aW51
ZT8iCiAgICAgICAgIGNob2ljZSA9IHsneSc6ICdZL24nLCAnbic6ICd5L04nfVtkZWZhdWx0XQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9j
ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX21vY2sucHkK
aW5kZXggMzUzYzA5YWVlZWUyMmE2N2YxZTM3ZjFiOGYwNTRkZTJiZDkzMDYwOC4uOTYyY2Y4NjJh
ZjY2NmE3OWNkNjMxM2MxMTBlNzg3OTRkMDk3MmRjZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlcl9tb2NrLnB5CkBAIC0yOSwyMCArMjksMTkgQEAK
IGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc3lzCiAKLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBUZXJtaW5hbAogCi1pZiBzeXMudmVy
c2lvbl9pbmZvIDwgKDMsIDApOgotICAgIGlucHV0ID0gcmF3X2lucHV0CitfbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgTW9ja1VzZXIob2JqZWN0KToKIAogICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHQoY2xzLCBtZXNzYWdlLCByZXBlYXQ9MSwgcmF3
X2lucHV0PWlucHV0KToKKyAgICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJh
d19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIHJldHVybiAiTW9jayB1c2VyIHJlc3Bv
bnNlIgogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdF93aXRoX2xpc3QoY2xzLCBs
aXN0X3RpdGxlLCBsaXN0X2l0ZW1zLCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5w
dXQ9aW5wdXQpOgorICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlz
dF9pdGVtcywgY2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRlcm1pbmFsLmlu
cHV0KToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434911</attachid>
            <date>2021-08-04 10:26:23 -0700</date>
            <delta_ts>2021-08-04 10:59:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-226024-20210804102622.patch</filename>
            <type>text/plain</type>
            <size>19854</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4MDYzNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQwIEBACisyMDIxLTA4LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0Y29yZXB5XSBBZGQgc2hhcmVkIHRlcm1pbmFsIGlucHV0IGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAy
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzgyNjE2NDU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGV3ZWkgWmh1LgorCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3NldHVwLnB5OiBCdW1wIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9saWJyYXJpZXMvd2Vi
a2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weTogRXhwb3J0IFRlcm1pbmFsIG9iamVj
dCwgYnVtcCB2ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVw
eS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMucHk6CisgICAgICAgIChjcmVkZW50aWFscyk6IFVz
ZSBUZXJtaW5hbC5pbnB1dC4KKyAgICAgICAgKiBTY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3Jl
cHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHk6IEFkZGVk
LgorICAgICAgICAoVGVybWluYWwpOgorICAgICAgICAoVGVybWluYWwuaW5wdXQpOiBNb2NraW5n
IGlucHV0IGFuZCByYXdfaW5wdXQgcmVxdWlyZXMgc28gc3BlY2lhbGl6ZWQga25vd2xlZGdlLAor
ICAgICAgICBzbyB3ZSBzaG91bGQgZ2VuZXJhbGl6ZSBpdC4KKyAgICAgICAgKiBTY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L3Rlcm1pbmFsLnB5OiBBZGRlZC4KKyAg
ICAgICAgKFRlcm1pbmFsKToKKyAgICAgICAgKFRlcm1pbmFsLmlucHV0KTogUHl0aG9uIDIvMyBj
b21wYXRpYmxlIGlucHV0IGZ1bmN0aW9uLgorICAgICAgICAoVGVybWluYWwuY2hvb3NlKTogR2Vu
ZXJpYyBtdWx0aXBsZS1jaG9pY2UgaW5wdXQgcHJvbXB0LgorICAgICAgICAqIFNjcmlwdHMvbGli
cmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVybWluYWxfdW5pdHRlc3Qu
cHk6IEFkZGVkLgorICAgICAgICAoVGVybWluYWxUZXN0cyk6CisgICAgICAgIChUZXJtaW5hbFRl
c3RzLnRlc3RfY2hvb3NlX2Jhc2ljKToKKyAgICAgICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9v
c2Vfc3RyaWN0KToKKyAgICAgICAgKFRlcm1pbmFsVGVzdHMudGVzdF9jaG9vc2VfZGVmYXVsdCk6
CisgICAgICAgIChUZXJtaW5hbFRlc3RzLnRlc3RfY2hvb3NlX3RyaXBsZSk6CisgICAgICAgIChU
ZXJtaW5hbFRlc3RzLnRlc3RfY2hvb3NlX251bWJlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3VzZXIucHk6CisgICAgICAgIChVc2VyLnByb21wdCk6IFVzZSBU
ZXJtaW5hbC5pbnB1dC4KKyAgICAgICAgKFVzZXIucHJvbXB0X3dpdGhfbXVsdGlwbGVfbGlzdHMp
OiBEaXR0by4KKyAgICAgICAgKFVzZXIucHJvbXB0X3dpdGhfbGlzdCk6IERpdHRvLgorICAgICAg
ICAoVXNlci5jb25maXJtKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3VzZXJfbW9jay5weToKKyAgICAgICAgKE1vY2tVc2VyLnByb21wdCk6IFVzZSBU
ZXJtaW5hbC5pbnB1dC4KKyAgICAgICAgKE1vY2tVc2VyLnByb21wdF93aXRoX2xpc3QpOiBEaXR0
by4KKwogMjAyMS0wOC0wNCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGNvbnRyaWJ1dG9yIHRvIGFjY2Vzc2liaWxpdHkgd2F0Y2hsaXN0LgpJ
bmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3NldHVwLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS9zZXR1cC5weQko
cmV2aXNpb24gMjgwNjM2KQorKysgVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5
L3NldHVwLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGRlZiByZWFkbWUoKToK
IAogc2V0dXAoCiAgICAgbmFtZT0nd2Via2l0Y29yZXB5JywKLSAgICB2ZXJzaW9uPScwLjcuNCcs
CisgICAgdmVyc2lvbj0nMC44LjAnLAogICAgIGRlc2NyaXB0aW9uPSdMaWJyYXJ5IGNvbnRhaW5p
bmcgdmFyaW91cyBQeXRob24gc3VwcG9ydCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuJywKICAgICBs
b25nX2Rlc2NyaXB0aW9uPXJlYWRtZSgpLAogICAgIGNsYXNzaWZpZXJzPVsKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvX19pbml0X18ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtp
dGNvcmVweS9fX2luaXRfXy5weQkocmV2aXNpb24gMjgwNjM2KQorKysgVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9fX2luaXRfXy5weQkod29ya2luZyBj
b3B5KQpAQCAtMzUsMTEgKzM1LDEyIEBAIGZyb20gd2Via2l0Y29yZXB5LnRpbWVvdXQgaW1wb3J0
IFRpbWVvdXQKIGZyb20gd2Via2l0Y29yZXB5LnN1YnByb2Nlc3NfdXRpbHMgaW1wb3J0IFRpbWVv
dXRFeHBpcmVkLCBDb21wbGV0ZWRQcm9jZXNzLCBydW4KIGZyb20gd2Via2l0Y29yZXB5Lm91dHB1
dF9jYXB0dXJlIGltcG9ydCBMb2dnZXJDYXB0dXJlLCBPdXRwdXRDYXB0dXJlLCBPdXRwdXREdXBs
aWNhdGUKIGZyb20gd2Via2l0Y29yZXB5LnRhc2tfcG9vbCBpbXBvcnQgVGFza1Bvb2wKK2Zyb20g
d2Via2l0Y29yZXB5LnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbAogZnJvbSB3ZWJraXRjb3JlcHku
Y3JlZGVudGlhbHMgaW1wb3J0IGNyZWRlbnRpYWxzCiBmcm9tIHdlYmtpdGNvcmVweS5tZWFzdXJl
X3RpbWUgaW1wb3J0IE1lYXN1cmVUaW1lCiBmcm9tIHdlYmtpdGNvcmVweS5uZXN0ZWRfZnV6enlf
ZGljdCBpbXBvcnQgTmVzdGVkRnV6enlEaWN0CiAKLXZlcnNpb24gPSBWZXJzaW9uKDAsIDcsIDQp
Cit2ZXJzaW9uID0gVmVyc2lvbigwLCA4LCAwKQogCiBmcm9tIHdlYmtpdGNvcmVweS5hdXRvaW5z
dGFsbCBpbXBvcnQgUGFja2FnZSwgQXV0b0luc3RhbGwKIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAo
MywgMCk6CkluZGV4OiBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0
Y29yZXB5L2NyZWRlbnRpYWxzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFy
aWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvY3JlZGVudGlhbHMucHkJKHJldmlzaW9uIDI4
MDYzNikKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvY3JlZGVudGlhbHMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0
IGdldHBhc3MKIGltcG9ydCBzeXMKIAogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBDYWxsZWRQcm9j
ZXNzRXJyb3IKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCitmcm9tIHdl
YmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZSwgVGVybWluYWwKIAogX2NhY2hlID0gZGlj
dCgpCiAKQEAgLTY0LDcgKzY0LDcgQEAgZGVmIGNyZWRlbnRpYWxzKHVybCwgcmVxdWlyZWQ9VHJ1
ZSwgbmFtZQogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05vIHR0eSB0byBwcm9tcHQg
dXNlciBmb3IgdXNlcm5hbWUnKQogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQXV0aGVu
dGljYXRpb24gcmVxdWlyZWQgdG8gdXNlIHt9XG4iLmZvcm1hdChwcm9tcHQgb3IgbmFtZSkpCiAg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVc2VybmFtZTogJykKLSAgICAgICAgICAgIHVz
ZXJuYW1lID0gKGlucHV0IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5w
dXQpKCkKKyAgICAgICAgICAgIHVzZXJuYW1lID0gVGVybWluYWwuaW5wdXQoKQogICAgICAgICAg
ICAgdXNlcm5hbWVfcHJvbXB0ZWQgPSBUcnVlCiAKICAgICBpZiBub3Qga2V5OgpAQCAtODUsNyAr
ODUsNyBAQCBkZWYgY3JlZGVudGlhbHModXJsLCByZXF1aXJlZD1UcnVlLCBuYW1lCiAKICAgICBp
ZiBrZXlyaW5nIGFuZCAodXNlcm5hbWVfcHJvbXB0ZWQgb3Iga2V5X3Byb21wdGVkKToKICAgICAg
ICAgc3lzLnN0ZGVyci53cml0ZSgnU3RvcmUgdXNlcm5hbWUgYW5kIHt9IGluIHN5c3RlbSBrZXly
aW5nIGZvciB7fT8gKFkvTik6ICcuZm9ybWF0KGtleV9uYW1lLCB1cmwpKQotICAgICAgICByZXNw
b25zZSA9IChpbnB1dCBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApIGVsc2UgcmF3X2lucHV0
KSgpCisgICAgICAgIHJlc3BvbnNlID0gVGVybWluYWwuaW5wdXQoKQogICAgICAgICBpZiByZXNw
b25zZS5sb3dlcigpIGluIFsneScsICd5ZXMnLCAnb2snXToKICAgICAgICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoJ1N0b3JpbmcgY3JlZGVudGlhbHMuLi5cbicpCiAgICAgICAgICAgICBrZXlyaW5n
LnNldF9wYXNzd29yZCh1cmwsICd1c2VybmFtZScsIHVzZXJuYW1lKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy9saWJyYXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXJtaW5hbC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29y
ZXB5L3Rlcm1pbmFsLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVybWluYWwucHkJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgc3lzCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgaW5wdXQoY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gKGlucHV0
IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCkgZWxzZSByYXdfaW5wdXQpKCphcmdzLCAqKmt3
YXJncykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaG9vc2UoY2xzLCBwcm9tcHQsIG9w
dGlvbnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBzdHJpY3Q9RmFsc2UsIG51bWJlcmVkPUZhbHNlKToK
KyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgb3IgKCdZZXMnLCAnTm8nKQorCisgICAgICAgIHJl
c3BvbnNlID0gTm9uZQorICAgICAgICB3aGlsZSByZXNwb25zZSBpcyBOb25lOgorICAgICAgICAg
ICAgaWYgbnVtYmVyZWQ6CisgICAgICAgICAgICAgICAgbnVtYmVyZWRfb3B0aW9ucyA9IFsne30p
IHt9Jy5mb3JtYXQoaSArIDEsIG9wdGlvbnNbaV0pIGZvciBpIGluIHJhbmdlKGxlbihvcHRpb25z
KSldCisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBjbHMuaW5wdXQoJ3t9OlxuICAgIHt9XG46
ICcuZm9ybWF0KHByb21wdCwgJ1xuICAgICcuam9pbihudW1iZXJlZF9vcHRpb25zKSkpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY2xzLmlucHV0KCd7fSAo
e30pOiAnLmZvcm1hdChwcm9tcHQsICcvJy5qb2luKG9wdGlvbnMpKSkKKworICAgICAgICAgICAg
aWYgbnVtYmVyZWQgYW5kIHJlc3BvbnNlLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICBpbmRl
eCA9IGludChyZXNwb25zZSkgLSAxCisgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gMCBhbmQg
aW5kZXggPCBsZW4ob3B0aW9ucyk6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gb3B0
aW9uc1tpbmRleF0KKworICAgICAgICAgICAgaWYgbm90IHN0cmljdDoKKyAgICAgICAgICAgICAg
ICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIGlmIG9wdGlvbi5s
b3dlcigpLnN0YXJ0c3dpdGgocmVzcG9uc2UubG93ZXIoKSk6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IG9wdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKwor
ICAgICAgICAgICAgaWYgcmVzcG9uc2Ugbm90IGluIG9wdGlvbnM6CisgICAgICAgICAgICAgICAg
aWYgbm90IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIne30nIGlzIG5vdCBh
biBvcHRpb24iLmZvcm1hdChyZXNwb25zZSkpCisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBk
ZWZhdWx0CisKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCkluZGV4OiBUb29scy9TY3JpcHRzL2xp
YnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21vY2tzL19faW5pdF9fLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3Jl
cHkvbW9ja3MvX19pbml0X18ucHkJKHJldmlzaW9uIDI4MDYzNikKKysrIFRvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvX19pbml0X18ucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDMgKzI1LDQgQEAgZnJvbSB3ZWJraXRjb3JlcHkubW9ja3MudGlt
ZV8gaW1wb3J0IFRpbQogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Muc3VicHJvY2VzcyBpbXBvcnQg
UHJvY2Vzc0NvbXBsZXRpb24sIFN1YnByb2Nlc3MKIAogZnJvbSB3ZWJraXRjb3JlcHkubW9ja3Mu
cmVxdWVzdHNfIGltcG9ydCBSZXNwb25zZSwgUmVxdWVzdHMKK2Zyb20gd2Via2l0Y29yZXB5Lm1v
Y2tzLnRlcm1pbmFsIGltcG9ydCBUZXJtaW5hbApJbmRleDogVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS9tb2Nrcy90ZXJtaW5hbC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Via2l0Y29yZXB5L21v
Y2tzL3Rlcm1pbmFsLnB5CShub25leGlzdGVudCkKKysrIFRvb2xzL1NjcmlwdHMvbGlicmFyaWVz
L3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvbW9ja3MvdGVybWluYWwucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgc3lzCisKKworY2xhc3MgVGVybWluYWwob2JqZWN0KToKKyAgICBpbmRleCA9IDAK
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpbnB1dChjbHMsICphcmdzKToKKyAgICAgICAg
ZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorCisgICAgICAgIGNscy5pbmRleCA9IDAKKworICAgICAg
ICBkZWYgZnVuY3Rpb24ob3V0cHV0KToKKyAgICAgICAgICAgIHByaW50KG91dHB1dCkKKyAgICAg
ICAgICAgIGNscy5pbmRleCArPSAxCisgICAgICAgICAgICByZXR1cm4gYXJnc1tjbHMuaW5kZXgg
LSAxXQorCisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgICAgICAg
ICByZXR1cm4gcGF0Y2goJ2J1aWx0aW5zLmlucHV0JywgbmV3PWZ1bmN0aW9uKQorCisgICAgICAg
IGltcG9ydCBfX2J1aWx0aW5fXworICAgICAgICByZXR1cm4gcGF0Y2gub2JqZWN0KF9fYnVpbHRp
bl9fLCAncmF3X2lucHV0JywgbmV3PWZ1bmN0aW9uKQpJbmRleDogVG9vbHMvU2NyaXB0cy9saWJy
YXJpZXMvd2Via2l0Y29yZXB5L3dlYmtpdGNvcmVweS90ZXN0cy90ZXJtaW5hbF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpYnJhcmllcy93ZWJraXRjb3JlcHkvd2Vi
a2l0Y29yZXB5L3Rlc3RzL3Rlcm1pbmFsX3VuaXR0ZXN0LnB5CShub25leGlzdGVudCkKKysrIFRv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3dlYmtpdGNvcmVweS93ZWJraXRjb3JlcHkvdGVzdHMvdGVy
bWluYWxfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBt
b2NrIGltcG9ydCBwYXRjaAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IG1vY2tzLCBPdXRwdXRD
YXB0dXJlLCBUZXJtaW5hbAorCisKK2NsYXNzIFRlcm1pbmFsVGVzdHModW5pdHRlc3QuVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2Nob29zZV9iYXNpYyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2Nr
cy5UZXJtaW5hbC5pbnB1dCgneScpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVl
JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICdDb250aW51ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwu
aW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZSAo
WWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ2h1aCcs
ICd5JyksIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1llcycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgIkNvbnRpbnVlIChZZXMv
Tm8pOiBcbidodWgnIGlzIG5vdCBhbiBvcHRpb25cbkNvbnRpbnVlIChZZXMvTm8pOiBcbiIpCisK
KyAgICBkZWYgdGVzdF9jaG9vc2Vfc3RyaWN0KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRl
cm1pbmFsLmlucHV0KCdZZXMnKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScs
IHN0cmljdD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQu
Z2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8pOiBcbicpCisKKyAgICAgICAgd2l0aCBtb2Nr
cy5UZXJtaW5hbC5pbnB1dCgnTm8nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVl
Jywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIG1v
Y2tzLlRlcm1pbmFsLmlucHV0KCduJywgJ1llcycpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVy
ZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdZZXMnLCBUZXJtaW5hbC5jaG9vc2Uo
J0NvbnRpbnVlJywgc3RyaWN0PVRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1
cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAiQ29udGludWUgKFllcy9Obyk6IFxuJ24nIGlzIG5vdCBh
biBvcHRpb25cbkNvbnRpbnVlIChZZXMvTm8pOiBcbiIpCisKKyAgICAgICAgd2l0aCBtb2Nrcy5U
ZXJtaW5hbC5pbnB1dCgneScsICdObycpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGlu
dWUnLCBzdHJpY3Q9VHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rk
b3V0LmdldHZhbHVlKCksICJDb250aW51ZSAoWWVzL05vKTogXG4neScgaXMgbm90IGFuIG9wdGlv
blxuQ29udGludWUgKFllcy9Obyk6IFxuIikKKworICAgIGRlZiB0ZXN0X2Nob29zZV9kZWZhdWx0
KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCd5JyksIE91dHB1dENh
cHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1llcycs
IFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBkZWZhdWx0PSdPdGhlcicpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnQ29udGludWUgKFll
cy9Obyk6IFxuJykKKworICAgICAgICB3aXRoIG1vY2tzLlRlcm1pbmFsLmlucHV0KCduJyksIE91
dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J05vJywgVGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIGRlZmF1bHQ9J090aGVyJykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51
ZSAoWWVzL05vKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ2h1
aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdPdGhlcicsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBkZWZhdWx0PSdPdGhl
cicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgp
LCAnQ29udGludWUgKFllcy9Obyk6IFxuJykKKworICAgIGRlZiB0ZXN0X2Nob29zZV90cmlwbGUo
c2VsZik6CisgICAgICAgIHdpdGggbW9ja3MuVGVybWluYWwuaW5wdXQoJ3knKSwgT3V0cHV0Q2Fw
dHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWWVzJywg
VGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAnTm8nLCAnTWF5YmUn
KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVy
bWluYWwuaW5wdXQoJ24nKSwgT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnTm8nLCBUZXJtaW5hbC5jaG9vc2UoJ0NvbnRpbnVlJywgb3B0
aW9ucz0oJ1llcycsICdObycsICdNYXliZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
YXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ0NvbnRpbnVlIChZZXMvTm8vTWF5YmUpOiBcbicp
CisKKyAgICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnbWF5JyksIE91dHB1dENhcHR1
cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ01heWJlJywg
VGVybWluYWwuY2hvb3NlKCdDb250aW51ZScsIG9wdGlvbnM9KCdZZXMnLCAnTm8nLCAnTWF5YmUn
KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICdDb250aW51ZSAoWWVzL05vL01heWJlKTogXG4nKQorCisgICAgICAgIHdpdGggbW9ja3MuVGVy
bWluYWwuaW5wdXQoJ2h1aCcpLCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdObycsIFRlcm1pbmFsLmNob29zZSgnQ29udGludWUnLCBv
cHRpb25zPSgnWWVzJywgJ05vJywgJ01heWJlJyksIGRlZmF1bHQ9J05vJykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdDb250aW51ZSAoWWVz
L05vL01heWJlKTogXG4nKQorCisgICAgZGVmIHRlc3RfY2hvb3NlX251bWJlcihzZWxmKToKKyAg
ICAgICAgd2l0aCBtb2Nrcy5UZXJtaW5hbC5pbnB1dCgnMicpLCBPdXRwdXRDYXB0dXJlKCkgYXMg
Y2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdCZXRhJywgVGVybWluYWwu
Y2hvb3NlKCdQaWNrJywgb3B0aW9ucz0oJ0FscGhhJywgJ0JldGEnLCAnQ2hhcmxpZScsICdEZWx0
YScpLCBudW1iZXJlZD1UcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5z
dGRvdXQuZ2V0dmFsdWUoKSwgJ1BpY2s6XG4gICAgMSkgQWxwaGFcbiAgICAyKSBCZXRhXG4gICAg
MykgQ2hhcmxpZVxuICAgIDQpIERlbHRhXG46IFxuJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5CShyZXZpc2lvbiAyODA2MzYpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQkod29ya2luZyBjb3B5KQpA
QCAtMzYsNiArMzYsOCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHdl
YmJyb3dzZXIKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFRlcm1pbmFsCisKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLnBsYXRmb3JtaW5mbyBpbXBvcnQgUGxhdGZvcm1JbmZvCiAKQEAg
LTUwLDExICs1Miw2IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgIyBUaGVyZSBpcyBu
byByZWFkbGluZSBtb2R1bGUgZm9yIHdpbjMyLCBub3QgbXVjaCB0byBkbyBleGNlcHQgY3J5Lgog
ICAgICAgICBfbG9nLndhcm4oIlVuYWJsZSB0byBpbXBvcnQgcmVhZGxpbmUuIikKIAotaWYgc3lz
LnZlcnNpb25faW5mbyA+ICgzLCAwKToKLSAgICBpbnB1dF9mdW5jID0gaW5wdXQKLWVsc2U6Ci0g
ICAgaW5wdXRfZnVuYyA9IHJhd19pbnB1dAotCiAKIGNsYXNzIFVzZXIob2JqZWN0KToKICAgICBE
RUZBVUxUX05PID0gJ24nCkBAIC02Nyw3ICs2NCw3IEBAIGNsYXNzIFVzZXIob2JqZWN0KToKIAog
ICAgICMgRklYTUU6IFRoZXNlIGFyZSBAY2xhc3NtZXRob2RzIGJlY2F1c2UgYnVnemlsbGEucHkg
ZG9lc24ndCBoYXZlIGEgVG9vbCBvYmplY3QgKHRodXMgbm8gVXNlciBpbnN0YW5jZSkuCiAgICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdf
aW5wdXQ9aW5wdXRfZnVuYyk6CisgICAgZGVmIHByb21wdChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0x
LCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICByZXNwb25zZSA9IE5vbmUKICAg
ICAgICAgd2hpbGUgKHJlcGVhdCBhbmQgbm90IHJlc3BvbnNlKToKICAgICAgICAgICAgIHJlcGVh
dCAtPSAxCkBAIC03OSw3ICs3Niw3IEBAIGNsYXNzIFVzZXIob2JqZWN0KToKICAgICAgICAgcmV0
dXJuIGNscy5wcm9tcHQobWVzc2FnZSwgcmVwZWF0PXJlcGVhdCwgcmF3X2lucHV0PWdldHBhc3Mu
Z2V0cGFzcykKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBwcm9tcHRfd2l0aF9tdWx0aXBs
ZV9saXN0cyhjbHMsIGxpc3RfdGl0bGUsIHN1YnRpdGxlcywgbGlzdHMsIGNhbl9jaG9vc2VfbXVs
dGlwbGU9RmFsc2UsIHJhd19pbnB1dD1pbnB1dF9mdW5jKToKKyAgICBkZWYgcHJvbXB0X3dpdGhf
bXVsdGlwbGVfbGlzdHMoY2xzLCBsaXN0X3RpdGxlLCBzdWJ0aXRsZXMsIGxpc3RzLCBjYW5fY2hv
b3NlX211bHRpcGxlPUZhbHNlLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBp
dGVtX2luZGV4ID0gMAogICAgICAgICBjdW11bGF0ZWRfbGlzdCA9IFtdCiAgICAgICAgIHByaW50
KGxpc3RfdGl0bGUpCkBAIC0xMTksNyArMTE2LDcgQEAgY2xhc3MgVXNlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHJldHVybiBsaXN0X2l0ZW1zW3Jlc3VsdF0KIAogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywg
Y2FuX2Nob29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0X2Z1bmMpOgorICAgIGRl
ZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywgY2FuX2Nob29z
ZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PVRlcm1pbmFsLmlucHV0KToKICAgICAgICAgcHJp
bnQobGlzdF90aXRsZSkKICAgICAgICAgaSA9IDAKICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdF9p
dGVtczoKQEAgLTE2MSw3ICsxNTgsNyBAQCBjbGFzcyBVc2VyKG9iamVjdCk6CiAgICAgICAgIGV4
Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIGNvbmZpcm0oc2VsZiwg
bWVzc2FnZT1Ob25lLCBkZWZhdWx0PURFRkFVTFRfWUVTLCByYXdfaW5wdXQ9aW5wdXRfZnVuYyk6
CisgICAgZGVmIGNvbmZpcm0oc2VsZiwgbWVzc2FnZT1Ob25lLCBkZWZhdWx0PURFRkFVTFRfWUVT
LCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAgICAgICBpZiBub3QgbWVzc2FnZToKICAg
ICAgICAgICAgIG1lc3NhZ2UgPSAiQ29udGludWU/IgogICAgICAgICBjaG9pY2UgPSB7J3knOiAn
WS9uJywgJ24nOiAneS9OJ31bZGVmYXVsdF0KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS91c2VyX21vY2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQkocmV2aXNpb24gMjgwNjM2KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfbW9jay5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMjAgKzI5LDE5IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHN5cwog
Ci1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCitmcm9tIHdlYmtpdGNvcmVweSBp
bXBvcnQgVGVybWluYWwKIAotaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICBpbnB1
dCA9IHJhd19pbnB1dAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNs
YXNzIE1vY2tVc2VyKG9iamVjdCk6CiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcHJvbXB0
KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1pbnB1dCk6CisgICAgZGVmIHByb21w
dChjbHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9VGVybWluYWwuaW5wdXQpOgogICAg
ICAgICByZXR1cm4gIk1vY2sgdXNlciByZXNwb25zZSIKIAogICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBwcm9tcHRfd2l0aF9saXN0KGNscywgbGlzdF90aXRsZSwgbGlzdF9pdGVtcywgY2FuX2No
b29zZV9tdWx0aXBsZT1GYWxzZSwgcmF3X2lucHV0PWlucHV0KToKKyAgICBkZWYgcHJvbXB0X3dp
dGhfbGlzdChjbHMsIGxpc3RfdGl0bGUsIGxpc3RfaXRlbXMsIGNhbl9jaG9vc2VfbXVsdGlwbGU9
RmFsc2UsIHJhd19pbnB1dD1UZXJtaW5hbC5pbnB1dCk6CiAgICAgICAgIHBhc3MKIAogICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToK
</data>

          </attachment>
      

    </bug>

</bugzilla>