<?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>233800</bug_id>
          
          <creation_ts>2021-12-02 20:45:57 -0800</creation_ts>
          <short_desc>[Tools] Add script to query results database</short_desc>
          <delta_ts>2022-03-09 14:09:19 -0800</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>
          
          
          <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="Lauro Moura">lmoura</reporter>
          <assigned_to name="Lauro Moura">lmoura</assigned_to>
          <cc>clopez</cc>
    
    <cc>crzwdjk</cc>
    
    <cc>dpino</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820015</commentid>
    <comment_count>0</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-12-02 20:45:57 -0800</bug_when>
    <thetext>[Tools] Add script to query results database</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820016</commentid>
    <comment_count>1</comment_count>
      <attachid>445805</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-12-02 20:49:20 -0800</bug_when>
    <thetext>Created attachment 445805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820116</commentid>
    <comment_count>2</comment_count>
      <attachid>445847</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2021-12-03 06:53:39 -0800</bug_when>
    <thetext>Created attachment 445847
Updated patch

It was missing the IMAGE expectation from the list of possible expected values (it was based on a pytest script for webdriver)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820174</commentid>
    <comment_count>3</comment_count>
      <attachid>445847</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-12-03 09:28:21 -0800</bug_when>
    <thetext>Comment on attachment 445847
Updated patch

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

&gt; Tools/Scripts/webkit-test-results:54
&gt; +    &quot;TIMEOUT&quot;,  # Put timeout as more severe than ERROR as they often are harder to debug

Shouldn&apos;t crash be in here too?

Totally fine having this script own this, but results database&apos;s list is here:
Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/test_context.py

We probably should do some refactoring on the above since if you imported that, you&apos;d have a dependency on cassandra which is silly

&gt; Tools/Scripts/webkit-test-results:107
&gt; +}

I wonder if the better implementation is to have this set of query aliases, but to treat anything that doesn&apos;t match a query alias as the query. So -b=gtk-release-x11 and -b=&apos;platform=GTK&amp;style=release&amp;version_name=Xvfb&amp;version=5.5.0&apos; would give you the same thing. It would be pretty easy to tell if the user meant a -b argument to be a query because it would have to have a &apos;=&apos; in it.

&gt; Tools/Scripts/webkit-test-results:154
&gt; +        # Usually order is zero, but let&apos;s add it anyway as it&apos;s the actual

Minor note on what&apos;s going on under the hood: &quot;order&quot; lets us support ordering in commits that are landed at exactly the same time. In subversion, this is impossible, but it is possible in git, so it&apos;s likely order won&apos;t always be zero when we ditch SVN.

If you wanted to, the Commit object from webkitscmpy can do this, but you&apos;ve managed to avoid anything other than built-in dependencies so far, so I won&apos;t ask that you add any.

&gt; Tools/Scripts/webkit-test-results:190
&gt; +    endpoint = &quot;api/results/layout-tests&quot;

Seems like supporting other test suites would just be a matter of making an argparser for it, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822497</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-09 20:46:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/86305620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844103</commentid>
    <comment_count>5</comment_count>
      <attachid>452707</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-02-20 20:11:27 -0800</bug_when>
    <thetext>Created attachment 452707
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844105</commentid>
    <comment_count>6</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-02-20 20:13:27 -0800</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #3)
&gt; Comment on attachment 445847 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445847&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkit-test-results:54
&gt; &gt; +    &quot;TIMEOUT&quot;,  # Put timeout as more severe than ERROR as they often are harder to debug
&gt; 
&gt; Shouldn&apos;t crash be in here too?

Nice catch.

&gt; 
&gt; Totally fine having this script own this, but results database&apos;s list is
&gt; here:
&gt; Tools/Scripts/libraries/resultsdbpy/resultsdbpy/model/test_context.py
&gt; 
&gt; We probably should do some refactoring on the above since if you imported
&gt; that, you&apos;d have a dependency on cassandra which is silly

One point that I had in mind to reorder the expectations for this script was that ERROR would be &quot;worse&quot; than the regular failures (TEXT, IMAGE). Meanwhile, both webkitpy.results.upload.Expectations and the resultsdb.model.test_context.Expectations place ERROR as more severe than only PASS and WARNING.

For example, this scripts sees a test moving from FAIL to ERROR as a regression, while in the existing classes it kinda &quot;improved&quot;. Does this make sense?

In any case, if we keep the same scale of severity, I could use webkitpy.results.upload.Exception instead of importing the resultsdbpy.

&gt; 
&gt; &gt; Tools/Scripts/webkit-test-results:107
&gt; &gt; +}
&gt; 
&gt; I wonder if the better implementation is to have this set of query aliases,
&gt; but to treat anything that doesn&apos;t match a query alias as the query. So
&gt; -b=gtk-release-x11 and
&gt; -b=&apos;platform=GTK&amp;style=release&amp;version_name=Xvfb&amp;version=5.5.0&apos; would give
&gt; you the same thing. It would be pretty easy to tell if the user meant a -b
&gt; argument to be a query because it would have to have a &apos;=&apos; in it.

Great suggestion. Updated.

&gt; 
&gt; &gt; Tools/Scripts/webkit-test-results:154
&gt; &gt; +        # Usually order is zero, but let&apos;s add it anyway as it&apos;s the actual
&gt; 
&gt; Minor note on what&apos;s going on under the hood: &quot;order&quot; lets us support
&gt; ordering in commits that are landed at exactly the same time. In subversion,
&gt; this is impossible, but it is possible in git, so it&apos;s likely order won&apos;t
&gt; always be zero when we ditch SVN.

I&apos;ve updated the comment to mention this.

&gt; 
&gt; If you wanted to, the Commit object from webkitscmpy can do this, but you&apos;ve
&gt; managed to avoid anything other than built-in dependencies so far, so I
&gt; won&apos;t ask that you add any.

Yep. Like the resultsdbpy above, I tried to avoid pulling bit dependencies on this script.

&gt; 
&gt; &gt; Tools/Scripts/webkit-test-results:190
&gt; &gt; +    endpoint = &quot;api/results/layout-tests&quot;
&gt; 
&gt; Seems like supporting other test suites would just be a matter of making an
&gt; argparser for it, right?

Likely. I didn&apos;t add support for it yet as, IIRC, only layout-tests results are properly processed into the result database by GTK/WPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844225</commentid>
    <comment_count>7</comment_count>
      <attachid>452707</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-21 08:54:13 -0800</bug_when>
    <thetext>Comment on attachment 452707
Updated patch

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

&gt; Tools/Scripts/webkit-test-results:342
&gt; +    parser.add_argument(&quot;--list-bots&quot;, action=&quot;store_true&quot;, help=&quot;List predefined bots&quot;)

This option still requires &quot;-b&quot; to run, but that doesn&apos;t seem deliberate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848615</commentid>
    <comment_count>8</comment_count>
      <attachid>453938</attachid>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2022-03-06 19:24:28 -0800</bug_when>
    <thetext>Created attachment 453938
Updated patch

Nice catch. I&apos;ve grouped both -b and --list-bots into a mutually exclusive group. Other minor edits include aborting if no bot is passed when trying to get the history of a test and avoiding an exception when there are multiple expectations (e.g. TIMEOUT FAIL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849830</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-09 14:09:15 -0800</bug_when>
    <thetext>Committed r291067 (248239@main): &lt;https://commits.webkit.org/248239@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453938.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445805</attachid>
            <date>2021-12-02 20:49:20 -0800</date>
            <delta_ts>2021-12-03 06:53:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233800-20211203014919.patch</filename>
            <type>text/plain</type>
            <size>12345</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mzc1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDhhZDJjYjM3NjdjMzRlOTdlYjU1MmEzM2IzM2QwZGMw
MDE5YThmZi4uZjk1MTYwM2QxZWY1YmU0OWZkNDY2NTNiMGY2NzFmNTRhZjhmNDE3NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTEyLTAyICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtUb29sc10gQWRkIHNjcmlwdCB0byBxdWVyeSByZXN1bHRzIGRhdGFiYXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvbW1pdCBhZGRz
IGEgc2NyaXB0IHRvIHF1ZXJ5IGh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnIGZvciB0aGUKKyAg
ICAgICAgaGlzdG9yeSBvZiBhIHRlc3RjYXNlIGZvciBhIGdpdmVuIGJvdC9jb25maWcuIEl0IGlu
Y2x1ZGVzIGEKKyAgICAgICAgYC0tb25seS1jaGFuZ2VzYCBzd2l0Y2ggdG8gc2hvdyBvbmx5IHJl
dmlzaW9ucyB3aGVuIHRoZSBhY3R1YWwgY2hhbmdlZAorICAgICAgICBmcm9tIHRoZSBwcmV2aW91
cyBvbmUgKHVzZWZ1bCB0byBjaGVjayB3aGVuIGEgdGVzdCBzdGFydGVkIGZhaWxpbmcpLgorCisg
ICAgICAgIEZvciBub3cgaXQgc3VwcG9ydHMgb25seSBsYXlvdXQtdGVzdHMgYW5kIEdUSy9XUEUg
Ym90cy4gSW4gZnV0dXJlCisgICAgICAgIGNvbW1pdHMgbW9yZSBzdWl0ZXMgYW5kIGJvdHMgc2hv
dWxkIGJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0LXRlc3QtcmVzdWx0
czogQWRkZWQuCisKIDIwMjEtMTItMDEgIFcuRC4gWGlvbmcgIDx3ZHhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gcnVuLWJlbmNobWFyayBzaG91bGQgdGFrZSBkaWFnbm9zdGljIHNjcmVl
bnNob3RzIHVwb24gdGVzdCB0aW1lb3V0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dC10ZXN0LXJlc3VsdHMgYi9Ub29scy9TY3JpcHRzL3dlYmtpdC10ZXN0LXJlc3VsdHMKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjhhYzViZGJkMTc3YTY3YzI0ZDU2ZjBmMGM4MTNlZDM2M2Y2NTMyMwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0LXRlc3QtcmVzdWx0cwpAQCAtMCwwICsxLDMz
NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKEMpIDIwMjEgSWdh
bGlhIFMuTC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorIyBweWxpbnQ6IGRpc2FibGU9bWlzc2luZy1kb2NzdHJpbmcsaW52YWxpZC1u
YW1lCisKKyIiIkNvbW1hbmQtbGluZSBpbnRlcmZhY2UgdG8gdGhlIFdlYmtpdCBSZXN1bHRzIERh
dGFiYXNlIiIiCisKK2ltcG9ydCBhcmdwYXJzZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRp
bWUKK2ltcG9ydCBqc29uCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxp
YgoraW1wb3J0IHRleHR3cmFwCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbiwgdXJs
ZW5jb2RlCitmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCisKK0JBU0VfVVJMID0g
Imh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLyIKKworCitkZWYgcmVkKG1zZyk6CisgICAgIiIi
UmV0dXJucyBhIHNoZWxsLWF3YXJlIHJlZCBzdHJpbmciIiIKKyAgICByZXR1cm4gIlwwMzNbOTFt
IiArIG1zZyArICJcMDMzWzBtIgorCisKK2RlZiBncmVlbihtc2cpOgorICAgICIiIlJldHVybnMg
YSBzaGVsbC1hd2FyZSBncmVlbiBzdHJpbmciIiIKKyAgICByZXR1cm4gIlwwMzNbOTJtIiArIG1z
ZyArICJcMDMzWzBtIgorCisKKyMgUm91Z2hseSBvcmRlcmVkIGZyb20gdGhlIG1vc3QgZGVzaXJl
ZCB0byB0aGUgbW9zdCB1bndhbnRlZC4KK09VVENPTUVTID0gWworICAgICJQQVNTIiwKKyAgICAi
VEVYVCIsCisgICAgIlNLSVAiLAorICAgICJGQUlMIiwKKyAgICAiRVJST1IiLAorICAgICJUSU1F
T1VUIiwgICMgUHV0IHRpbWVvdXQgYXMgbW9yZSBzZXZlcmUgdGhhbiBFUlJPUiBhcyB0aGV5IG9m
dGVuIGFyZSBoYXJkZXIgdG8gZGVidWcKK10KKworCitkZWYgaXNfaW1wcm92ZW1lbnQoYmFzZWxp
bmUsIGN1cnJlbnQpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvdXRjb21l
IGlzIG1vcmUgZmF2b3VyYWJsZS4iIiIKKyAgICByZXR1cm4gT1VUQ09NRVMuaW5kZXgoYmFzZWxp
bmUpID4gT1VUQ09NRVMuaW5kZXgoY3VycmVudCkKKworCitkZWYgaXNfcmVncmVzc2lvbihiYXNl
bGluZSwgY3VycmVudCk6CisgICAgIiIiUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IG91dGNv
bWUgZG93bmdyYWRlZCB0aGUgcmVzdWx0LiIiIgorICAgIHJldHVybiBPVVRDT01FUy5pbmRleChi
YXNlbGluZSkgPCBPVVRDT01FUy5pbmRleChjdXJyZW50KQorCisKK2RlZiBkZWNvcmF0ZShtc2cs
IGJhc2VsaW5lLCBjdXJyZW50KToKKyAgICAiIiJDb2xvcnMgdGhlIG1lc3NhZ2UgaWYgdGhlIHN0
YXR1cyBjaGFuZ2UgcmVwcmVzZW50cyBhbiBpbXByb3ZlbWVudCBvciByZWdyZXNzaW9uLiIiIgor
ICAgIGlmIGlzX2ltcHJvdmVtZW50KGJhc2VsaW5lLCBjdXJyZW50KToKKyAgICAgICAgbXNnID0g
Z3JlZW4obXNnKQorICAgIGVsaWYgaXNfcmVncmVzc2lvbihiYXNlbGluZSwgY3VycmVudCk6Cisg
ICAgICAgIG1zZyA9IHJlZChtc2cpCisgICAgcmV0dXJuIG1zZworCisKK2NsYXNzIFF1ZXJ5Ogor
ICAgICIiIldyYXBwZXIgYXJvdW5kIHRoZSBtb3N0IGNvbW1vbiBxdWVyeSBwYXJhbWV0ZXJzIGZv
ciBhIGdpdmVuIHJlcXVlc3QiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6
CisgICAgICAgICIiIkp1c3Qgc3RvcmVzIHRoZSBwYXNzZWQga3dhcmdzIGFzIHBhcmFtZXRlcnMg
dG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBhY3R1YWwgcXVlcnkiIiIKKyAgICAgICAgc2VsZi5fcGFy
YW1zID0ga3dhcmdzLmNvcHkoKQorCisgICAgZGVmIGFzX3F1ZXJ5X3N0cmluZyhzZWxmKToKKyAg
ICAgICAgIiIiRXNjYXBlIGFuZCBidWlsZCB0aGUgYWN0dWFsIHF1ZXJ5IHN0cmluZyIiIgorICAg
ICAgICByZXR1cm4gdXJsZW5jb2RlKHNlbGYuX3BhcmFtcykKKworICAgIGRlZiBhZGRfcGFyYW0o
c2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiJFeHRlbmRzIHRoZSBjdXJyZW50IHNldCBvZiBw
YXJhbWV0ZXJzLgorCisgICAgICAgIEJld2FyZSB0aGF0IGl0J2xsIG92ZXJ3cml0ZSBleGlzdGlu
ZyB2YWx1ZXMuIiIiCisgICAgICAgIHNlbGYuX3BhcmFtcy51cGRhdGUoa3dhcmdzKQorCisKK0JP
VFMgPSB7CisgICAgImd0ay1yZWxlYXNlLXgxMSI6IFF1ZXJ5KAorICAgICAgICBwbGF0Zm9ybT0i
R1RLIiwgc3R5bGU9InJlbGVhc2UiLCB2ZXJzaW9uX25hbWU9Ilh2ZmIiLCB2ZXJzaW9uPSI1LjUu
MCIKKyAgICApLAorICAgICJndGstcmVsZWFzZS1ndGs0IjogUXVlcnkoCisgICAgICAgIHBsYXRm
b3JtPSJHVEsiLCBzdHlsZT0icmVsZWFzZSIsIHZlcnNpb25fbmFtZT0iWHZmYiIsIHZlcnNpb249
IjQuMTkuMCIKKyAgICApLAorICAgICJndGstcmVsZWFzZS13YXlsYW5kIjogUXVlcnkoCisgICAg
ICAgIHBsYXRmb3JtPSJHVEsiLCBzdHlsZT0icmVsZWFzZSIsIHZlcnNpb25fbmFtZT0iV2F5bGFu
ZCIKKyAgICApLAorICAgICJ3cGUtcmVsZWFzZSI6IFF1ZXJ5KHBsYXRmb3JtPSJXUEUiLCBzdHls
ZT0icmVsZWFzZSIpLAorICAgICJ3cGUtZGVidWciOiBRdWVyeShwbGF0Zm9ybT0iV1BFIiwgc3R5
bGU9InJlbGVhc2UiKSwKK30KKworCitkZWYgZ2V0X2NvbW1pdF9jYWNoZV9maWxlbmFtZSgpOgor
ICAgICIiIlJldHVybnMgdGhlIGNhY2hlIGZpbGVuYW1lLCBlbnN1cmluZyBpdCdzIHBhcmVudCBm
b2xkZXIgZXhpc3RzIiIiCisgICAgYXBwX25hbWUgPSAid2Via2l0LXRlc3QtcmVzdWx0cyIKKyAg
ICB4ZGdfY29uZmlnX2hvbWUgPSBvcy5nZXRlbnYoIlhER19DQUNIRV9IT01FIikKKyAgICBpZiB4
ZGdfY29uZmlnX2hvbWU6CisgICAgICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguam9pbih4ZGdfY29u
ZmlnX2hvbWUsIGFwcF9uYW1lKQorICAgIGVsc2U6CisgICAgICAgIGRpcmVjdG9yeSA9IG9zLnBh
dGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5jYWNoZSIsIGFwcF9uYW1lKQorCisg
ICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgcGF0aGxpYi5QYXRo
KGRpcmVjdG9yeSkubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorCisgICAgcmV0
dXJuIG9zLnBhdGguam9pbihkaXJlY3RvcnksICJjb21taXRzLmpzb24iKQorCisKK2RlZiBsb2Fk
X2NvbW1pdF9jYWNoZShmb3JjZV9yZXNldD1GYWxzZSk6CisgICAgIiIiTG9hZHMgdGhlIHN0b3Jl
ZCBjb21taXRzLCBmZXRjaGluZyBhZ2FpbiBpZiBuZWVkZWQuIiIiCisgICAgZmlsZW5hbWUgPSBn
ZXRfY29tbWl0X2NhY2hlX2ZpbGVuYW1lKCkKKyAgICBpZiBmb3JjZV9yZXNldCBvciBub3Qgb3Mu
cGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgorICAgICAgICByZXR1cm4gcmVzZXRfY29tbWl0X2NhY2hl
KCkKKworICAgIGxvZ2dpbmcuaW5mbygiT3BlbmluZyBjb21taXQgY2FjaGUgJXMiLCBmaWxlbmFt
ZSkKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGhhbmRsZToKKyAgICAgICAgcmV0dXJuIGpz
b24ubG9hZChoYW5kbGUpCisKKworZGVmIHJlc2V0X2NvbW1pdF9jYWNoZSgpOgorICAgICIiIkZl
dGNoZXMgdGhlIGxhc3QgNTAwMCBjb21taXRzIGFuZCBzdG9yZSB0aGVpciBpbmZvIHRvIGJlIHJl
dXNlZCBpbiBsYXRlciBjYWxscy4iIiIKKyAgICAjIFRPRE8gQXBwZW5kIHRvIGV4aXN0aW5nIGlu
c3RlYWQgb2YgcmVzZXR0aW5nCisgICAgbG9nZ2luZy5pbmZvKCJSZXNldHRpbmcgY29tbWl0IGNh
Y2hlIikKKyAgICBsaW1pdCA9IDUwMDAKKyAgICBjb21tYW5kID0gIi9hcGkvY29tbWl0cyIKKwor
ICAgIHF1ZXJ5ID0geyJsaW1pdCI6IGxpbWl0LCAiYnJhbmNoIjogIm1haW4ifQorCisgICAgdXJs
ID0gdXJsam9pbihCQVNFX1VSTCwgY29tbWFuZCkgKyAiPyIgKyB1cmxlbmNvZGUocXVlcnkpCisK
KyAgICBmaWxlbmFtZSA9IGdldF9jb21taXRfY2FjaGVfZmlsZW5hbWUoKQorICAgIGxvZ2dpbmcu
aW5mbygiRmV0Y2hpbmcgY29tbWl0cyBmcm9tICVzIiwgdXJsKQorICAgIHdpdGggdXJsb3Blbih1
cmwpIGFzIHJlc3BvbnNlOgorICAgICAgICByYXdfZGF0YSA9IGpzb24ubG9hZChyZXNwb25zZSkK
KworICAgIHV1aWRzID0ge30KKyAgICBmb3IgY29tbWl0IGluIHJhd19kYXRhOgorICAgICAgICAj
IFVzdWFsbHkgb3JkZXIgaXMgemVybywgYnV0IGxldCdzIGFkZCBpdCBhbnl3YXkgYXMgaXQncyB0
aGUgYWN0dWFsCisgICAgICAgICMgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvbW1pdCBVVUlEIGlu
IHRoZSBweXJlc3VsdHNkYgorICAgICAgICB1dWlkID0gc3RyKGNvbW1pdFsidGltZXN0YW1wIl0g
KiAxMDAgKyBjb21taXRbIm9yZGVyIl0pCisgICAgICAgIGNvbW1pdFsidXVpZCJdID0gdXVpZAor
ICAgICAgICB1dWlkc1t1dWlkXSA9IGNvbW1pdAorCisgICAgbG9nZ2luZy5pbmZvKCJTYXZpbmcg
Y29tbWl0cyB0byAlcyIsIGZpbGVuYW1lKQorICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBh
cyBvdXRwdXQ6CisgICAgICAgIGxvZ2dpbmcuaW5mbygiU2F2aW5nIGRvd25sb2FkZWQgY2FjaGUi
KQorICAgICAgICBqc29uLmR1bXAodXVpZHMsIG91dHB1dCkKKworICAgIHJldHVybiB1dWlkcwor
CisKK2RlZiBsYXN0X3J1bihhcmdzKToKKyAgICAiIiJTaG93cyBkYXRhIGFib3V0IHRoZSBsYXN0
IHRlc3QgcnVuIHJlZ2lzdGVyZWQgZm9yIHRoZSBzZWxlY3RlZCBib3QiIiIKKyAgICBlbmRwb2lu
dCA9ICJhcGkvcmVzdWx0cy9sYXlvdXQtdGVzdHMiCisgICAgaWYgYXJncy5vbmx5X2NoYW5nZXM6
CisgICAgICAgIGxvZ2dpbmcuaW5mbygiLS1vbmx5LWNoYW5nZXMgaWdub3JlZCBpbiB0aGlzIGNv
bW1hbmQiKQorICAgIGlmIGFyZ3Mub25seV91bmV4cGVjdGVkOgorICAgICAgICBsb2dnaW5nLmlu
Zm8oIi0tb25seS11bmV4cGVjdGVkIGlnbm9yZWQgaW4gdGhpcyBjb21tYW5kIikKKworICAgIGNv
bmZpZ3VyYXRpb24gPSBCT1RTW2FyZ3MuYm90XQorICAgIGNvbmZpZ3VyYXRpb24uYWRkX3BhcmFt
KGxpbWl0PTEpCisgICAgcXVlcnkgPSBjb25maWd1cmF0aW9uLmFzX3F1ZXJ5X3N0cmluZygpCisK
KyAgICB1cmwgPSB1cmxqb2luKEJBU0VfVVJMLCBlbmRwb2ludCkgKyAiPyIgKyBxdWVyeQorCisg
ICAgbG9nZ2luZy5pbmZvKCJMb2FkaW5nIHRlc3QgZGF0YSBmcm9tICVzIiwgdXJsKQorICAgIHdp
dGggdXJsb3Blbih1cmwpIGFzIHJlc3BvbnNlOgorICAgICAgICBkYXRhID0ganNvbi5sb2FkKHJl
c3BvbnNlKQorICAgIHByaW50KGpzb24uZHVtcHMoZGF0YSwgc29ydF9rZXlzPVRydWUsIGluZGVu
dD00LCBzZXBhcmF0b3JzPSgiLCIsICI6ICIpKSkKKworCitkZWYgcmVwb3J0X3Rlc3QoYXJncyk6
CisgICAgIiIiUmVwb3J0cyB0aGUgdGVzdCBoaXN0b3J5IGZvciBhIHNpbmdsZSB0ZXN0Y2FzZSBp
biBhIHNpbmdsZSBjb25maWd1cmF0aW9uIiIiCisgICAgZW5kcG9pbnQgPSAiYXBpL3Jlc3VsdHMv
bGF5b3V0LXRlc3RzIgorICAgIGNvbmZpZ3VyYXRpb24gPSBCT1RTW2FyZ3MuYm90XQorICAgIGlm
IGFyZ3MubGltaXQgPiAwOgorICAgICAgICBjb25maWd1cmF0aW9uLmFkZF9wYXJhbShsaW1pdD1h
cmdzLmxpbWl0KQorICAgIHF1ZXJ5ID0gY29uZmlndXJhdGlvbi5hc19xdWVyeV9zdHJpbmcoKQor
CisgICAgdXJsID0gdXJsam9pbihCQVNFX1VSTCwgZW5kcG9pbnQgKyAiLyIgKyBhcmdzLnRlc3Qp
ICsgIj8iICsgcXVlcnkKKworICAgIGxvZ2dpbmcuaW5mbygiTG9hZGluZyB0ZXN0IGRhdGEgZnJv
bSAlcyIsIHVybCkKKyAgICB3aXRoIHVybG9wZW4odXJsKSBhcyByZXNwb25zZToKKyAgICAgICAg
ZGF0YSA9IGpzb24ubG9hZChyZXNwb25zZSlbMF0KKworICAgIHJlc3VsdHMgPSBzb3J0ZWQoZGF0
YVsicmVzdWx0cyJdLCBrZXk9bGFtYmRhIHJlc3VsdDogcmVzdWx0WyJ1dWlkIl0pCisKKyAgICBj
b21taXRzID0gbG9hZF9jb21taXRfY2FjaGUoZm9yY2VfcmVzZXQ9YXJncy5yZXNldF9jYWNoZSkK
KyAgICBsb2dnaW5nLmluZm8oIkZvdW5kICVkIGNhY2hlZCBjb21taXRzIiwgbGVuKGNvbW1pdHMp
KQorCisgICAgcHJldmlvdXMgPSBOb25lCisKKyAgICBmb3IgcmVzdWx0IGluIHJlc3VsdHM6Cisg
ICAgICAgIGFjdHVhbCA9IHJlc3VsdFsiYWN0dWFsIl0KKyAgICAgICAgZXhwZWN0ZWQgPSByZXN1
bHRbImV4cGVjdGVkIl0KKyAgICAgICAgc3RhcnRfdGltZSA9IGRhdGV0aW1lLmZyb210aW1lc3Rh
bXAocmVzdWx0WyJzdGFydF90aW1lIl0pCisgICAgICAgIHV1aWQgPSByZXN1bHRbInV1aWQiXQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbW1pdCA9IGNvbW1pdHNbc3RyKHV1aWQpXQor
ICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwcmludCgiQ291bGQgbm90IGZp
bmQgY29tbWl0IHdpdGggdXVpZCB7fSIuZm9ybWF0KHV1aWQpKQorICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICBpZiBhcmdzLm9ubHlfY2hhbmdlczoKKyAgICAgICAgICAgIGlmIHByZXZp
b3VzID09IGFjdHVhbDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbGlmIGFy
Z3Mub25seV91bmV4cGVjdGVkOgorICAgICAgICAgICAgaWYgYWN0dWFsID09IGV4cGVjdGVkOgor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgbXNnID0gImNvbW1pdCB7fSBleHBl
Y3RlZCB7fSBhY3R1YWwge30gdGltZSB7fSIuZm9ybWF0KAorICAgICAgICAgICAgY29tbWl0WyJp
ZGVudGlmaWVyIl0sIGV4cGVjdGVkLCBhY3R1YWwsIHN0YXJ0X3RpbWUKKyAgICAgICAgKQorCisg
ICAgICAgIGlmIGFyZ3MuY29sb3I6CisgICAgICAgICAgICBwcmludChkZWNvcmF0ZShtc2csIGV4
cGVjdGVkLCBhY3R1YWwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQobXNnKQor
ICAgICAgICBwcmV2aW91cyA9IGFjdHVhbAorCisKK2RlZiBwYXJzZV9hcmdzKCk6CisgICAgIiIi
UGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgc3dpdGNoZXMiIiIKKyAgICBwYXJzZXIg
PSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgZGVzY3JpcHRpb249dGV4dHdyYXAu
ZGVkZW50KAorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgQ29tbWFuZCBsaW5lIHRv
b2wgdG8gcXVlcnkgaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcgZm9yIHRlc3QgaGlzdG9yeS4K
KworICAgICAgICAgICAgICAgIFBhc3NpbmcgYSB0ZXN0IGNhc2UgaW4gdGhlIGNvbW1hbmQgbGlu
ZSB3aWxsIHNob3cgb25lIGVudHJ5IGZvciBlYWNoCisgICAgICAgICAgICAgICAgdGVzdCBydW4g
cmVnaXN0ZXJlZCwgYWxvbmdzaWRlIGNvbW1pdCBpbmZvcm1hdGlvbiwgZXhwZWN0ZWQgYW5kIGFj
dHVhbCBvdXRjb21lcywKKyAgICAgICAgICAgICAgICBhbmQgdGltZXN0YW1wIG9mIHRoZSBydW4u
IEZvciBleGFtcGxlOgorCisgICAgICAgICAgICAgICAgJCB3ay10ZXN0LXJlc3VsdCAtLWJvdCB3
cGUtcmVsZWFzZSBpZXRlc3RjZW50ZXIvY3NzMy90ZXh0L3RleHRzaGFkb3ctMDAxLmh0bSAtLWxp
bWl0PTUKKyAgICAgICAgICAgICAgICBjb21taXQgMjQ0NzgxQG1haW4gZXhwZWN0ZWQgUEFTUyBh
Y3R1YWwgVEVYVCB0aW1lIDIwMjEtMTItMDIgMTg6MDI6MTMKKyAgICAgICAgICAgICAgICBjb21t
aXQgMjQ0Nzg3QG1haW4gZXhwZWN0ZWQgUEFTUyBhY3R1YWwgVEVYVCB0aW1lIDIwMjEtMTItMDIg
MTk6NDM6MTAKKyAgICAgICAgICAgICAgICBjb21taXQgMjQ0Nzk2QG1haW4gZXhwZWN0ZWQgUEFT
UyBhY3R1YWwgVEVYVCB0aW1lIDIwMjEtMTItMDIgMjA6NDE6NTIKKyAgICAgICAgICAgICAgICBj
b21taXQgMjQ0Nzk3QG1haW4gZXhwZWN0ZWQgUEFTUyBhY3R1YWwgVEVYVCB0aW1lIDIwMjEtMTIt
MDIgMjE6NDA6MjkKKyAgICAgICAgICAgICAgICBjb21taXQgMjQ0ODAzQG1haW4gZXhwZWN0ZWQg
UEFTUyBhY3R1YWwgVEVYVCB0aW1lIDIwMjEtMTItMDIgMjM6MTM6MTkKKworICAgICAgICAgICAg
ICAgIFRvIGF2b2lkIHF1ZXJ5aW5nIHRoZSBjb21taXQgZGF0YSBhdCBlYWNoIGludm9jYXRpb24s
IHRoZSBsYXN0IDUwMDAgY29tbWl0cworICAgICAgICAgICAgICAgIGFyZSBjYWNoZWQgKGJ5IGRl
ZmF1bHQsIHRvICRYREdfQ0FDSEVfSE9NRS93ay1nYXJkZW5pbmctdG9vbHMvY29tbWl0cy5qc29u
KS4KKworICAgICAgICAgICAgICAgIEN1cnJlbnRseSwgb25seSBHTElCLWJhc2VkIGJvdHMgYW5k
IGxheW91dC10ZXN0IHN1aXRlIGFyZSBzdXBwb3J0ZWQuCisgICAgICAgICAgICAiIiIKKyAgICAg
ICAgKSwKKyAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd1RleHRIZWxwRm9ybWF0
dGVyLAorICAgICkKKworICAgICMgVE9ETyBhZGQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byBz
cGVjaWZ5IG1hbnVhbGx5IHRoZSBjb25maWd1cmF0aW9uIGRhdGEKKyAgICAjIEl0IHdvdWxkIGFs
bG93IHVzaW5nIHRoaXMgc2NyaXB0IHdpdGggb3RoZXIgcG9ydHMKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAiLWIiLCAiLS1ib3QiLCBjaG9pY2VzPUJPVFMua2V5cygpLCBoZWxw
PSJCb3QgdG8gcXVlcnkiLCByZXF1aXJlZD1UcnVlCisgICAgKQorCisgICAgIyBDb21tb24gb3B0
aW9ucworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGhlbHA9IlZlcmJvc2Ugb3V0cHV0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KAorICAgICAgICAiLXIiLAorICAgICAgICAiLS1yZXNldC1jYWNoZSIsCisgICAgICAgIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9IlJlc2V0IHRoZSBjb21taXQgY2FjaGUg
aWYgbmVlZGVkIiwKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1j
IiwKKyAgICAgICAgIi0tY29sb3IiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAg
ICAgICBoZWxwPSJVc2UgY29sb3JzIHRvIGhpZ2hsaWdodCB1bmV4cGVjdGVkIHJlc3VsdHMiLAor
ICAgICkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLWxhc3QtcnVuIiwK
KyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0iU2hvdyBzdGF0dXMg
b2YgdGhlIGxhc3QgcmVnaXN0ZXJlZCBydW4gYW5kIGV4aXQuIiwKKyAgICApCisKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1saW1pdCIsCisgICAgICAgIHR5cGU9aW50LAor
ICAgICAgICBkZWZhdWx0PTEwMCwKKyAgICAgICAgaGVscD0iIiJMaW1pdCB0aGUgbnVtYmVyIG9m
IHJlc3VsdHMuIERlZmF1bHRzIHRvIDEwMCwgdXNlIC0xIHRvIGFzayB0aGUgc2VydmVyIGZvcgor
ICAgICAgICAgICAgICAgIGl0cyBkZWZhdWx0IHZhbHVlLiBVc2UgdG9nZXRoZXIgd2l0aCAtLXRl
c3QiIiIsCisgICAgKQorCisgICAgIyBPdXRwdXQgb3B0aW9ucworICAgIG91dHB1dF9ncm91cCA9
IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBvdXRwdXRfZ3JvdXAu
YWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vbmx5LWNoYW5nZXMiLAorICAgICAgICBhY3Rpb249
InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJEaXNwbGF5IG9ubHkgcmV2aXNpb25zIHdoZXJl
IHRoZSBzdGF0ZSBjaGFuZ2VkLiBVc2Ugd2l0aCAtLXRlc3QiLAorICAgICkKKyAgICBvdXRwdXRf
Z3JvdXAuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1vbmx5LXVuZXhwZWN0ZWQiLAorICAgICAg
ICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJEaXNwbGF5IG9ubHkgdW5leHBl
Y3RlZCByZXN1bHRzLiBVc2Ugd2l0aCAtLXRlc3QiLAorICAgICkKKworICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoCisgICAgICAgICJ0ZXN0IiwgaGVscD0iVGVzdCBjYXNlIHRvIGJlIHNlYXJjaGVk
IiwgbmFyZ3M9Ij8iLCBkZWZhdWx0PU5vbmUKKyAgICApCisKKyAgICByZXR1cm4gcGFyc2VyLnBh
cnNlX2FyZ3MoKQorCisKK2RlZiBtYWluKCk6CisgICAgIiIiTWFpbiBlbnRyeSBwb2ludCIiIgor
ICAgIGFyZ3MgPSBwYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3MudmVyYm9zZToKKyAgICAgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHKQorCisgICAgaWYgYXJncy5s
YXN0X3J1bjoKKyAgICAgICAgbGFzdF9ydW4oYXJncykKKyAgICBlbGlmIGFyZ3MudGVzdDoKKyAg
ICAgICAgcmVwb3J0X3Rlc3QoYXJncykKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiTm8gdGVz
dCBjYXNlIHByb3ZpZGVkLiBEaWQgeW91IGZvcmdldCB0byBwYXNzIGl0PyIpCisKKworaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445847</attachid>
            <date>2021-12-03 06:53:39 -0800</date>
            <delta_ts>2022-02-20 20:11:21 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-233800-20211203115338.patch</filename>
            <type>text/plain</type>
            <size>12376</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTQ1ZWFlYjgyMzMxOTg4NzNjMjY0MDQxNWE3ODA2MTJh
NmJkODc0OS4uMGY4NDdmMGU1OWUzYjkxZTA3NjZlMTRmNjcwMmYxZDA4ODBiMTdlMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTEyLTAyICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtUb29sc10gQWRkIHNjcmlwdCB0byBxdWVyeSByZXN1bHRzIGRhdGFiYXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvbW1pdCBhZGRz
IGEgc2NyaXB0IHRvIHF1ZXJ5IGh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnIGZvciB0aGUKKyAg
ICAgICAgaGlzdG9yeSBvZiBhIHRlc3RjYXNlIGZvciBhIGdpdmVuIGJvdC9jb25maWcuIEl0IGlu
Y2x1ZGVzIGEKKyAgICAgICAgYC0tb25seS1jaGFuZ2VzYCBzd2l0Y2ggdG8gc2hvdyBvbmx5IHJl
dmlzaW9ucyB3aGVuIHRoZSBhY3R1YWwgY2hhbmdlZAorICAgICAgICBmcm9tIHRoZSBwcmV2aW91
cyBvbmUgKHVzZWZ1bCB0byBjaGVjayB3aGVuIGEgdGVzdCBzdGFydGVkIGZhaWxpbmcpLgorCisg
ICAgICAgIEZvciBub3cgaXQgc3VwcG9ydHMgb25seSBsYXlvdXQtdGVzdHMgYW5kIEdUSy9XUEUg
Ym90cy4gSW4gZnV0dXJlCisgICAgICAgIGNvbW1pdHMgbW9yZSBzdWl0ZXMgYW5kIGJvdHMgc2hv
dWxkIGJlIHN1cHBvcnRlZC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0LXRlc3QtcmVzdWx0
czogQWRkZWQuCisKIDIwMjEtMTItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFtHVEtdIFVzZSBudWxscHRyIGluc3Rl
YWQgb2YgMCBpbiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0LXRlc3QtcmVzdWx0cyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0LXRl
c3QtcmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjc1YjU5YjNiZjI1M2I4ZmZkMzM4MzdiOWU3NjNkZTI3
Zjk4ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXQtdGVzdC1yZXN1
bHRzCkBAIC0wLDAgKzEsMzM3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjCisjIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNp
b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZQorIyBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyMg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjIHB5bGludDogZGlzYWJsZT1taXNzaW5nLWRv
Y3N0cmluZyxpbnZhbGlkLW5hbWUKKworIiIiQ29tbWFuZC1saW5lIGludGVyZmFjZSB0byB0aGUg
V2Via2l0IFJlc3VsdHMgRGF0YWJhc2UiIiIKKworaW1wb3J0IGFyZ3BhcnNlCitmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQg
b3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgdGV4dHdyYXAKK2Zyb20gdXJsbGliLnBhcnNlIGlt
cG9ydCB1cmxqb2luLCB1cmxlbmNvZGUKK2Zyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9w
ZW4KKworQkFTRV9VUkwgPSAiaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvIgorCisKK2RlZiBy
ZWQobXNnKToKKyAgICAiIiJSZXR1cm5zIGEgc2hlbGwtYXdhcmUgcmVkIHN0cmluZyIiIgorICAg
IHJldHVybiAiXDAzM1s5MW0iICsgbXNnICsgIlwwMzNbMG0iCisKKworZGVmIGdyZWVuKG1zZyk6
CisgICAgIiIiUmV0dXJucyBhIHNoZWxsLWF3YXJlIGdyZWVuIHN0cmluZyIiIgorICAgIHJldHVy
biAiXDAzM1s5Mm0iICsgbXNnICsgIlwwMzNbMG0iCisKKworIyBSb3VnaGx5IG9yZGVyZWQgZnJv
bSB0aGUgbW9zdCBkZXNpcmVkIHRvIHRoZSBtb3N0IHVud2FudGVkLgorT1VUQ09NRVMgPSBbCisg
ICAgIlBBU1MiLAorICAgICJURVhUIiwKKyAgICAiSU1BR0UiLAorICAgICJTS0lQIiwKKyAgICAi
RkFJTCIsCisgICAgIkVSUk9SIiwKKyAgICAiVElNRU9VVCIsICAjIFB1dCB0aW1lb3V0IGFzIG1v
cmUgc2V2ZXJlIHRoYW4gRVJST1IgYXMgdGhleSBvZnRlbiBhcmUgaGFyZGVyIHRvIGRlYnVnCitd
CisKKworZGVmIGlzX2ltcHJvdmVtZW50KGJhc2VsaW5lLCBjdXJyZW50KToKKyAgICAiIiJSZXR1
cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgb3V0Y29tZSBpcyBtb3JlIGZhdm91cmFibGUuIiIiCisg
ICAgcmV0dXJuIE9VVENPTUVTLmluZGV4KGJhc2VsaW5lKSA+IE9VVENPTUVTLmluZGV4KGN1cnJl
bnQpCisKKworZGVmIGlzX3JlZ3Jlc3Npb24oYmFzZWxpbmUsIGN1cnJlbnQpOgorICAgICIiIlJl
dHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvdXRjb21lIGRvd25ncmFkZWQgdGhlIHJlc3VsdC4i
IiIKKyAgICByZXR1cm4gT1VUQ09NRVMuaW5kZXgoYmFzZWxpbmUpIDwgT1VUQ09NRVMuaW5kZXgo
Y3VycmVudCkKKworCitkZWYgZGVjb3JhdGUobXNnLCBiYXNlbGluZSwgY3VycmVudCk6CisgICAg
IiIiQ29sb3JzIHRoZSBtZXNzYWdlIGlmIHRoZSBzdGF0dXMgY2hhbmdlIHJlcHJlc2VudHMgYW4g
aW1wcm92ZW1lbnQgb3IgcmVncmVzc2lvbi4iIiIKKyAgICBpZiBpc19pbXByb3ZlbWVudChiYXNl
bGluZSwgY3VycmVudCk6CisgICAgICAgIG1zZyA9IGdyZWVuKG1zZykKKyAgICBlbGlmIGlzX3Jl
Z3Jlc3Npb24oYmFzZWxpbmUsIGN1cnJlbnQpOgorICAgICAgICBtc2cgPSByZWQobXNnKQorICAg
IHJldHVybiBtc2cKKworCitjbGFzcyBRdWVyeToKKyAgICAiIiJXcmFwcGVyIGFyb3VuZCB0aGUg
bW9zdCBjb21tb24gcXVlcnkgcGFyYW1ldGVycyBmb3IgYSBnaXZlbiByZXF1ZXN0IiIiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiJKdXN0IHN0b3JlcyB0
aGUgcGFzc2VkIGt3YXJncyBhcyBwYXJhbWV0ZXJzIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgYWN0
dWFsIHF1ZXJ5IiIiCisgICAgICAgIHNlbGYuX3BhcmFtcyA9IGt3YXJncy5jb3B5KCkKKworICAg
IGRlZiBhc19xdWVyeV9zdHJpbmcoc2VsZik6CisgICAgICAgICIiIkVzY2FwZSBhbmQgYnVpbGQg
dGhlIGFjdHVhbCBxdWVyeSBzdHJpbmciIiIKKyAgICAgICAgcmV0dXJuIHVybGVuY29kZShzZWxm
Ll9wYXJhbXMpCisKKyAgICBkZWYgYWRkX3BhcmFtKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAg
IiIiRXh0ZW5kcyB0aGUgY3VycmVudCBzZXQgb2YgcGFyYW1ldGVycy4KKworICAgICAgICBCZXdh
cmUgdGhhdCBpdCdsbCBvdmVyd3JpdGUgZXhpc3RpbmcgdmFsdWVzLiIiIgorICAgICAgICBzZWxm
Ll9wYXJhbXMudXBkYXRlKGt3YXJncykKKworCitCT1RTID0geworICAgICJndGstcmVsZWFzZS14
MTEiOiBRdWVyeSgKKyAgICAgICAgcGxhdGZvcm09IkdUSyIsIHN0eWxlPSJyZWxlYXNlIiwgdmVy
c2lvbl9uYW1lPSJYdmZiIiwgdmVyc2lvbj0iNS41LjAiCisgICAgKSwKKyAgICAiZ3RrLXJlbGVh
c2UtZ3RrNCI6IFF1ZXJ5KAorICAgICAgICBwbGF0Zm9ybT0iR1RLIiwgc3R5bGU9InJlbGVhc2Ui
LCB2ZXJzaW9uX25hbWU9Ilh2ZmIiLCB2ZXJzaW9uPSI0LjE5LjAiCisgICAgKSwKKyAgICAiZ3Rr
LXJlbGVhc2Utd2F5bGFuZCI6IFF1ZXJ5KAorICAgICAgICBwbGF0Zm9ybT0iR1RLIiwgc3R5bGU9
InJlbGVhc2UiLCB2ZXJzaW9uX25hbWU9IldheWxhbmQiCisgICAgKSwKKyAgICAid3BlLXJlbGVh
c2UiOiBRdWVyeShwbGF0Zm9ybT0iV1BFIiwgc3R5bGU9InJlbGVhc2UiKSwKKyAgICAid3BlLWRl
YnVnIjogUXVlcnkocGxhdGZvcm09IldQRSIsIHN0eWxlPSJyZWxlYXNlIiksCit9CisKKworZGVm
IGdldF9jb21taXRfY2FjaGVfZmlsZW5hbWUoKToKKyAgICAiIiJSZXR1cm5zIHRoZSBjYWNoZSBm
aWxlbmFtZSwgZW5zdXJpbmcgaXQncyBwYXJlbnQgZm9sZGVyIGV4aXN0cyIiIgorICAgIGFwcF9u
YW1lID0gIndlYmtpdC10ZXN0LXJlc3VsdHMiCisgICAgeGRnX2NvbmZpZ19ob21lID0gb3MuZ2V0
ZW52KCJYREdfQ0FDSEVfSE9NRSIpCisgICAgaWYgeGRnX2NvbmZpZ19ob21lOgorICAgICAgICBk
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oeGRnX2NvbmZpZ19ob21lLCBhcHBfbmFtZSkKKyAgICBl
bHNlOgorICAgICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2Vy
KCJ+IiksICIuY2FjaGUiLCBhcHBfbmFtZSkKKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRp
cmVjdG9yeSk6CisgICAgICAgIHBhdGhsaWIuUGF0aChkaXJlY3RvcnkpLm1rZGlyKHBhcmVudHM9
VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKworICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5
LCAiY29tbWl0cy5qc29uIikKKworCitkZWYgbG9hZF9jb21taXRfY2FjaGUoZm9yY2VfcmVzZXQ9
RmFsc2UpOgorICAgICIiIkxvYWRzIHRoZSBzdG9yZWQgY29tbWl0cywgZmV0Y2hpbmcgYWdhaW4g
aWYgbmVlZGVkLiIiIgorICAgIGZpbGVuYW1lID0gZ2V0X2NvbW1pdF9jYWNoZV9maWxlbmFtZSgp
CisgICAgaWYgZm9yY2VfcmVzZXQgb3Igbm90IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKyAg
ICAgICAgcmV0dXJuIHJlc2V0X2NvbW1pdF9jYWNoZSgpCisKKyAgICBsb2dnaW5nLmluZm8oIk9w
ZW5pbmcgY29tbWl0IGNhY2hlICVzIiwgZmlsZW5hbWUpCisgICAgd2l0aCBvcGVuKGZpbGVuYW1l
KSBhcyBoYW5kbGU6CisgICAgICAgIHJldHVybiBqc29uLmxvYWQoaGFuZGxlKQorCisKK2RlZiBy
ZXNldF9jb21taXRfY2FjaGUoKToKKyAgICAiIiJGZXRjaGVzIHRoZSBsYXN0IDUwMDAgY29tbWl0
cyBhbmQgc3RvcmUgdGhlaXIgaW5mbyB0byBiZSByZXVzZWQgaW4gbGF0ZXIgY2FsbHMuIiIiCisg
ICAgIyBUT0RPIEFwcGVuZCB0byBleGlzdGluZyBpbnN0ZWFkIG9mIHJlc2V0dGluZworICAgIGxv
Z2dpbmcuaW5mbygiUmVzZXR0aW5nIGNvbW1pdCBjYWNoZSIpCisgICAgbGltaXQgPSA1MDAwCisg
ICAgY29tbWFuZCA9ICIvYXBpL2NvbW1pdHMiCisKKyAgICBxdWVyeSA9IHsibGltaXQiOiBsaW1p
dCwgImJyYW5jaCI6ICJtYWluIn0KKworICAgIHVybCA9IHVybGpvaW4oQkFTRV9VUkwsIGNvbW1h
bmQpICsgIj8iICsgdXJsZW5jb2RlKHF1ZXJ5KQorCisgICAgZmlsZW5hbWUgPSBnZXRfY29tbWl0
X2NhY2hlX2ZpbGVuYW1lKCkKKyAgICBsb2dnaW5nLmluZm8oIkZldGNoaW5nIGNvbW1pdHMgZnJv
bSAlcyIsIHVybCkKKyAgICB3aXRoIHVybG9wZW4odXJsKSBhcyByZXNwb25zZToKKyAgICAgICAg
cmF3X2RhdGEgPSBqc29uLmxvYWQocmVzcG9uc2UpCisKKyAgICB1dWlkcyA9IHt9CisgICAgZm9y
IGNvbW1pdCBpbiByYXdfZGF0YToKKyAgICAgICAgIyBVc3VhbGx5IG9yZGVyIGlzIHplcm8sIGJ1
dCBsZXQncyBhZGQgaXQgYW55d2F5IGFzIGl0J3MgdGhlIGFjdHVhbAorICAgICAgICAjIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBjb21taXQgVVVJRCBpbiB0aGUgcHlyZXN1bHRzZGIKKyAgICAgICAg
dXVpZCA9IHN0cihjb21taXRbInRpbWVzdGFtcCJdICogMTAwICsgY29tbWl0WyJvcmRlciJdKQor
ICAgICAgICBjb21taXRbInV1aWQiXSA9IHV1aWQKKyAgICAgICAgdXVpZHNbdXVpZF0gPSBjb21t
aXQKKworICAgIGxvZ2dpbmcuaW5mbygiU2F2aW5nIGNvbW1pdHMgdG8gJXMiLCBmaWxlbmFtZSkK
KyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgb3V0cHV0OgorICAgICAgICBsb2dnaW5n
LmluZm8oIlNhdmluZyBkb3dubG9hZGVkIGNhY2hlIikKKyAgICAgICAganNvbi5kdW1wKHV1aWRz
LCBvdXRwdXQpCisKKyAgICByZXR1cm4gdXVpZHMKKworCitkZWYgbGFzdF9ydW4oYXJncyk6Cisg
ICAgIiIiU2hvd3MgZGF0YSBhYm91dCB0aGUgbGFzdCB0ZXN0IHJ1biByZWdpc3RlcmVkIGZvciB0
aGUgc2VsZWN0ZWQgYm90IiIiCisgICAgZW5kcG9pbnQgPSAiYXBpL3Jlc3VsdHMvbGF5b3V0LXRl
c3RzIgorICAgIGlmIGFyZ3Mub25seV9jaGFuZ2VzOgorICAgICAgICBsb2dnaW5nLmluZm8oIi0t
b25seS1jaGFuZ2VzIGlnbm9yZWQgaW4gdGhpcyBjb21tYW5kIikKKyAgICBpZiBhcmdzLm9ubHlf
dW5leHBlY3RlZDoKKyAgICAgICAgbG9nZ2luZy5pbmZvKCItLW9ubHktdW5leHBlY3RlZCBpZ25v
cmVkIGluIHRoaXMgY29tbWFuZCIpCisKKyAgICBjb25maWd1cmF0aW9uID0gQk9UU1thcmdzLmJv
dF0KKyAgICBjb25maWd1cmF0aW9uLmFkZF9wYXJhbShsaW1pdD0xKQorICAgIHF1ZXJ5ID0gY29u
ZmlndXJhdGlvbi5hc19xdWVyeV9zdHJpbmcoKQorCisgICAgdXJsID0gdXJsam9pbihCQVNFX1VS
TCwgZW5kcG9pbnQpICsgIj8iICsgcXVlcnkKKworICAgIGxvZ2dpbmcuaW5mbygiTG9hZGluZyB0
ZXN0IGRhdGEgZnJvbSAlcyIsIHVybCkKKyAgICB3aXRoIHVybG9wZW4odXJsKSBhcyByZXNwb25z
ZToKKyAgICAgICAgZGF0YSA9IGpzb24ubG9hZChyZXNwb25zZSkKKyAgICBwcmludChqc29uLmR1
bXBzKGRhdGEsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCwgc2VwYXJhdG9ycz0oIiwiLCAiOiAi
KSkpCisKKworZGVmIHJlcG9ydF90ZXN0KGFyZ3MpOgorICAgICIiIlJlcG9ydHMgdGhlIHRlc3Qg
aGlzdG9yeSBmb3IgYSBzaW5nbGUgdGVzdGNhc2UgaW4gYSBzaW5nbGUgY29uZmlndXJhdGlvbiIi
IgorICAgIGVuZHBvaW50ID0gImFwaS9yZXN1bHRzL2xheW91dC10ZXN0cyIKKyAgICBjb25maWd1
cmF0aW9uID0gQk9UU1thcmdzLmJvdF0KKyAgICBpZiBhcmdzLmxpbWl0ID4gMDoKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5hZGRfcGFyYW0obGltaXQ9YXJncy5saW1pdCkKKyAgICBxdWVyeSA9IGNv
bmZpZ3VyYXRpb24uYXNfcXVlcnlfc3RyaW5nKCkKKworICAgIHVybCA9IHVybGpvaW4oQkFTRV9V
UkwsIGVuZHBvaW50ICsgIi8iICsgYXJncy50ZXN0KSArICI/IiArIHF1ZXJ5CisKKyAgICBsb2dn
aW5nLmluZm8oIkxvYWRpbmcgdGVzdCBkYXRhIGZyb20gJXMiLCB1cmwpCisgICAgd2l0aCB1cmxv
cGVuKHVybCkgYXMgcmVzcG9uc2U6CisgICAgICAgIGRhdGEgPSBqc29uLmxvYWQocmVzcG9uc2Up
WzBdCisKKyAgICByZXN1bHRzID0gc29ydGVkKGRhdGFbInJlc3VsdHMiXSwga2V5PWxhbWJkYSBy
ZXN1bHQ6IHJlc3VsdFsidXVpZCJdKQorCisgICAgY29tbWl0cyA9IGxvYWRfY29tbWl0X2NhY2hl
KGZvcmNlX3Jlc2V0PWFyZ3MucmVzZXRfY2FjaGUpCisgICAgbG9nZ2luZy5pbmZvKCJGb3VuZCAl
ZCBjYWNoZWQgY29tbWl0cyIsIGxlbihjb21taXRzKSkKKworICAgIHByZXZpb3VzID0gTm9uZQor
CisgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICBhY3R1YWwgPSByZXN1bHRbImFj
dHVhbCJdCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0WyJleHBlY3RlZCJdCisgICAgICAgIHN0
YXJ0X3RpbWUgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHJlc3VsdFsic3RhcnRfdGltZSJdKQor
ICAgICAgICB1dWlkID0gcmVzdWx0WyJ1dWlkIl0KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBjb21taXQgPSBjb21taXRzW3N0cih1dWlkKV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgor
ICAgICAgICAgICAgcHJpbnQoIkNvdWxkIG5vdCBmaW5kIGNvbW1pdCB3aXRoIHV1aWQge30iLmZv
cm1hdCh1dWlkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgYXJncy5vbmx5
X2NoYW5nZXM6CisgICAgICAgICAgICBpZiBwcmV2aW91cyA9PSBhY3R1YWw6CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgZWxpZiBhcmdzLm9ubHlfdW5leHBlY3RlZDoKKyAgICAg
ICAgICAgIGlmIGFjdHVhbCA9PSBleHBlY3RlZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgIG1zZyA9ICJjb21taXQge30gZXhwZWN0ZWQge30gYWN0dWFsIHt9IHRpbWUge30i
LmZvcm1hdCgKKyAgICAgICAgICAgIGNvbW1pdFsiaWRlbnRpZmllciJdLCBleHBlY3RlZCwgYWN0
dWFsLCBzdGFydF90aW1lCisgICAgICAgICkKKworICAgICAgICBpZiBhcmdzLmNvbG9yOgorICAg
ICAgICAgICAgcHJpbnQoZGVjb3JhdGUobXNnLCBleHBlY3RlZCwgYWN0dWFsKSkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHByaW50KG1zZykKKyAgICAgICAgcHJldmlvdXMgPSBhY3R1YWwK
KworCitkZWYgcGFyc2VfYXJncygpOgorICAgICIiIlBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVu
dHMgYW5kIHN3aXRjaGVzIiIiCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIo
CisgICAgICAgIGRlc2NyaXB0aW9uPXRleHR3cmFwLmRlZGVudCgKKyAgICAgICAgICAgICIiIgor
ICAgICAgICAgICAgICAgIENvbW1hbmQgbGluZSB0b29sIHRvIHF1ZXJ5IGh0dHBzOi8vcmVzdWx0
cy53ZWJraXQub3JnIGZvciB0ZXN0IGhpc3RvcnkuCisKKyAgICAgICAgICAgICAgICBQYXNzaW5n
IGEgdGVzdCBjYXNlIGluIHRoZSBjb21tYW5kIGxpbmUgd2lsbCBzaG93IG9uZSBlbnRyeSBmb3Ig
ZWFjaAorICAgICAgICAgICAgICAgIHRlc3QgcnVuIHJlZ2lzdGVyZWQsIGFsb25nc2lkZSBjb21t
aXQgaW5mb3JtYXRpb24sIGV4cGVjdGVkIGFuZCBhY3R1YWwgb3V0Y29tZXMsCisgICAgICAgICAg
ICAgICAgYW5kIHRpbWVzdGFtcCBvZiB0aGUgcnVuLiBGb3IgZXhhbXBsZToKKworICAgICAgICAg
ICAgICAgICQgd2stdGVzdC1yZXN1bHQgLS1ib3Qgd3BlLXJlbGVhc2UgaWV0ZXN0Y2VudGVyL2Nz
czMvdGV4dC90ZXh0c2hhZG93LTAwMS5odG0gLS1saW1pdD01CisgICAgICAgICAgICAgICAgY29t
bWl0IDI0NDc4MUBtYWluIGV4cGVjdGVkIFBBU1MgYWN0dWFsIFRFWFQgdGltZSAyMDIxLTEyLTAy
IDE4OjAyOjEzCisgICAgICAgICAgICAgICAgY29tbWl0IDI0NDc4N0BtYWluIGV4cGVjdGVkIFBB
U1MgYWN0dWFsIFRFWFQgdGltZSAyMDIxLTEyLTAyIDE5OjQzOjEwCisgICAgICAgICAgICAgICAg
Y29tbWl0IDI0NDc5NkBtYWluIGV4cGVjdGVkIFBBU1MgYWN0dWFsIFRFWFQgdGltZSAyMDIxLTEy
LTAyIDIwOjQxOjUyCisgICAgICAgICAgICAgICAgY29tbWl0IDI0NDc5N0BtYWluIGV4cGVjdGVk
IFBBU1MgYWN0dWFsIFRFWFQgdGltZSAyMDIxLTEyLTAyIDIxOjQwOjI5CisgICAgICAgICAgICAg
ICAgY29tbWl0IDI0NDgwM0BtYWluIGV4cGVjdGVkIFBBU1MgYWN0dWFsIFRFWFQgdGltZSAyMDIx
LTEyLTAyIDIzOjEzOjE5CisKKyAgICAgICAgICAgICAgICBUbyBhdm9pZCBxdWVyeWluZyB0aGUg
Y29tbWl0IGRhdGEgYXQgZWFjaCBpbnZvY2F0aW9uLCB0aGUgbGFzdCA1MDAwIGNvbW1pdHMKKyAg
ICAgICAgICAgICAgICBhcmUgY2FjaGVkIChieSBkZWZhdWx0LCB0byAkWERHX0NBQ0hFX0hPTUUv
d2stZ2FyZGVuaW5nLXRvb2xzL2NvbW1pdHMuanNvbikuCisKKyAgICAgICAgICAgICAgICBDdXJy
ZW50bHksIG9ubHkgR0xJQi1iYXNlZCBib3RzIGFuZCBsYXlvdXQtdGVzdCBzdWl0ZSBhcmUgc3Vw
cG9ydGVkLgorICAgICAgICAgICAgIiIiCisgICAgICAgICksCisgICAgICAgIGZvcm1hdHRlcl9j
bGFzcz1hcmdwYXJzZS5SYXdUZXh0SGVscEZvcm1hdHRlciwKKyAgICApCisKKyAgICAjIFRPRE8g
YWRkIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gc3BlY2lmeSBtYW51YWxseSB0aGUgY29uZmln
dXJhdGlvbiBkYXRhCisgICAgIyBJdCB3b3VsZCBhbGxvdyB1c2luZyB0aGlzIHNjcmlwdCB3aXRo
IG90aGVyIHBvcnRzCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1iIiwgIi0t
Ym90IiwgY2hvaWNlcz1CT1RTLmtleXMoKSwgaGVscD0iQm90IHRvIHF1ZXJ5IiwgcmVxdWlyZWQ9
VHJ1ZQorICAgICkKKworICAgICMgQ29tbW9uIG9wdGlvbnMKKyAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJWZXJib3Nl
IG91dHB1dCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi1yIiwKKyAgICAg
ICAgIi0tcmVzZXQtY2FjaGUiLAorICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAg
ICBoZWxwPSJSZXNldCB0aGUgY29tbWl0IGNhY2hlIGlmIG5lZWRlZCIsCisgICAgKQorICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItYyIsCisgICAgICAgICItLWNvbG9yIiwKKyAg
ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0iVXNlIGNvbG9ycyB0byBo
aWdobGlnaHQgdW5leHBlY3RlZCByZXN1bHRzIiwKKyAgICApCisKKyAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAorICAgICAgICAiLS1sYXN0LXJ1biIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCisgICAgICAgIGhlbHA9IlNob3cgc3RhdHVzIG9mIHRoZSBsYXN0IHJlZ2lzdGVyZWQgcnVu
IGFuZCBleGl0LiIsCisgICAgKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAg
Ii0tbGltaXQiLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVmYXVsdD0xMDAsCisgICAg
ICAgIGhlbHA9IiIiTGltaXQgdGhlIG51bWJlciBvZiByZXN1bHRzLiBEZWZhdWx0cyB0byAxMDAs
IHVzZSAtMSB0byBhc2sgdGhlIHNlcnZlciBmb3IKKyAgICAgICAgICAgICAgICBpdHMgZGVmYXVs
dCB2YWx1ZS4gVXNlIHRvZ2V0aGVyIHdpdGggLS10ZXN0IiIiLAorICAgICkKKworICAgICMgT3V0
cHV0IG9wdGlvbnMKKyAgICBvdXRwdXRfZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1
c2l2ZV9ncm91cCgpCisgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIi0t
b25seS1jaGFuZ2VzIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVs
cD0iRGlzcGxheSBvbmx5IHJldmlzaW9ucyB3aGVyZSB0aGUgc3RhdGUgY2hhbmdlZC4gVXNlIHdp
dGggLS10ZXN0IiwKKyAgICApCisgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgIi0tb25seS11bmV4cGVjdGVkIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAg
ICAgICAgaGVscD0iRGlzcGxheSBvbmx5IHVuZXhwZWN0ZWQgcmVzdWx0cy4gVXNlIHdpdGggLS10
ZXN0IiwKKyAgICApCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAidGVzdCIs
IGhlbHA9IlRlc3QgY2FzZSB0byBiZSBzZWFyY2hlZCIsIG5hcmdzPSI/IiwgZGVmYXVsdD1Ob25l
CisgICAgKQorCisgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkKKworCitkZWYgbWFpbigp
OgorICAgICIiIk1haW4gZW50cnkgcG9pbnQiIiIKKyAgICBhcmdzID0gcGFyc2VfYXJncygpCisK
KyAgICBpZiBhcmdzLnZlcmJvc2U6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9
bG9nZ2luZy5ERUJVRykKKworICAgIGlmIGFyZ3MubGFzdF9ydW46CisgICAgICAgIGxhc3RfcnVu
KGFyZ3MpCisgICAgZWxpZiBhcmdzLnRlc3Q6CisgICAgICAgIHJlcG9ydF90ZXN0KGFyZ3MpCisg
ICAgZWxzZToKKyAgICAgICAgcHJpbnQoIk5vIHRlc3QgY2FzZSBwcm92aWRlZC4gRGlkIHlvdSBm
b3JnZXQgdG8gcGFzcyBpdD8iKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAg
bWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452707</attachid>
            <date>2022-02-20 20:11:27 -0800</date>
            <delta_ts>2022-03-06 19:24:23 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-233800-20220221011125.patch</filename>
            <type>text/plain</type>
            <size>13904</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTAxYmUwZTZjNDY2MGQ0OGQyYjVlMGQ4ZDIwNzA4MTMx
M2EwOTZlZi4uYjAwY2JmYTU3ZmM1MmYxYWEzMGZhZmI0MzUwNzNjOGJkZTdhZTlkYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIyLTAxLTI5ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtUb29sc10gQWRkIHNjcmlwdCB0byBxdWVyeSByZXN1bHRzIGRhdGFiYXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvbW1pdCBhZGRz
IGEgc2NyaXB0IHRvIHF1ZXJ5IGh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnIGZvciB0aGUKKyAg
ICAgICAgaGlzdG9yeSBvZiBhIHRlc3RjYXNlIGZvciBhIGdpdmVuIGJvdC9jb25maWcuIEl0IGlu
Y2x1ZGVzIGEKKyAgICAgICAgYC0tb25seS1jaGFuZ2VzYCBzd2l0Y2ggdG8gc2hvdyBvbmx5IHJl
dmlzaW9ucyB3aGVuIHRoZSBhY3R1YWwgY2hhbmdlZAorICAgICAgICBmcm9tIHRoZSBwcmV2aW91
cyBvbmUgKHVzZWZ1bCB0byBjaGVjayB3aGVuIGEgdGVzdCBzdGFydGVkIGZhaWxpbmcpLgorCisg
ICAgICAgIEZvciBub3cgaXQgc3VwcG9ydHMgb25seSBsYXlvdXQtdGVzdHMgYW5kIGhhcyBHVEsv
V1BFIGJvdHMgcHJlZGVmaW5lZCwKKyAgICAgICAgYWx0aG91Z2ggZnVsbCBjb25maWd1cmF0aW9u
cyAodGhlIHF1ZXJ5IHN0cmluZyBmb3IgcmVzdWx0cy53ZWJraXQub3JnKQorICAgICAgICBjYW4g
YmUgdXNlZCB0byBhY2Nlc3Mgb3RoZXIgYm90cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
LXRlc3QtcmVzdWx0czogQWRkZWQuCisKIDIwMjItMDItMjAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CiAKICAgICAgICAgT3JpZ2luIGZpbGUgbWF5IG5vdCBiZSBjcmVhdGVkIGFm
dGVyIG1pZ3JhdGluZyBkYXRhIHRvIGdlbmVyYWwgc3RvcmFnZSBkaXJlY3RvcnkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0LXRlc3QtcmVzdWx0cyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0LXRlc3QtcmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTEzMzdhNzE4OWQ3NzYxOWMxYTQ1NGU4MTNk
ZjAxZDFkNGQ0OTBjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXQtdGVz
dC1yZXN1bHRzCkBAIC0wLDAgKzEsMzg0IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisjCisj
IENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisj
IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZQorIyBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9v
ciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjIHB5bGludDogZGlzYWJsZT1taXNz
aW5nLWRvY3N0cmluZyxpbnZhbGlkLW5hbWUKKworIiIiQ29tbWFuZC1saW5lIGludGVyZmFjZSB0
byB0aGUgV2Via2l0IFJlc3VsdHMgRGF0YWJhc2UiIiIKKworaW1wb3J0IGFyZ3BhcnNlCitmcm9t
IGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQoraW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCitp
bXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKK2Zy
b20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxlbmNvZGUsIHBhcnNlX3FzCitmcm9t
IHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCitmcm9tIHVybGxpYi5lcnJvciBpbXBvcnQg
SFRUUEVycm9yCisKK0JBU0VfVVJMID0gImh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLyIKKwor
CitkZWYgcmVkKG1zZyk6CisgICAgIiIiUmV0dXJucyBhIHNoZWxsLWF3YXJlIHJlZCBzdHJpbmci
IiIKKyAgICByZXR1cm4gIlwwMzNbOTFtIiArIG1zZyArICJcMDMzWzBtIgorCisKK2RlZiBncmVl
bihtc2cpOgorICAgICIiIlJldHVybnMgYSBzaGVsbC1hd2FyZSBncmVlbiBzdHJpbmciIiIKKyAg
ICByZXR1cm4gIlwwMzNbOTJtIiArIG1zZyArICJcMDMzWzBtIgorCisKKyMgUm91Z2hseSBvcmRl
cmVkIGZyb20gdGhlIG1vc3QgZGVzaXJlZCB0byB0aGUgbW9zdCB1bndhbnRlZC4KK09VVENPTUVT
ID0gWworICAgICJQQVNTIiwKKyAgICAiVEVYVCIsCisgICAgIklNQUdFIiwKKyAgICAiU0tJUCIs
CisgICAgIkZBSUwiLAorICAgICJFUlJPUiIsCisgICAgIlRJTUVPVVQiLCAgIyBQdXQgdGltZW91
dCBhcyBtb3JlIHNldmVyZSB0aGFuIEVSUk9SIGFzIHRoZXkgb2Z0ZW4gYXJlIGhhcmRlciB0byBk
ZWJ1ZworICAgICJDUkFTSCIsCitdCisKKworZGVmIGlzX2ltcHJvdmVtZW50KGJhc2VsaW5lLCBj
dXJyZW50KToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgb3V0Y29tZSBpcyBt
b3JlIGZhdm91cmFibGUuIiIiCisgICAgcmV0dXJuIE9VVENPTUVTLmluZGV4KGJhc2VsaW5lKSA+
IE9VVENPTUVTLmluZGV4KGN1cnJlbnQpCisKKworZGVmIGlzX3JlZ3Jlc3Npb24oYmFzZWxpbmUs
IGN1cnJlbnQpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvdXRjb21lIGRv
d25ncmFkZWQgdGhlIHJlc3VsdC4iIiIKKyAgICByZXR1cm4gT1VUQ09NRVMuaW5kZXgoYmFzZWxp
bmUpIDwgT1VUQ09NRVMuaW5kZXgoY3VycmVudCkKKworCitkZWYgZGVjb3JhdGUobXNnLCBiYXNl
bGluZSwgY3VycmVudCk6CisgICAgIiIiQ29sb3JzIHRoZSBtZXNzYWdlIGlmIHRoZSBzdGF0dXMg
Y2hhbmdlIHJlcHJlc2VudHMgYW4gaW1wcm92ZW1lbnQgb3IgcmVncmVzc2lvbi4iIiIKKyAgICBp
ZiBpc19pbXByb3ZlbWVudChiYXNlbGluZSwgY3VycmVudCk6CisgICAgICAgIG1zZyA9IGdyZWVu
KG1zZykKKyAgICBlbGlmIGlzX3JlZ3Jlc3Npb24oYmFzZWxpbmUsIGN1cnJlbnQpOgorICAgICAg
ICBtc2cgPSByZWQobXNnKQorICAgIHJldHVybiBtc2cKKworCitjbGFzcyBRdWVyeToKKyAgICAi
IiJXcmFwcGVyIGFyb3VuZCB0aGUgbW9zdCBjb21tb24gcXVlcnkgcGFyYW1ldGVycyBmb3IgYSBn
aXZlbiByZXF1ZXN0IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAg
ICAgICAiIiJKdXN0IHN0b3JlcyB0aGUgcGFzc2VkIGt3YXJncyBhcyBwYXJhbWV0ZXJzIHRvIGJl
IGZvcndhcmRlZCB0byB0aGUgYWN0dWFsIHF1ZXJ5IiIiCisgICAgICAgIHNlbGYuX3BhcmFtcyA9
IGt3YXJncy5jb3B5KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX3F1ZXJ5X3N0
cmluZyhjbHMsIHF1ZXJ5X3N0cik6CisgICAgICAgIGZpZWxkcyA9IHBhcnNlX3FzKHF1ZXJ5X3N0
cikKKyAgICAgICAgIyBwYXJzZV9xcyBmb3JjZXMgdGhlIHZhbHVlcyB0byBiZSBsaXN0cywgZXZl
biB3aGVuIHRoZXkgYXJlIHNpbmdsZS12YWx1ZWQKKyAgICAgICAgZm9yIGssIHYgaW4gZmllbGRz
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBsZW4odikgPT0gMToKKyAgICAgICAgICAgICAgICBm
aWVsZHNba10gPSB2WzBdCisgICAgICAgIHJldHVybiBjbHMoKipmaWVsZHMpCisKKyAgICBkZWYg
YXNfcXVlcnlfc3RyaW5nKHNlbGYpOgorICAgICAgICAiIiJFc2NhcGUgYW5kIGJ1aWxkIHRoZSBh
Y3R1YWwgcXVlcnkgc3RyaW5nIiIiCisgICAgICAgIHJldHVybiB1cmxlbmNvZGUoc2VsZi5fcGFy
YW1zKQorCisgICAgZGVmIGFkZF9wYXJhbShzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICIiIkV4
dGVuZHMgdGhlIGN1cnJlbnQgc2V0IG9mIHBhcmFtZXRlcnMuCisKKyAgICAgICAgQmV3YXJlIHRo
YXQgaXQnbGwgb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlcy4iIiIKKyAgICAgICAgc2VsZi5fcGFy
YW1zLnVwZGF0ZShrd2FyZ3MpCisKKworQk9UUyA9IHsKKyAgICAiZ3RrLXJlbGVhc2UteDExIjog
UXVlcnkoCisgICAgICAgIHBsYXRmb3JtPSJHVEsiLCBzdHlsZT0icmVsZWFzZSIsIHZlcnNpb25f
bmFtZT0iWHZmYiIsIHZlcnNpb249IjUuNS4wIgorICAgICksCisgICAgImd0ay1yZWxlYXNlLWd0
azQiOiBRdWVyeSgKKyAgICAgICAgcGxhdGZvcm09IkdUSyIsIHN0eWxlPSJyZWxlYXNlIiwgdmVy
c2lvbl9uYW1lPSJYdmZiIiwgdmVyc2lvbj0iNC4xOS4wIgorICAgICksCisgICAgImd0ay1yZWxl
YXNlLXdheWxhbmQiOiBRdWVyeSgKKyAgICAgICAgcGxhdGZvcm09IkdUSyIsIHN0eWxlPSJyZWxl
YXNlIiwgdmVyc2lvbl9uYW1lPSJXYXlsYW5kIgorICAgICksCisgICAgIndwZS1yZWxlYXNlIjog
UXVlcnkocGxhdGZvcm09IldQRSIsIHN0eWxlPSJyZWxlYXNlIiksCisgICAgIndwZS1kZWJ1ZyI6
IFF1ZXJ5KHBsYXRmb3JtPSJXUEUiLCBzdHlsZT0icmVsZWFzZSIpLAorfQorCisKK2RlZiBnZXRf
Y29tbWl0X2NhY2hlX2ZpbGVuYW1lKCk6CisgICAgIiIiUmV0dXJucyB0aGUgY2FjaGUgZmlsZW5h
bWUsIGVuc3VyaW5nIGl0J3MgcGFyZW50IGZvbGRlciBleGlzdHMiIiIKKyAgICBhcHBfbmFtZSA9
ICJ3ZWJraXQtdGVzdC1yZXN1bHRzIgorICAgIHhkZ19jb25maWdfaG9tZSA9IG9zLmdldGVudigi
WERHX0NBQ0hFX0hPTUUiKQorICAgIGlmIHhkZ19jb25maWdfaG9tZToKKyAgICAgICAgZGlyZWN0
b3J5ID0gb3MucGF0aC5qb2luKHhkZ19jb25maWdfaG9tZSwgYXBwX25hbWUpCisgICAgZWxzZToK
KyAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZXhwYW5kdXNlcigifiIp
LCAiLmNhY2hlIiwgYXBwX25hbWUpCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3Rv
cnkpOgorICAgICAgICBwYXRobGliLlBhdGgoZGlyZWN0b3J5KS5ta2RpcihwYXJlbnRzPVRydWUs
IGV4aXN0X29rPVRydWUpCisKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgImNv
bW1pdHMuanNvbiIpCisKKworZGVmIGxvYWRfY29tbWl0X2NhY2hlKGZvcmNlX3Jlc2V0PUZhbHNl
KToKKyAgICAiIiJMb2FkcyB0aGUgc3RvcmVkIGNvbW1pdHMsIGZldGNoaW5nIGFnYWluIGlmIG5l
ZWRlZC4iIiIKKyAgICBmaWxlbmFtZSA9IGdldF9jb21taXRfY2FjaGVfZmlsZW5hbWUoKQorICAg
IGlmIGZvcmNlX3Jlc2V0IG9yIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CisgICAgICAg
IHJldHVybiByZXNldF9jb21taXRfY2FjaGUoKQorCisgICAgbG9nZ2luZy5pbmZvKCJPcGVuaW5n
IGNvbW1pdCBjYWNoZSAlcyIsIGZpbGVuYW1lKQorICAgIHdpdGggb3BlbihmaWxlbmFtZSwgZW5j
b2Rpbmc9InV0Zi04IikgYXMgaGFuZGxlOgorICAgICAgICByZXR1cm4ganNvbi5sb2FkKGhhbmRs
ZSkKKworCitkZWYgcmVzZXRfY29tbWl0X2NhY2hlKCk6CisgICAgIiIiRmV0Y2hlcyB0aGUgbGFz
dCA1MDAwIGNvbW1pdHMgYW5kIHN0b3JlIHRoZWlyIGluZm8gdG8gYmUgcmV1c2VkIGluIGxhdGVy
IGNhbGxzLiIiIgorICAgICMgVE9ETyBBcHBlbmQgdG8gZXhpc3RpbmcgaW5zdGVhZCBvZiByZXNl
dHRpbmcKKyAgICBsb2dnaW5nLmluZm8oIlJlc2V0dGluZyBjb21taXQgY2FjaGUiKQorICAgIGxp
bWl0ID0gNTAwMAorICAgIGNvbW1hbmQgPSAiL2FwaS9jb21taXRzIgorCisgICAgcXVlcnkgPSB7
ImxpbWl0IjogbGltaXQsICJicmFuY2giOiAibWFpbiJ9CisKKyAgICB1cmwgPSB1cmxqb2luKEJB
U0VfVVJMLCBjb21tYW5kKSArICI/IiArIHVybGVuY29kZShxdWVyeSkKKworICAgIGZpbGVuYW1l
ID0gZ2V0X2NvbW1pdF9jYWNoZV9maWxlbmFtZSgpCisgICAgbG9nZ2luZy5pbmZvKCJGZXRjaGlu
ZyBjb21taXRzIGZyb20gJXMiLCB1cmwpCisgICAgd2l0aCB1cmxvcGVuKHVybCkgYXMgcmVzcG9u
c2U6CisgICAgICAgIHJhd19kYXRhID0ganNvbi5sb2FkKHJlc3BvbnNlKQorCisgICAgdXVpZHMg
PSB7fQorICAgIGZvciBjb21taXQgaW4gcmF3X2RhdGE6CisgICAgICAgICMgT3JkZXIgaXMgdXN1
YWxseSB6ZXJvIGZvciBzaW5nbGUgY29tbWl0cyBwdXNoZWQgdG8gdGhlIHJlcG8uIEZvciBleGFt
cGxlLAorICAgICAgICAjIGNvbW1pdHMgaW4gU1ZOLiBXaGVuIG1vdmluZyB0byBnaXQsIGJyYW5j
aHMgd2l0aCBtdWx0aXBsZSBjb21taXRzIHdpbGwKKyAgICAgICAgIyBtYWtlIHVzZSBvZiBpdC4K
KyAgICAgICAgdXVpZCA9IHN0cihjb21taXRbInRpbWVzdGFtcCJdICogMTAwICsgY29tbWl0WyJv
cmRlciJdKQorICAgICAgICBjb21taXRbInV1aWQiXSA9IHV1aWQKKyAgICAgICAgdXVpZHNbdXVp
ZF0gPSBjb21taXQKKworICAgIGxvZ2dpbmcuaW5mbygiU2F2aW5nIGNvbW1pdHMgdG8gJXMiLCBm
aWxlbmFtZSkKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IiwgZW5jb2Rpbmc9InV0Zi04Iikg
YXMgb3V0cHV0OgorICAgICAgICBsb2dnaW5nLmluZm8oIlNhdmluZyBkb3dubG9hZGVkIGNhY2hl
IikKKyAgICAgICAganNvbi5kdW1wKHV1aWRzLCBvdXRwdXQpCisKKyAgICByZXR1cm4gdXVpZHMK
KworCitkZWYgbGFzdF9ydW4oYXJncyk6CisgICAgIiIiU2hvd3MgZGF0YSBhYm91dCB0aGUgbGFz
dCB0ZXN0IHJ1biByZWdpc3RlcmVkIGZvciB0aGUgc2VsZWN0ZWQgYm90IiIiCisgICAgZW5kcG9p
bnQgPSAiYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzIgorICAgIGlmIGFyZ3Mub25seV9jaGFuZ2Vz
OgorICAgICAgICBsb2dnaW5nLmluZm8oIi0tb25seS1jaGFuZ2VzIGlnbm9yZWQgaW4gdGhpcyBj
b21tYW5kIikKKyAgICBpZiBhcmdzLm9ubHlfdW5leHBlY3RlZDoKKyAgICAgICAgbG9nZ2luZy5p
bmZvKCItLW9ubHktdW5leHBlY3RlZCBpZ25vcmVkIGluIHRoaXMgY29tbWFuZCIpCisKKyAgICBj
b25maWd1cmF0aW9uID0gQk9UUy5nZXQoYXJncy5ib3QsIFF1ZXJ5LmZyb21fcXVlcnlfc3RyaW5n
KGFyZ3MuYm90KSkKKyAgICBjb25maWd1cmF0aW9uLmFkZF9wYXJhbShsaW1pdD0xKQorICAgIHF1
ZXJ5ID0gY29uZmlndXJhdGlvbi5hc19xdWVyeV9zdHJpbmcoKQorCisgICAgdXJsID0gdXJsam9p
bihCQVNFX1VSTCwgZW5kcG9pbnQpICsgIj8iICsgcXVlcnkKKworICAgIGxvZ2dpbmcuaW5mbygi
TG9hZGluZyB0ZXN0IGRhdGEgZnJvbSAlcyIsIHVybCkKKyAgICB0cnk6CisgICAgICAgIHdpdGgg
dXJsb3Blbih1cmwpIGFzIHJlc3BvbnNlOgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChy
ZXNwb25zZSkKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhkYXRhLCBzb3J0X2tleXM9VHJ1ZSwg
aW5kZW50PTQsIHNlcGFyYXRvcnM9KCIsIiwgIjogIikpKQorICAgIGV4Y2VwdCAoSFRUUEVycm9y
LCBqc29uLkpTT05EZWNvZGVFcnJvcikgYXMgZToKKyAgICAgICAgcHJpbnQoZSkKKyAgICAgICAg
cmV0dXJuIDEKKworICAgIHJldHVybiAwCisKKworZGVmIGdldF9sYXRlc3RfY29tbWl0KGNvbW1p
dHMpOgorICAgICIiIlJldHVybnMgdGhlIG5ld2VzdCBjb21taXQgZnJvbSBhIHNldCBvZiBjb21t
aXRzIiIiCisKKyAgICBsYXRlc3QgPSBtYXgoY29tbWl0cy52YWx1ZXMoKSwga2V5PWxhbWJkYSB4
OiB4WyJ1dWlkIl0pCisKKyAgICByZXR1cm4gbGF0ZXN0WyJpZGVudGlmaWVyIl0sIGxhdGVzdFsi
dGltZXN0YW1wIl0KKworCitkZWYgcmVwb3J0X3Rlc3QoYXJncyk6CisgICAgIiIiUmVwb3J0cyB0
aGUgdGVzdCBoaXN0b3J5IGZvciBhIHNpbmdsZSB0ZXN0Y2FzZSBpbiBhIHNpbmdsZSBjb25maWd1
cmF0aW9uIiIiCisgICAgZW5kcG9pbnQgPSAiYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzIgorICAg
IGNvbmZpZ3VyYXRpb24gPSBCT1RTLmdldChhcmdzLmJvdCwgUXVlcnkuZnJvbV9xdWVyeV9zdHJp
bmcoYXJncy5ib3QpKQorICAgIGlmIGFyZ3MubGltaXQgPiAwOgorICAgICAgICBjb25maWd1cmF0
aW9uLmFkZF9wYXJhbShsaW1pdD1hcmdzLmxpbWl0KQorICAgIHF1ZXJ5ID0gY29uZmlndXJhdGlv
bi5hc19xdWVyeV9zdHJpbmcoKQorCisgICAgdXJsID0gdXJsam9pbihCQVNFX1VSTCwgZW5kcG9p
bnQgKyAiLyIgKyBhcmdzLnRlc3QpICsgIj8iICsgcXVlcnkKKworICAgIGxvZ2dpbmcuaW5mbygi
TG9hZGluZyB0ZXN0IGRhdGEgZnJvbSAlcyIsIHVybCkKKyAgICB0cnk6CisgICAgICAgIHdpdGgg
dXJsb3Blbih1cmwpIGFzIHJlc3BvbnNlOgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChy
ZXNwb25zZSlbMF0KKyAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgbG9nZ2luZy5lcnJv
cigiTm8gcmVzdWx0cyByZXR1cm5lZC4gRXhpdGluZy4iKQorICAgICAgICByZXR1cm4gMQorCisg
ICAgcmVzdWx0cyA9IHNvcnRlZChkYXRhWyJyZXN1bHRzIl0sIGtleT1sYW1iZGEgcmVzdWx0OiBy
ZXN1bHRbInV1aWQiXSkKKworICAgIGNvbW1pdHMgPSBsb2FkX2NvbW1pdF9jYWNoZShmb3JjZV9y
ZXNldD1hcmdzLnJlc2V0X2NhY2hlKQorICAgIGxvZ2dpbmcuaW5mbygiRm91bmQgJWQgY2FjaGVk
IGNvbW1pdHMiLCBsZW4oY29tbWl0cykpCisKKyAgICBwcmV2aW91cyA9IE5vbmUKKworICAgIG1h
dGNoZWQgPSBGYWxzZQorCisgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICBhY3R1
YWwgPSByZXN1bHRbImFjdHVhbCJdCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0WyJleHBlY3Rl
ZCJdCisgICAgICAgIHN0YXJ0X3RpbWUgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHJlc3VsdFsi
c3RhcnRfdGltZSJdKQorICAgICAgICB1dWlkID0gcmVzdWx0WyJ1dWlkIl0KKworICAgICAgICB0
cnk6CisgICAgICAgICAgICBjb21taXQgPSBjb21taXRzW3N0cih1dWlkKV0KKyAgICAgICAgICAg
IG1hdGNoZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGxv
Z2dpbmcuaW5mbygiQ291bGQgbm90IGZpbmQgY29tbWl0IHdpdGggdXVpZCAlcyIsIHV1aWQpCisg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIGFyZ3Mub25seV9jaGFuZ2VzOgorICAg
ICAgICAgICAgaWYgcHJldmlvdXMgPT0gYWN0dWFsOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgIGVsaWYgYXJncy5vbmx5X3VuZXhwZWN0ZWQ6CisgICAgICAgICAgICBpZiBhY3R1
YWwgPT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBtc2cg
PSAiY29tbWl0IHt9IGV4cGVjdGVkIHt9IGFjdHVhbCB7fSB0aW1lIHt9Ii5mb3JtYXQoCisgICAg
ICAgICAgICBjb21taXRbImlkZW50aWZpZXIiXSwgZXhwZWN0ZWQsIGFjdHVhbCwgc3RhcnRfdGlt
ZQorICAgICAgICApCisKKyAgICAgICAgaWYgYXJncy5jb2xvcjoKKyAgICAgICAgICAgIHByaW50
KGRlY29yYXRlKG1zZywgZXhwZWN0ZWQsIGFjdHVhbCkpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBwcmludChtc2cpCisgICAgICAgIHByZXZpb3VzID0gYWN0dWFsCisKKyAgICBpZiBub3Qg
bWF0Y2hlZDoKKyAgICAgICAgbGF0ZXN0X3JldmlzaW9uLCBsYXRlc3RfdGltZXN0YW1wID0gZ2V0
X2xhdGVzdF9jb21taXQoY29tbWl0cykKKyAgICAgICAgbGF0ZXN0X2RhdGUgPSBkYXRldGltZS5m
cm9tdGltZXN0YW1wKGxhdGVzdF90aW1lc3RhbXApCisgICAgICAgIHByaW50KAorICAgICAgICAg
ICAgZiJObyBjb21taXRzIG1hdGNoZWQuIFRoZSBsYXRlc3QgY29tbWl0IGluIGNhY2hlIGlzIHts
YXRlc3RfcmV2aXNpb259IGZyb20ge2xhdGVzdF9kYXRlfSIsCisgICAgICAgICAgICBmaWxlPXN5
cy5zdGRlcnIsCisgICAgICAgICkKKyAgICAgICAgcmV0dXJuIDEKKworICAgIHJldHVybiAwCisK
KworZGVmIHBhcnNlX2FyZ3MoKToKKyAgICAiIiJQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRz
IGFuZCBzd2l0Y2hlcyIiIgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAor
ICAgICAgICBkZXNjcmlwdGlvbj10ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiIKKyAg
ICAgICAgICAgICAgICBDb21tYW5kIGxpbmUgdG9vbCB0byBxdWVyeSBodHRwczovL3Jlc3VsdHMu
d2Via2l0Lm9yZyBmb3IgdGVzdCBoaXN0b3J5LgorCisgICAgICAgICAgICAgICAgUGFzc2luZyBh
IHRlc3QgY2FzZSBpbiB0aGUgY29tbWFuZCBsaW5lIHdpbGwgc2hvdyBvbmUgZW50cnkgZm9yIGVh
Y2gKKyAgICAgICAgICAgICAgICB0ZXN0IHJ1biByZWdpc3RlcmVkLCBhbG9uZ3NpZGUgY29tbWl0
IGluZm9ybWF0aW9uLCBleHBlY3RlZCBhbmQgYWN0dWFsIG91dGNvbWVzLAorICAgICAgICAgICAg
ICAgIGFuZCB0aW1lc3RhbXAgb2YgdGhlIHJ1bi4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgICAg
ICAgICAkIHdrLXRlc3QtcmVzdWx0IC0tYm90IHdwZS1yZWxlYXNlIGlldGVzdGNlbnRlci9jc3Mz
L3RleHQvdGV4dHNoYWRvdy0wMDEuaHRtIC0tbGltaXQ9NQorICAgICAgICAgICAgICAgIGNvbW1p
dCAyNDQ3ODFAbWFpbiBleHBlY3RlZCBQQVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAx
ODowMjoxMworICAgICAgICAgICAgICAgIGNvbW1pdCAyNDQ3ODdAbWFpbiBleHBlY3RlZCBQQVNT
IGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAxOTo0MzoxMAorICAgICAgICAgICAgICAgIGNv
bW1pdCAyNDQ3OTZAbWFpbiBleHBlY3RlZCBQQVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0w
MiAyMDo0MTo1MgorICAgICAgICAgICAgICAgIGNvbW1pdCAyNDQ3OTdAbWFpbiBleHBlY3RlZCBQ
QVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAyMTo0MDoyOQorICAgICAgICAgICAgICAg
IGNvbW1pdCAyNDQ4MDNAbWFpbiBleHBlY3RlZCBQQVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0x
Mi0wMiAyMzoxMzoxOQorCisgICAgICAgICAgICAgICAgVG8gYXZvaWQgcXVlcnlpbmcgdGhlIGNv
bW1pdCBkYXRhIGF0IGVhY2ggaW52b2NhdGlvbiwgdGhlIGxhc3QgNTAwMCBjb21taXRzCisgICAg
ICAgICAgICAgICAgYXJlIGNhY2hlZCAoYnkgZGVmYXVsdCwgdG8gJFhER19DQUNIRV9IT01FL3dr
LWdhcmRlbmluZy10b29scy9jb21taXRzLmpzb24pLgorCisgICAgICAgICAgICAgICAgQ3VycmVu
dGx5LCBvbmx5IEdMSUItYmFzZWQgYm90cyBhbmQgbGF5b3V0LXRlc3Qgc3VpdGUgYXJlIHN1cHBv
cnRlZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICApLAorICAgICAgICBmb3JtYXR0ZXJfY2xh
c3M9YXJncGFyc2UuUmF3VGV4dEhlbHBGb3JtYXR0ZXIsCisgICAgKQorCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLWIiLCAiLS1ib3QiLCBoZWxwPSJCb3QgdG8gcXVlcnkiLCByZXF1aXJlZD1U
cnVlKQorCisgICAgIyBDb21tb24gb3B0aW9ucworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi12
IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IlZlcmJvc2Ugb3V0cHV0
IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLXIiLAorICAgICAgICAiLS1y
ZXNldC1jYWNoZSIsCisgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9
IlJlc2V0IHRoZSBjb21taXQgY2FjaGUgaWYgbmVlZGVkIiwKKyAgICApCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgKKyAgICAgICAgIi1jIiwKKyAgICAgICAgIi0tY29sb3IiLAorICAgICAgICBh
Y3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJVc2UgY29sb3JzIHRvIGhpZ2hsaWdo
dCB1bmV4cGVjdGVkIHJlc3VsdHMiLAorICAgICkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
CisgICAgICAgICItLWxhc3QtcnVuIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAg
ICAgICAgaGVscD0iU2hvdyBzdGF0dXMgb2YgdGhlIGxhc3QgcmVnaXN0ZXJlZCBydW4gYW5kIGV4
aXQuIiwKKyAgICApCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1saW1p
dCIsCisgICAgICAgIHR5cGU9aW50LAorICAgICAgICBkZWZhdWx0PTEwMCwKKyAgICAgICAgaGVs
cD0iIiJMaW1pdCB0aGUgbnVtYmVyIG9mIHJlc3VsdHMuIERlZmF1bHRzIHRvIDEwMCwgdXNlIC0x
IHRvIGFzayB0aGUgc2VydmVyIGZvcgorICAgICAgICAgICAgICAgIGl0cyBkZWZhdWx0IHZhbHVl
LiBVc2UgdG9nZXRoZXIgd2l0aCAtLXRlc3QiIiIsCisgICAgKQorCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgiLS1saXN0LWJvdHMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJMaXN0IHBy
ZWRlZmluZWQgYm90cyIpCisKKyAgICAjIE91dHB1dCBvcHRpb25zCisgICAgb3V0cHV0X2dyb3Vw
ID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQorICAgIG91dHB1dF9ncm91
cC5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW9ubHktY2hhbmdlcyIsCisgICAgICAgIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9IkRpc3BsYXkgb25seSByZXZpc2lvbnMgd2hl
cmUgdGhlIHN0YXRlIGNoYW5nZWQuIFVzZSB3aXRoIC0tdGVzdCIsCisgICAgKQorICAgIG91dHB1
dF9ncm91cC5hZGRfYXJndW1lbnQoCisgICAgICAgICItLW9ubHktdW5leHBlY3RlZCIsCisgICAg
ICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9IkRpc3BsYXkgb25seSB1bmV4
cGVjdGVkIHJlc3VsdHMuIFVzZSB3aXRoIC0tdGVzdCIsCisgICAgKQorCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgKKyAgICAgICAgInRlc3QiLCBoZWxwPSJUZXN0IGNhc2UgdG8gYmUgc2VhcmNo
ZWQiLCBuYXJncz0iPyIsIGRlZmF1bHQ9Tm9uZQorICAgICkKKworICAgIHJldHVybiBwYXJzZXIu
cGFyc2VfYXJncygpCisKKworZGVmIG1haW4oKToKKyAgICAiIiJNYWluIGVudHJ5IHBvaW50IiIi
CisgICAgYXJncyA9IHBhcnNlX2FyZ3MoKQorCisgICAgaWYgYXJncy52ZXJib3NlOgorICAgICAg
ICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuREVCVUcpCisKKyAgICBpZiBhcmdz
Lmxpc3RfYm90czoKKyAgICAgICAgZm9yIGJvdCBpbiBzb3J0ZWQoQk9UUy5rZXlzKCkpOgorICAg
ICAgICAgICAgcHJpbnQoYm90KQorICAgIGVsaWYgYXJncy5sYXN0X3J1bjoKKyAgICAgICAgc3lz
LmV4aXQobGFzdF9ydW4oYXJncykpCisgICAgZWxpZiBhcmdzLnRlc3Q6CisgICAgICAgIHN5cy5l
eGl0KHJlcG9ydF90ZXN0KGFyZ3MpKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCJObyB0ZXN0
IGNhc2UgcHJvdmlkZWQuIERpZCB5b3UgZm9yZ2V0IHRvIHBhc3MgaXQ/IikKKyAgICAgICAgc3lz
LmV4aXQoMSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453938</attachid>
            <date>2022-03-06 19:24:28 -0800</date>
            <delta_ts>2022-03-09 14:09:17 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-233800-20220307002426.patch</filename>
            <type>text/plain</type>
            <size>14265</size>
            <attacher name="Lauro Moura">lmoura</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2NlYmIzOGIxYjNkZWI1OGY0MjA4ZDk5YTA0MTRhZTZh
MWE2YTcwMC4uYTE5NjE0OTkyN2JmYTRiNjFkMjg3NThhMzkxNDlmN2ZmZjdjZGFlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIyLTAxLTI5ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtUb29sc10gQWRkIHNjcmlwdCB0byBxdWVyeSByZXN1bHRzIGRhdGFiYXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvbW1pdCBhZGRz
IGEgc2NyaXB0IHRvIHF1ZXJ5IGh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnIGZvciB0aGUKKyAg
ICAgICAgaGlzdG9yeSBvZiBhIHRlc3RjYXNlIGZvciBhIGdpdmVuIGJvdC9jb25maWcuIEl0IGlu
Y2x1ZGVzIGEKKyAgICAgICAgYC0tb25seS1jaGFuZ2VzYCBzd2l0Y2ggdG8gc2hvdyBvbmx5IHJl
dmlzaW9ucyB3aGVuIHRoZSBhY3R1YWwgY2hhbmdlZAorICAgICAgICBmcm9tIHRoZSBwcmV2aW91
cyBvbmUgKHVzZWZ1bCB0byBjaGVjayB3aGVuIGEgdGVzdCBzdGFydGVkIGZhaWxpbmcpLgorCisg
ICAgICAgIEZvciBub3cgaXQgc3VwcG9ydHMgb25seSBsYXlvdXQtdGVzdHMgYW5kIGhhcyBHVEsv
V1BFIGJvdHMgcHJlZGVmaW5lZCwKKyAgICAgICAgYWx0aG91Z2ggZnVsbCBjb25maWd1cmF0aW9u
cyAodGhlIHF1ZXJ5IHN0cmluZyBmb3IgcmVzdWx0cy53ZWJraXQub3JnKQorICAgICAgICBjYW4g
YmUgdXNlZCB0byBhY2Nlc3Mgb3RoZXIgYm90cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
LXRlc3QtcmVzdWx0czogQWRkZWQuCisKIDIwMjItMDMtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBCb29rcyBBU1NFUlRzIHVwb24g
b3BlbmluZyBhIGJvb2sgd2l0aCBhIGRlYnVnIGJ1aWxkIG9mIFdlYktpdApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXQtdGVzdC1yZXN1bHRzIGIvVG9vbHMvU2NyaXB0cy93ZWJraXQt
dGVzdC1yZXN1bHRzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ODAwMjdiNTkzYWJhODBkNWM3NDhmMWI1NjM0NjFl
ZThlYzYxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdC10ZXN0LXJl
c3VsdHMKQEAgLTAsMCArMSwzOTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMgQ29w
eXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisjIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAor
IyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgcHlsaW50OiBkaXNhYmxlPW1pc3Npbmct
ZG9jc3RyaW5nLGludmFsaWQtbmFtZQorCisiIiJDb21tYW5kLWxpbmUgaW50ZXJmYWNlIHRvIHRo
ZSBXZWJraXQgUmVzdWx0cyBEYXRhYmFzZSIiIgorCitpbXBvcnQgYXJncGFyc2UKK2Zyb20gZGF0
ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBvcworaW1wb3J0IHBhdGhsaWIKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAorZnJvbSB1
cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybGVuY29kZSwgcGFyc2VfcXMKK2Zyb20gdXJs
bGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Zyb20gdXJsbGliLmVycm9yIGltcG9ydCBIVFRQ
RXJyb3IKKworQkFTRV9VUkwgPSAiaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvIgorCisKK2Rl
ZiByZWQobXNnKToKKyAgICAiIiJSZXR1cm5zIGEgc2hlbGwtYXdhcmUgcmVkIHN0cmluZyIiIgor
ICAgIHJldHVybiAiXDAzM1s5MW0iICsgbXNnICsgIlwwMzNbMG0iCisKKworZGVmIGdyZWVuKG1z
Zyk6CisgICAgIiIiUmV0dXJucyBhIHNoZWxsLWF3YXJlIGdyZWVuIHN0cmluZyIiIgorICAgIHJl
dHVybiAiXDAzM1s5Mm0iICsgbXNnICsgIlwwMzNbMG0iCisKKworIyBSb3VnaGx5IG9yZGVyZWQg
ZnJvbSB0aGUgbW9zdCBkZXNpcmVkIHRvIHRoZSBtb3N0IHVud2FudGVkLgorT1VUQ09NRVMgPSBb
CisgICAgIlBBU1MiLAorICAgICJURVhUIiwKKyAgICAiSU1BR0UiLAorICAgICJTS0lQIiwKKyAg
ICAiRkFJTCIsCisgICAgIkVSUk9SIiwKKyAgICAiVElNRU9VVCIsICAjIFB1dCB0aW1lb3V0IGFz
IG1vcmUgc2V2ZXJlIHRoYW4gRVJST1IgYXMgdGhleSBvZnRlbiBhcmUgaGFyZGVyIHRvIGRlYnVn
CisgICAgIkNSQVNIIiwKK10KKworCitkZWYgaXNfaW1wcm92ZW1lbnQoYmFzZWxpbmUsIGN1cnJl
bnQpOgorICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBvdXRjb21lIGlzIG1vcmUg
ZmF2b3VyYWJsZS4iIiIKKyAgICBiZXN0X2Jhc2VsaW5lID0gbWluKE9VVENPTUVTLmluZGV4KGJh
c2VsaW5lX3Rva2VuKSBmb3IgYmFzZWxpbmVfdG9rZW4gaW4gYmFzZWxpbmUuc3BsaXQoKSkKKyAg
ICByZXR1cm4gYmVzdF9iYXNlbGluZSA+IE9VVENPTUVTLmluZGV4KGN1cnJlbnQpCisKKworZGVm
IGlzX3JlZ3Jlc3Npb24oYmFzZWxpbmUsIGN1cnJlbnQpOgorICAgICIiIlJldHVybnMgdHJ1ZSBp
ZiB0aGUgY3VycmVudCBvdXRjb21lIGRvd25ncmFkZWQgdGhlIHJlc3VsdC4iIiIKKyAgICB3b3Jz
dF9iYXNlbGluZSA9IG1heChPVVRDT01FUy5pbmRleChiYXNlbGluZV90b2tlbikgZm9yIGJhc2Vs
aW5lX3Rva2VuIGluIGJhc2VsaW5lLnNwbGl0KCkpCisgICAgcmV0dXJuIHdvcnN0X2Jhc2VsaW5l
IDwgT1VUQ09NRVMuaW5kZXgoY3VycmVudCkKKworCitkZWYgZGVjb3JhdGUobXNnLCBiYXNlbGlu
ZSwgY3VycmVudCk6CisgICAgIiIiQ29sb3JzIHRoZSBtZXNzYWdlIGlmIHRoZSBzdGF0dXMgY2hh
bmdlIHJlcHJlc2VudHMgYW4gaW1wcm92ZW1lbnQgb3IgcmVncmVzc2lvbi4iIiIKKyAgICBpZiBp
c19pbXByb3ZlbWVudChiYXNlbGluZSwgY3VycmVudCk6CisgICAgICAgIG1zZyA9IGdyZWVuKG1z
ZykKKyAgICBlbGlmIGlzX3JlZ3Jlc3Npb24oYmFzZWxpbmUsIGN1cnJlbnQpOgorICAgICAgICBt
c2cgPSByZWQobXNnKQorICAgIHJldHVybiBtc2cKKworCitjbGFzcyBRdWVyeToKKyAgICAiIiJX
cmFwcGVyIGFyb3VuZCB0aGUgbW9zdCBjb21tb24gcXVlcnkgcGFyYW1ldGVycyBmb3IgYSBnaXZl
biByZXF1ZXN0IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAg
ICAiIiJKdXN0IHN0b3JlcyB0aGUgcGFzc2VkIGt3YXJncyBhcyBwYXJhbWV0ZXJzIHRvIGJlIGZv
cndhcmRlZCB0byB0aGUgYWN0dWFsIHF1ZXJ5IiIiCisgICAgICAgIHNlbGYuX3BhcmFtcyA9IGt3
YXJncy5jb3B5KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX3F1ZXJ5X3N0cmlu
ZyhjbHMsIHF1ZXJ5X3N0cik6CisgICAgICAgIGZpZWxkcyA9IHBhcnNlX3FzKHF1ZXJ5X3N0cikK
KyAgICAgICAgIyBwYXJzZV9xcyBmb3JjZXMgdGhlIHZhbHVlcyB0byBiZSBsaXN0cywgZXZlbiB3
aGVuIHRoZXkgYXJlIHNpbmdsZS12YWx1ZWQKKyAgICAgICAgZm9yIGssIHYgaW4gZmllbGRzLml0
ZW1zKCk6CisgICAgICAgICAgICBpZiBsZW4odikgPT0gMToKKyAgICAgICAgICAgICAgICBmaWVs
ZHNba10gPSB2WzBdCisgICAgICAgIHJldHVybiBjbHMoKipmaWVsZHMpCisKKyAgICBkZWYgYXNf
cXVlcnlfc3RyaW5nKHNlbGYpOgorICAgICAgICAiIiJFc2NhcGUgYW5kIGJ1aWxkIHRoZSBhY3R1
YWwgcXVlcnkgc3RyaW5nIiIiCisgICAgICAgIHJldHVybiB1cmxlbmNvZGUoc2VsZi5fcGFyYW1z
KQorCisgICAgZGVmIGFkZF9wYXJhbShzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICIiIkV4dGVu
ZHMgdGhlIGN1cnJlbnQgc2V0IG9mIHBhcmFtZXRlcnMuCisKKyAgICAgICAgQmV3YXJlIHRoYXQg
aXQnbGwgb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlcy4iIiIKKyAgICAgICAgc2VsZi5fcGFyYW1z
LnVwZGF0ZShrd2FyZ3MpCisKKworQk9UUyA9IHsKKyAgICAiZ3RrLXJlbGVhc2UteDExIjogUXVl
cnkoCisgICAgICAgIHBsYXRmb3JtPSJHVEsiLCBzdHlsZT0icmVsZWFzZSIsIHZlcnNpb25fbmFt
ZT0iWHZmYiIsIHZlcnNpb249IjUuNS4wIgorICAgICksCisgICAgImd0ay1yZWxlYXNlLWd0azQi
OiBRdWVyeSgKKyAgICAgICAgcGxhdGZvcm09IkdUSyIsIHN0eWxlPSJyZWxlYXNlIiwgdmVyc2lv
bl9uYW1lPSJYdmZiIiwgdmVyc2lvbj0iNC4xOS4wIgorICAgICksCisgICAgImd0ay1yZWxlYXNl
LXdheWxhbmQiOiBRdWVyeSgKKyAgICAgICAgcGxhdGZvcm09IkdUSyIsIHN0eWxlPSJyZWxlYXNl
IiwgdmVyc2lvbl9uYW1lPSJXYXlsYW5kIgorICAgICksCisgICAgIndwZS1yZWxlYXNlIjogUXVl
cnkocGxhdGZvcm09IldQRSIsIHN0eWxlPSJyZWxlYXNlIiksCisgICAgIndwZS1kZWJ1ZyI6IFF1
ZXJ5KHBsYXRmb3JtPSJXUEUiLCBzdHlsZT0icmVsZWFzZSIpLAorfQorCisKK2RlZiBnZXRfY29t
bWl0X2NhY2hlX2ZpbGVuYW1lKCk6CisgICAgIiIiUmV0dXJucyB0aGUgY2FjaGUgZmlsZW5hbWUs
IGVuc3VyaW5nIGl0J3MgcGFyZW50IGZvbGRlciBleGlzdHMiIiIKKyAgICBhcHBfbmFtZSA9ICJ3
ZWJraXQtdGVzdC1yZXN1bHRzIgorICAgIHhkZ19jb25maWdfaG9tZSA9IG9zLmdldGVudigiWERH
X0NBQ0hFX0hPTUUiKQorICAgIGlmIHhkZ19jb25maWdfaG9tZToKKyAgICAgICAgZGlyZWN0b3J5
ID0gb3MucGF0aC5qb2luKHhkZ19jb25maWdfaG9tZSwgYXBwX25hbWUpCisgICAgZWxzZToKKyAg
ICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZXhwYW5kdXNlcigifiIpLCAi
LmNhY2hlIiwgYXBwX25hbWUpCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3Rvcnkp
OgorICAgICAgICBwYXRobGliLlBhdGgoZGlyZWN0b3J5KS5ta2RpcihwYXJlbnRzPVRydWUsIGV4
aXN0X29rPVRydWUpCisKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgImNvbW1p
dHMuanNvbiIpCisKKworZGVmIGxvYWRfY29tbWl0X2NhY2hlKGZvcmNlX3Jlc2V0PUZhbHNlKToK
KyAgICAiIiJMb2FkcyB0aGUgc3RvcmVkIGNvbW1pdHMsIGZldGNoaW5nIGFnYWluIGlmIG5lZWRl
ZC4iIiIKKyAgICBmaWxlbmFtZSA9IGdldF9jb21taXRfY2FjaGVfZmlsZW5hbWUoKQorICAgIGlm
IGZvcmNlX3Jlc2V0IG9yIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CisgICAgICAgIHJl
dHVybiByZXNldF9jb21taXRfY2FjaGUoKQorCisgICAgbG9nZ2luZy5pbmZvKCJPcGVuaW5nIGNv
bW1pdCBjYWNoZSAlcyIsIGZpbGVuYW1lKQorICAgIHdpdGggb3BlbihmaWxlbmFtZSwgZW5jb2Rp
bmc9InV0Zi04IikgYXMgaGFuZGxlOgorICAgICAgICByZXR1cm4ganNvbi5sb2FkKGhhbmRsZSkK
KworCitkZWYgcmVzZXRfY29tbWl0X2NhY2hlKCk6CisgICAgIiIiRmV0Y2hlcyB0aGUgbGFzdCA1
MDAwIGNvbW1pdHMgYW5kIHN0b3JlIHRoZWlyIGluZm8gdG8gYmUgcmV1c2VkIGluIGxhdGVyIGNh
bGxzLiIiIgorICAgICMgVE9ETyBBcHBlbmQgdG8gZXhpc3RpbmcgaW5zdGVhZCBvZiByZXNldHRp
bmcKKyAgICBsb2dnaW5nLmluZm8oIlJlc2V0dGluZyBjb21taXQgY2FjaGUiKQorICAgIGxpbWl0
ID0gNTAwMAorICAgIGNvbW1hbmQgPSAiL2FwaS9jb21taXRzIgorCisgICAgcXVlcnkgPSB7Imxp
bWl0IjogbGltaXQsICJicmFuY2giOiAibWFpbiJ9CisKKyAgICB1cmwgPSB1cmxqb2luKEJBU0Vf
VVJMLCBjb21tYW5kKSArICI/IiArIHVybGVuY29kZShxdWVyeSkKKworICAgIGZpbGVuYW1lID0g
Z2V0X2NvbW1pdF9jYWNoZV9maWxlbmFtZSgpCisgICAgbG9nZ2luZy5pbmZvKCJGZXRjaGluZyBj
b21taXRzIGZyb20gJXMiLCB1cmwpCisgICAgd2l0aCB1cmxvcGVuKHVybCkgYXMgcmVzcG9uc2U6
CisgICAgICAgIHJhd19kYXRhID0ganNvbi5sb2FkKHJlc3BvbnNlKQorCisgICAgdXVpZHMgPSB7
fQorICAgIGZvciBjb21taXQgaW4gcmF3X2RhdGE6CisgICAgICAgICMgT3JkZXIgaXMgdXN1YWxs
eSB6ZXJvIGZvciBzaW5nbGUgY29tbWl0cyBwdXNoZWQgdG8gdGhlIHJlcG8uIEZvciBleGFtcGxl
LAorICAgICAgICAjIGNvbW1pdHMgaW4gU1ZOLiBXaGVuIG1vdmluZyB0byBnaXQsIGJyYW5jaHMg
d2l0aCBtdWx0aXBsZSBjb21taXRzIHdpbGwKKyAgICAgICAgIyBtYWtlIHVzZSBvZiBpdC4KKyAg
ICAgICAgdXVpZCA9IHN0cihjb21taXRbInRpbWVzdGFtcCJdICogMTAwICsgY29tbWl0WyJvcmRl
ciJdKQorICAgICAgICBjb21taXRbInV1aWQiXSA9IHV1aWQKKyAgICAgICAgdXVpZHNbdXVpZF0g
PSBjb21taXQKKworICAgIGxvZ2dpbmcuaW5mbygiU2F2aW5nIGNvbW1pdHMgdG8gJXMiLCBmaWxl
bmFtZSkKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IiwgZW5jb2Rpbmc9InV0Zi04IikgYXMg
b3V0cHV0OgorICAgICAgICBsb2dnaW5nLmluZm8oIlNhdmluZyBkb3dubG9hZGVkIGNhY2hlIikK
KyAgICAgICAganNvbi5kdW1wKHV1aWRzLCBvdXRwdXQpCisKKyAgICByZXR1cm4gdXVpZHMKKwor
CitkZWYgbGFzdF9ydW4oYXJncyk6CisgICAgIiIiU2hvd3MgZGF0YSBhYm91dCB0aGUgbGFzdCB0
ZXN0IHJ1biByZWdpc3RlcmVkIGZvciB0aGUgc2VsZWN0ZWQgYm90IiIiCisgICAgZW5kcG9pbnQg
PSAiYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzIgorICAgIGlmIGFyZ3Mub25seV9jaGFuZ2VzOgor
ICAgICAgICBsb2dnaW5nLmluZm8oIi0tb25seS1jaGFuZ2VzIGlnbm9yZWQgaW4gdGhpcyBjb21t
YW5kIikKKyAgICBpZiBhcmdzLm9ubHlfdW5leHBlY3RlZDoKKyAgICAgICAgbG9nZ2luZy5pbmZv
KCItLW9ubHktdW5leHBlY3RlZCBpZ25vcmVkIGluIHRoaXMgY29tbWFuZCIpCisKKyAgICBjb25m
aWd1cmF0aW9uID0gQk9UUy5nZXQoYXJncy5ib3QsIFF1ZXJ5LmZyb21fcXVlcnlfc3RyaW5nKGFy
Z3MuYm90KSkKKyAgICBjb25maWd1cmF0aW9uLmFkZF9wYXJhbShsaW1pdD0xKQorICAgIHF1ZXJ5
ID0gY29uZmlndXJhdGlvbi5hc19xdWVyeV9zdHJpbmcoKQorCisgICAgdXJsID0gdXJsam9pbihC
QVNFX1VSTCwgZW5kcG9pbnQpICsgIj8iICsgcXVlcnkKKworICAgIGxvZ2dpbmcuaW5mbygiTG9h
ZGluZyB0ZXN0IGRhdGEgZnJvbSAlcyIsIHVybCkKKyAgICB0cnk6CisgICAgICAgIHdpdGggdXJs
b3Blbih1cmwpIGFzIHJlc3BvbnNlOgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChyZXNw
b25zZSkKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhkYXRhLCBzb3J0X2tleXM9VHJ1ZSwgaW5k
ZW50PTQsIHNlcGFyYXRvcnM9KCIsIiwgIjogIikpKQorICAgIGV4Y2VwdCAoSFRUUEVycm9yLCBq
c29uLkpTT05EZWNvZGVFcnJvcikgYXMgZToKKyAgICAgICAgcHJpbnQoZSkKKyAgICAgICAgcmV0
dXJuIDEKKworICAgIHJldHVybiAwCisKKworZGVmIGdldF9sYXRlc3RfY29tbWl0KGNvbW1pdHMp
OgorICAgICIiIlJldHVybnMgdGhlIG5ld2VzdCBjb21taXQgZnJvbSBhIHNldCBvZiBjb21taXRz
IiIiCisKKyAgICBsYXRlc3QgPSBtYXgoY29tbWl0cy52YWx1ZXMoKSwga2V5PWxhbWJkYSB4OiB4
WyJ1dWlkIl0pCisKKyAgICByZXR1cm4gbGF0ZXN0WyJpZGVudGlmaWVyIl0sIGxhdGVzdFsidGlt
ZXN0YW1wIl0KKworCitkZWYgcmVwb3J0X3Rlc3QoYXJncyk6CisgICAgIiIiUmVwb3J0cyB0aGUg
dGVzdCBoaXN0b3J5IGZvciBhIHNpbmdsZSB0ZXN0Y2FzZSBpbiBhIHNpbmdsZSBjb25maWd1cmF0
aW9uIiIiCisgICAgZW5kcG9pbnQgPSAiYXBpL3Jlc3VsdHMvbGF5b3V0LXRlc3RzIgorICAgIGNv
bmZpZ3VyYXRpb24gPSBCT1RTLmdldChhcmdzLmJvdCwgUXVlcnkuZnJvbV9xdWVyeV9zdHJpbmco
YXJncy5ib3QpKQorICAgIGlmIGFyZ3MubGltaXQgPiAwOgorICAgICAgICBjb25maWd1cmF0aW9u
LmFkZF9wYXJhbShsaW1pdD1hcmdzLmxpbWl0KQorICAgIHF1ZXJ5ID0gY29uZmlndXJhdGlvbi5h
c19xdWVyeV9zdHJpbmcoKQorCisgICAgdXJsID0gdXJsam9pbihCQVNFX1VSTCwgZW5kcG9pbnQg
KyAiLyIgKyBhcmdzLnRlc3QpICsgIj8iICsgcXVlcnkKKworICAgIGxvZ2dpbmcuaW5mbygiTG9h
ZGluZyB0ZXN0IGRhdGEgZnJvbSAlcyIsIHVybCkKKyAgICB0cnk6CisgICAgICAgIHdpdGggdXJs
b3Blbih1cmwpIGFzIHJlc3BvbnNlOgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChyZXNw
b25zZSlbMF0KKyAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgbG9nZ2luZy5lcnJvcigi
Tm8gcmVzdWx0cyByZXR1cm5lZC4gRXhpdGluZy4iKQorICAgICAgICByZXR1cm4gMQorCisgICAg
cmVzdWx0cyA9IHNvcnRlZChkYXRhWyJyZXN1bHRzIl0sIGtleT1sYW1iZGEgcmVzdWx0OiByZXN1
bHRbInV1aWQiXSkKKworICAgIGNvbW1pdHMgPSBsb2FkX2NvbW1pdF9jYWNoZShmb3JjZV9yZXNl
dD1hcmdzLnJlc2V0X2NhY2hlKQorICAgIGxvZ2dpbmcuaW5mbygiRm91bmQgJWQgY2FjaGVkIGNv
bW1pdHMiLCBsZW4oY29tbWl0cykpCisKKyAgICBwcmV2aW91cyA9IE5vbmUKKworICAgIG1hdGNo
ZWQgPSBGYWxzZQorCisgICAgZm9yIHJlc3VsdCBpbiByZXN1bHRzOgorICAgICAgICBhY3R1YWwg
PSByZXN1bHRbImFjdHVhbCJdCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0WyJleHBlY3RlZCJd
CisgICAgICAgIHN0YXJ0X3RpbWUgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHJlc3VsdFsic3Rh
cnRfdGltZSJdKQorICAgICAgICB1dWlkID0gcmVzdWx0WyJ1dWlkIl0KKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBjb21taXQgPSBjb21taXRzW3N0cih1dWlkKV0KKyAgICAgICAgICAgIG1h
dGNoZWQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGxvZ2dp
bmcuaW5mbygiQ291bGQgbm90IGZpbmQgY29tbWl0IHdpdGggdXVpZCAlcyIsIHV1aWQpCisgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIGFyZ3Mub25seV9jaGFuZ2VzOgorICAgICAg
ICAgICAgaWYgcHJldmlvdXMgPT0gYWN0dWFsOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGVsaWYgYXJncy5vbmx5X3VuZXhwZWN0ZWQ6CisgICAgICAgICAgICBpZiBhY3R1YWwg
PT0gZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBtc2cgPSAi
Y29tbWl0IHt9IGV4cGVjdGVkIHt9IGFjdHVhbCB7fSB0aW1lIHt9Ii5mb3JtYXQoCisgICAgICAg
ICAgICBjb21taXRbImlkZW50aWZpZXIiXSwgZXhwZWN0ZWQsIGFjdHVhbCwgc3RhcnRfdGltZQor
ICAgICAgICApCisKKyAgICAgICAgaWYgYXJncy5jb2xvcjoKKyAgICAgICAgICAgIHByaW50KGRl
Y29yYXRlKG1zZywgZXhwZWN0ZWQsIGFjdHVhbCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBwcmludChtc2cpCisgICAgICAgIHByZXZpb3VzID0gYWN0dWFsCisKKyAgICBpZiBub3QgbWF0
Y2hlZDoKKyAgICAgICAgbGF0ZXN0X3JldmlzaW9uLCBsYXRlc3RfdGltZXN0YW1wID0gZ2V0X2xh
dGVzdF9jb21taXQoY29tbWl0cykKKyAgICAgICAgbGF0ZXN0X2RhdGUgPSBkYXRldGltZS5mcm9t
dGltZXN0YW1wKGxhdGVzdF90aW1lc3RhbXApCisgICAgICAgIHByaW50KAorICAgICAgICAgICAg
ZiJObyBjb21taXRzIG1hdGNoZWQuIFRoZSBsYXRlc3QgY29tbWl0IGluIGNhY2hlIGlzIHtsYXRl
c3RfcmV2aXNpb259IGZyb20ge2xhdGVzdF9kYXRlfSIsCisgICAgICAgICAgICBmaWxlPXN5cy5z
dGRlcnIsCisgICAgICAgICkKKyAgICAgICAgcmV0dXJuIDEKKworICAgIHJldHVybiAwCisKKwor
ZGVmIHBhcnNlX2FyZ3MoKToKKyAgICAiIiJQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFu
ZCBzd2l0Y2hlcyIiIgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAg
ICAgICBkZXNjcmlwdGlvbj10ZXh0d3JhcC5kZWRlbnQoCisgICAgICAgICAgICAiIiIKKyAgICAg
ICAgICAgICAgICBDb21tYW5kIGxpbmUgdG9vbCB0byBxdWVyeSBodHRwczovL3Jlc3VsdHMud2Vi
a2l0Lm9yZyBmb3IgdGVzdCBoaXN0b3J5LgorCisgICAgICAgICAgICAgICAgUGFzc2luZyBhIHRl
c3QgY2FzZSBpbiB0aGUgY29tbWFuZCBsaW5lIHdpbGwgc2hvdyBvbmUgZW50cnkgZm9yIGVhY2gK
KyAgICAgICAgICAgICAgICB0ZXN0IHJ1biByZWdpc3RlcmVkLCBhbG9uZ3NpZGUgY29tbWl0IGlu
Zm9ybWF0aW9uLCBleHBlY3RlZCBhbmQgYWN0dWFsIG91dGNvbWVzLAorICAgICAgICAgICAgICAg
IGFuZCB0aW1lc3RhbXAgb2YgdGhlIHJ1bi4gRm9yIGV4YW1wbGU6CisKKyAgICAgICAgICAgICAg
ICAkIHdrLXRlc3QtcmVzdWx0IC0tYm90IHdwZS1yZWxlYXNlIGlldGVzdGNlbnRlci9jc3MzL3Rl
eHQvdGV4dHNoYWRvdy0wMDEuaHRtIC0tbGltaXQ9NQorICAgICAgICAgICAgICAgIGNvbW1pdCAy
NDQ3ODFAbWFpbiBleHBlY3RlZCBQQVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAxODow
MjoxMworICAgICAgICAgICAgICAgIGNvbW1pdCAyNDQ3ODdAbWFpbiBleHBlY3RlZCBQQVNTIGFj
dHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAxOTo0MzoxMAorICAgICAgICAgICAgICAgIGNvbW1p
dCAyNDQ3OTZAbWFpbiBleHBlY3RlZCBQQVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAy
MDo0MTo1MgorICAgICAgICAgICAgICAgIGNvbW1pdCAyNDQ3OTdAbWFpbiBleHBlY3RlZCBQQVNT
IGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0wMiAyMTo0MDoyOQorICAgICAgICAgICAgICAgIGNv
bW1pdCAyNDQ4MDNAbWFpbiBleHBlY3RlZCBQQVNTIGFjdHVhbCBURVhUIHRpbWUgMjAyMS0xMi0w
MiAyMzoxMzoxOQorCisgICAgICAgICAgICAgICAgVG8gYXZvaWQgcXVlcnlpbmcgdGhlIGNvbW1p
dCBkYXRhIGF0IGVhY2ggaW52b2NhdGlvbiwgdGhlIGxhc3QgNTAwMCBjb21taXRzCisgICAgICAg
ICAgICAgICAgYXJlIGNhY2hlZCAoYnkgZGVmYXVsdCwgdG8gJFhER19DQUNIRV9IT01FL3drLWdh
cmRlbmluZy10b29scy9jb21taXRzLmpzb24pLgorCisgICAgICAgICAgICAgICAgQ3VycmVudGx5
LCBvbmx5IEdMSUItYmFzZWQgYm90cyBhbmQgbGF5b3V0LXRlc3Qgc3VpdGUgYXJlIHN1cHBvcnRl
ZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICApLAorICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9
YXJncGFyc2UuUmF3VGV4dEhlbHBGb3JtYXR0ZXIsCisgICAgKQorCisgICAgYm90c19ncm91cCA9
IHBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBib3RzX2dyb3VwLmFk
ZF9hcmd1bWVudCgiLWIiLCAiLS1ib3QiLCBoZWxwPSJCb3QgdG8gcXVlcnkiKQorICAgIGJvdHNf
Z3JvdXAuYWRkX2FyZ3VtZW50KCItLWxpc3QtYm90cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhl
bHA9Ikxpc3QgcHJlZGVmaW5lZCBib3RzIikKKworICAgICMgQ29tbW9uIG9wdGlvbnMKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBoZWxwPSJWZXJib3NlIG91dHB1dCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAg
ICAgIi1yIiwKKyAgICAgICAgIi0tcmVzZXQtY2FjaGUiLAorICAgICAgICBhY3Rpb249InN0b3Jl
X3RydWUiLAorICAgICAgICBoZWxwPSJSZXNldCB0aGUgY29tbWl0IGNhY2hlIGlmIG5lZWRlZCIs
CisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItYyIsCisgICAgICAg
ICItLWNvbG9yIiwKKyAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgaGVscD0i
VXNlIGNvbG9ycyB0byBoaWdobGlnaHQgdW5leHBlY3RlZCByZXN1bHRzIiwKKyAgICApCisKKyAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAiLS1sYXN0LXJ1biIsCisgICAgICAgIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgIGhlbHA9IlNob3cgc3RhdHVzIG9mIHRoZSBsYXN0
IHJlZ2lzdGVyZWQgcnVuIGFuZCBleGl0LiIsCisgICAgKQorCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgKKyAgICAgICAgIi0tbGltaXQiLAorICAgICAgICB0eXBlPWludCwKKyAgICAgICAgZGVm
YXVsdD0xMDAsCisgICAgICAgIGhlbHA9IiIiTGltaXQgdGhlIG51bWJlciBvZiByZXN1bHRzLiBE
ZWZhdWx0cyB0byAxMDAsIHVzZSAtMSB0byBhc2sgdGhlIHNlcnZlciBmb3IKKyAgICAgICAgICAg
ICAgICBpdHMgZGVmYXVsdCB2YWx1ZS4gVXNlIHRvZ2V0aGVyIHdpdGggLS10ZXN0IiIiLAorICAg
ICkKKworCisgICAgIyBPdXRwdXQgb3B0aW9ucworICAgIG91dHB1dF9ncm91cCA9IHBhcnNlci5h
ZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3Vt
ZW50KAorICAgICAgICAiLS1vbmx5LWNoYW5nZXMiLAorICAgICAgICBhY3Rpb249InN0b3JlX3Ry
dWUiLAorICAgICAgICBoZWxwPSJEaXNwbGF5IG9ubHkgcmV2aXNpb25zIHdoZXJlIHRoZSBzdGF0
ZSBjaGFuZ2VkLiBVc2Ugd2l0aCAtLXRlc3QiLAorICAgICkKKyAgICBvdXRwdXRfZ3JvdXAuYWRk
X2FyZ3VtZW50KAorICAgICAgICAiLS1vbmx5LXVuZXhwZWN0ZWQiLAorICAgICAgICBhY3Rpb249
InN0b3JlX3RydWUiLAorICAgICAgICBoZWxwPSJEaXNwbGF5IG9ubHkgdW5leHBlY3RlZCByZXN1
bHRzLiBVc2Ugd2l0aCAtLXRlc3QiLAorICAgICkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
CisgICAgICAgICJ0ZXN0IiwgaGVscD0iVGVzdCBjYXNlIHRvIGJlIHNlYXJjaGVkIiwgbmFyZ3M9
Ij8iLCBkZWZhdWx0PU5vbmUKKyAgICApCisKKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3Mo
KQorCisKK2RlZiBtYWluKCk6CisgICAgIiIiTWFpbiBlbnRyeSBwb2ludCIiIgorICAgIGFyZ3Mg
PSBwYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3MudmVyYm9zZToKKyAgICAgICAgbG9nZ2luZy5i
YXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHKQorCisgICAgaWYgYXJncy5saXN0X2JvdHM6
CisgICAgICAgIGZvciBib3QgaW4gc29ydGVkKEJPVFMua2V5cygpKToKKyAgICAgICAgICAgIHBy
aW50KGJvdCkKKyAgICBlbGlmIGFyZ3MubGFzdF9ydW46CisgICAgICAgIHN5cy5leGl0KGxhc3Rf
cnVuKGFyZ3MpKQorICAgIGVsaWYgYXJncy50ZXN0OgorICAgICAgICBpZiBub3QgYXJncy5ib3Q6
CisgICAgICAgICAgICBwcmludCgiVGVzdCBoaXN0b3J5IHJlcXVpcmVzIGEgYm90IHRvIGJlIHNw
ZWNpZmllZCB3aXRoIC1iIG9yIC0tYm90LiBFeGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhp
dCgxKQorICAgICAgICBzeXMuZXhpdChyZXBvcnRfdGVzdChhcmdzKSkKKyAgICBlbHNlOgorICAg
ICAgICBwcmludCgiTm8gdGVzdCBjYXNlIHByb3ZpZGVkLiBEaWQgeW91IGZvcmdldCB0byBwYXNz
IGl0PyIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKKyAgICBtYWluKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>