<?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>76021</bug_id>
          
          <creation_ts>2012-01-10 19:37:37 -0800</creation_ts>
          <short_desc>test-webkitpy: push more logic into webkitpy.test.main, clean up code</short_desc>
          <delta_ts>2012-01-11 16:59:05 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76022</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533583</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-10 19:37:37 -0800</bug_when>
    <thetext>test-webkitpy: push more logic into webkitpy.test.main, clean up code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533591</commentid>
    <comment_count>1</comment_count>
      <attachid>121965</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-10 19:56:52 -0800</bug_when>
    <thetext>Created attachment 121965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533596</commentid>
    <comment_count>2</comment_count>
      <attachid>121965</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-10 20:12:28 -0800</bug_when>
    <thetext>Comment on attachment 121965
Patch

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

I like the idea.  I need to revew this when I&apos;m less tired, sorry. :(

&gt; Tools/Scripts/test-webkitpy:36
&gt; +# NOTE: We intentionally limit imports from webkitpy here to minimize the
&gt; +# chances of breaking test-webkitpy itself.

This isn&apos;t nearly as important these days now that we&apos;re not trying to support super-old versions of python, but still probably not a bad idea.

&gt; Tools/Scripts/test-webkitpy:57
&gt; +        import google.appengine

Does this work?  I don&apos;t think google.appengine adds itself to my python path on Mac, but I may be mistaken.

&gt; Tools/Scripts/webkitpy/test/main.py:30
&gt; +# NOTE: We intentionally do not depend on anything else in webkitpy here to avoid breaking test-webkitpy.

If that makes the code particularly cumbersome, I would encourage us to drop this restriction. :)  I believe it was more about not importing anything before we have a chance to clean stale pyc files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533693</commentid>
    <comment_count>3</comment_count>
      <attachid>121965</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-11 00:05:13 -0800</bug_when>
    <thetext>Comment on attachment 121965
Patch

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

I&apos;ll let Eric do the final review.  Two minor comments below.

&gt; Tools/Scripts/webkitpy/test/main.py:39
&gt; +        &quot;&quot;&quot;Execute code prior to importing from webkitpy.unittests.

I would skip these function-level docstrings.  I know is the Python way, but I think we should follow WebKit&apos;s commenting guidelines.  (Obviously not a big deal, but I wanted to mention it.)

&gt; Tools/Scripts/webkitpy/test/main.py:57
&gt; +            sys.argv.remove(verbose_logging_flag)

It&apos;s not enough to remove it from command_args?  I&apos;m not that big a fan of mutating globals...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534045</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-11 11:11:54 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Tools/Scripts/test-webkitpy:36
&gt; &gt; +# NOTE: We intentionally limit imports from webkitpy here to minimize the
&gt; &gt; +# chances of breaking test-webkitpy itself.
&gt; 
&gt; This isn&apos;t nearly as important these days now that we&apos;re not trying to support super-old versions of python, but still probably not a bad idea.
&gt; 

Yeah, if it turns out to be cumbersome, I will revisit this, but it seems like a good idea until proven otherwise.

&gt; &gt; Tools/Scripts/test-webkitpy:57
&gt; &gt; +        import google.appengine
&gt; 
&gt; Does this work?  I don&apos;t think google.appengine adds itself to my python path on Mac, but I may be mistaken.
&gt; 

This is a good question. It looks like QueueStatusServer/__init__.py does mess with the default sys.path, but only *after* it attempts to import something from google.appengine :). I need to reinstall the appengine sdk and confirm.

(In reply to comment #3)
&gt; &gt; Tools/Scripts/webkitpy/test/main.py:39
&gt; &gt; +        &quot;&quot;&quot;Execute code prior to importing from webkitpy.unittests.
&gt; 
&gt; I would skip these function-level docstrings.  I know is the Python way, but I think we should follow WebKit&apos;s commenting guidelines.  (Obviously not a big deal, but I wanted to mention it.)
&gt; 

I agree, I was trying to minimize the amount of stuff I was changing in one patch. I will remove this in a subsequent patch.

&gt; &gt; Tools/Scripts/webkitpy/test/main.py:57
&gt; &gt; +            sys.argv.remove(verbose_logging_flag)
&gt; 
&gt; It&apos;s not enough to remove it from command_args?  I&apos;m not that big a fan of mutating globals...

I had left this part of the code alone, but it looks buggy as heck (inconsistently using either sys.argv or sys_argv). I will clean it up and post a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534049</commentid>
    <comment_count>5</comment_count>
      <attachid>122055</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-11 11:21:33 -0800</bug_when>
    <thetext>Created attachment 122055
test QueueStatusServer, fix argv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534256</commentid>
    <comment_count>6</comment_count>
      <attachid>122055</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-11 14:20:32 -0800</bug_when>
    <thetext>Comment on attachment 122055
test QueueStatusServer, fix argv

Won&apos;t the __init__.py tree get called when we try to load this module in order to run main?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534279</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-11 14:44:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 122055 [details])
&gt; Won&apos;t the __init__.py tree get called when we try to load this module in order to run main?

I&apos;m not sure what you&apos;re asking, but webkitpy/__init__.py and webkitpy/test/__init__.py will both be loaded, yes. Is your concern is that this might interfere with the stale .pyc deletions? I think if one was to delete the __init__.py file, then test-webkitpy would pass once, delete the stale pyc files, and then fail on the next run. That might be good enough. 

Another way to get around this without having to leave configure_logging() and clean_packages() in test-webkitpy itself would be to test for the existence of those two files explicitly in test-webkitpy and bail out if they&apos;re missing.

Thoughts? Or are you thinking of something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534356</commentid>
    <comment_count>8</comment_count>
      <attachid>122055</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-11 15:55:27 -0800</bug_when>
    <thetext>Comment on attachment 122055
test QueueStatusServer, fix argv

I Think this is OK.  Chris&apos;s original design was a bit overambitious. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534421</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-11 16:59:05 -0800</bug_when>
    <thetext>Committed r104768: &lt;http://trac.webkit.org/changeset/104768&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121965</attachid>
            <date>2012-01-10 19:56:52 -0800</date>
            <delta_ts>2012-01-11 11:21:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76021-20120110195651.patch</filename>
            <type>text/plain</type>
            <size>20749</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NjU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQ4ODBhNGJlNDMyYWM3YzkxMjZkYTUxMDdkNGExMTI0
NzU2ZjgyYS4uZjBlNmFjM2NhMDk0NDMzNTliYjA4NjM2MDgxYzhmNmJkOWY2NThlOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAxLTEwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHRlc3Qtd2Via2l0cHk6IHB1c2ggbW9yZSBsb2dpYyBpbnRvIHdlYmtpdHB5LnRlc3Qu
bWFpbiwgY2xlYW4gdXAgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJIHBsYW4gdG8gYWRkIG1vcmUgZnVuY3Rpb25hbGl0eSB0byB0ZXN0LXdlYmtp
dHB5LCBidXQgaXQgaXMKKyAgICAgICAgZGlmZmljdWx0IHRvIGhhY2sgb24gbm93OyB0aGlzIHBh
dGNoIGlzIHRoZSBmaXJzdCBvZiB0d28gdGhhdAorICAgICAgICBicmluZ3MgdGVzdC13ZWJraXRw
eSBtb3JlIGlubGluZSB3aXRoIGN1cnJlbnQgY29kaW5nIHN0eWxlIGJ5CisgICAgICAgIHB1c2hp
bmcgbW9yZSBsb2dpYyBpbnRvIHRoZSB3ZWJraXRweS50ZXN0Lm1haW4uVGVzdGVyIGNsYXNzIChz
bworICAgICAgICB0aGF0IGl0IHdpbGwgYmUgdGVzdGFibGUgaXRzZWxmKS4KKyAgICAgICAgCisg
ICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBwYXRj
aC4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgKF9wYXRoX2Zy
b21fd2Via2l0X3Jvb3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5
OgorICAgICAgICAoVGVzdGVyKToKKyAgICAgICAgKFRlc3Rlci5pbml0KToKKyAgICAgICAgKFRl
c3Rlci5jb25maWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChUZXN0ZXIuY29uZmlndXJlX2xvZ2dp
bmcuZmlsdGVyKToKKyAgICAgICAgKFRlc3Rlci5jbGVhbl9wYWNrYWdlcyk6CisgICAgICAgIChU
ZXN0ZXIucnVuX3Rlc3RzKToKKwogMjAxMi0wMS0xMCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsYXJpZnkgcnVuLXdlYmtpdC10ZXN0cyBvcHRpb25z
IHJlc2V0LXJlc3VsdHMgYW5kIG5ldy1iYXNlbGluZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy90ZXN0LXdlYmtpdHB5IGIvVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5CmluZGV4IGI3MjEx
NWM4YmUxYWNlNDQzNTJkMjhhN2EzZGIzZjY1ZGViNjVmM2QuLjYyNDBkZWUxM2E3NmI3NjgwYmRl
NzA2NmEyYzYzNmY5ZWI2ZWNjMTcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJr
aXRweQorKysgYi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKQEAgLTMyLDE3OSArMzIsMzIg
QEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi0jIFdlIHN0cmljdGx5
IGxpbWl0IHdoYXQgaXMgaW1wb3J0ZWQgZnJvbSB3ZWJraXRweSB1bnRpbCB3ZSBnZXQgYSBjaGFu
Y2UKLSMgdG8gZGVsZXRlIGFueSBzdHJheSAqLnB5YyBmaWxlcy4KLWltcG9ydCB3ZWJraXRweS5j
b21tb24udmVyc2lvbl9jaGVjawotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Vi
a2l0cHkiKQotCi0KLSMgVmVyYm9zZSBsb2dnaW5nIGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRl
c3Qtd2Via2l0cHkgY29kZSB0aGF0IHJ1bnMKLSMgYmVmb3JlIHRoZSBhY3R1YWwgdW5pdCB0ZXN0
cyAtLSB0aGluZ3MgbGlrZSBhdXRvaW5zdGFsbCBkb3dubG9hZGluZyBhbmQKLSMgdW5pdC10ZXN0
IGF1dG8tZGV0ZWN0aW9uIGxvZ2ljLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB2ZXJib3NlIGxv
Z2dpbmcKLSMgb2YgdGhlIHVuaXQgdGVzdHMgdGhlbXNlbHZlcyAoaS5lLiB0aGUgdW5pdHRlc3Qg
bW9kdWxlJ3MgLS12ZXJib3NlIGZsYWcpLgotZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKGlzX3ZlcmJv
c2VfbG9nZ2luZyk6Ci0gICAgIiIiQ29uZmlndXJlIHRoZSByb290IGxvZ2dlci4KLQotICAgIENv
bmZpZ3VyZSB0aGUgcm9vdCBsb2dnZXIgbm90IHRvIGxvZyBhbnkgbWVzc2FnZXMgZnJvbSB3ZWJr
aXRweSAtLQotICAgIGV4Y2VwdCBmb3IgbWVzc2FnZXMgZnJvbSB0aGUgYXV0b2luc3RhbGwgbW9k
dWxlLiAgQWxzbyBzZXQgdGhlCi0gICAgbG9nZ2luZyBsZXZlbCBhcyBkZXNjcmliZWQgYmVsb3cu
Ci0KLSAgICBBcmdzOgotICAgICAgaXNfdmVyYm9zZV9sb2dnaW5nOiBBIGJvb2xlYW4gdmFsdWUg
b2Ygd2hldGhlciBsb2dnaW5nIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICB2
ZXJib3NlLiAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgdHJ1ZSwgdGhlIGxvZ2dpbmcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV2ZWwgZm9yIHRoZSBoYW5kbGVyIG9uIHRoZSByb290IGxvZ2dl
ciBpcyBzZXQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5ERUJVRy4gIE90
aGVyd2lzZSwgaXQgaXMgc2V0IHRvIGxvZ2dpbmcuSU5GTy4KLQotICAgICIiIgotICAgIGlmIGlz
X3ZlcmJvc2VfbG9nZ2luZzoKLSAgICAgICAgbG9nZ2luZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcK
LSAgICBlbHNlOgotICAgICAgICBsb2dnaW5nX2xldmVsID0gbG9nZ2luZy5JTkZPCi0KLSAgICBo
YW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCi0gICAgIyBXZSBjb25z
dHJhaW4gdGhlIGxldmVsIG9uIHRoZSBoYW5kbGVyIHJhdGhlciB0aGFuIG9uIHRoZSByb290Ci0g
ICAgIyBsb2dnZXIgaXRzZWxmLiAgVGhpcyBpcyBwcm9iYWJseSBiZXR0ZXIgYmVjYXVzZSB0aGUg
aGFuZGxlciBpcwotICAgICMgY29uZmlndXJlZCBhbmQga25vd24gb25seSB0byB0aGlzIG1vZHVs
ZSwgd2hlcmVhcyB0aGUgcm9vdCBsb2dnZXIKLSAgICAjIGlzIGFuIG9iamVjdCBzaGFyZWQgKGFu
ZCBwb3RlbnRpYWxseSBtb2RpZmllZCkgYnkgbWFueSBtb2R1bGVzLgotICAgICMgTW9kaWZ5aW5n
IHRoZSBoYW5kbGVyLCB0aGVuLCBpcyBsZXNzIGludHJ1c2l2ZSBhbmQgbGVzcyBsaWtlbHkgdG8K
LSAgICAjIGludGVyZmVyZSB3aXRoIG1vZGlmaWNhdGlvbnMgbWFkZSBieSBvdGhlciBtb2R1bGVz
IChlLmcuIGluIHVuaXQKLSAgICAjIHRlc3RzKS4KLSAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dp
bmdfbGV2ZWwpCi0gICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIiUobmFtZSlzOiAl
KGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMiKQotICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZv
cm1hdHRlcikKLQotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICBsb2dnZXIu
YWRkSGFuZGxlcihoYW5kbGVyKQotICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLk5PVFNFVCkK
LQotICAgICMgRmlsdGVyIG91dCBtb3N0IHdlYmtpdHB5IG1lc3NhZ2VzLgotICAgICMKLSAgICAj
IE1lc3NhZ2VzIGNhbiBiZSBzZWxlY3RpdmVseSByZS1lbmFibGVkIGZvciB0aGlzIHNjcmlwdCBi
eSB1cGRhdGluZwotICAgICMgdGhpcyBtZXRob2QgYWNjb3JkaW5nbHkuCi0gICAgZGVmIGZpbHRl
cihyZWNvcmQpOgotICAgICAgICAiIiJGaWx0ZXIgb3V0IGF1dG9pbnN0YWxsIGFuZCBub24tdGhp
cmQtcGFydHkgd2Via2l0cHkgbWVzc2FnZXMuIiIiCi0gICAgICAgICMgRklYTUU6IEZpZ3VyZSBv
dXQgYSB3YXkgbm90IHRvIHVzZSBzdHJpbmdzIGhlcmUsIGZvciBleGFtcGxlIGJ5Ci0gICAgICAg
ICMgICAgICAgIHVzaW5nIHN5bnRheCBsaWtlIHdlYmtpdHB5LnRlc3QuX19uYW1lX18uICBXZSB3
YW50IHRvIGJlCi0gICAgICAgICMgICAgICAgIHN1cmUgbm90IHRvIGltcG9ydCBhbnkgbm9uLVB5
dGhvbiAyLjQgY29kZSwgdGhvdWdoLCB1bnRpbAotICAgICAgICAjICAgICAgICBhZnRlciB0aGUg
dmVyc2lvbi1jaGVja2luZyBjb2RlIGhhcyBleGVjdXRlZC4KLSAgICAgICAgaWYgKHJlY29yZC5u
YW1lLnN0YXJ0c3dpdGgoIndlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uYXV0b2luc3RhbGwiKSBvcgot
ICAgICAgICAgICAgcmVjb3JkLm5hbWUuc3RhcnRzd2l0aCgid2Via2l0cHkudGVzdCIpKToKLSAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHJlY29yZC5uYW1lLnN0YXJ0c3dpdGgo
IndlYmtpdHB5Iik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRy
dWUKLQotICAgIHRlc3RpbmdfZmlsdGVyID0gbG9nZ2luZy5GaWx0ZXIoKQotICAgIHRlc3Rpbmdf
ZmlsdGVyLmZpbHRlciA9IGZpbHRlcgotCi0gICAgIyBEaXNwbGF5IGEgbWVzc2FnZSBzbyBkZXZl
bG9wZXJzIGFyZSBub3QgbXlzdGlmaWVkIGFzIHRvIHdoeQotICAgICMgbG9nZ2luZyBkb2VzIG5v
dCB3b3JrIGluIHRoZSB1bml0IHRlc3RzLgotICAgIF9sb2cuaW5mbygiU3VwcHJlc3NpbmcgbW9z
dCB3ZWJraXRweSBsb2dnaW5nIHdoaWxlIHJ1bm5pbmcgdW5pdCB0ZXN0cy4iKQotICAgIGhhbmRs
ZXIuYWRkRmlsdGVyKHRlc3RpbmdfZmlsdGVyKQotCi0KLWRlZiBfY2xlYW5fcHljX2ZpbGVzKGRp
cl90b19jbGVhbik6Ci0gICAgIiIiRGVsZXRlIGZyb20gdW5kZXIgYSBkaXJlY3RvcnkgYWxsIC5w
eWMgZmlsZXMgdGhhdCBoYXZlIG5vIC5weSBmaWxlLiIiIgotICAgIF9sb2cuZGVidWcoIkNsZWFu
aW5nIG9ycGhhbmVkICoucHljIGZpbGVzIGZyb206ICVzIiAlIGRpcl90b19jbGVhbikKLSAgICBm
b3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1lcyBpbiBvcy53YWxrKGRpcl90b19jbGVh
bik6Ci0gICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKLSAgICAgICAgICAgIGlm
IGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpIGFuZCBmaWxlX25hbWVbOi0xXSBub3QgaW4gZmls
ZV9uYW1lczoKLSAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3Bh
dGgsIGZpbGVfbmFtZSkKLSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIkRlbGV0aW5nIG9ycGhh
biAqLnB5YyBmaWxlOiAlcyIgJSBmaWxlX3BhdGgpCi0gICAgICAgICAgICAgICAgb3MucmVtb3Zl
KGZpbGVfcGF0aCkKKyMgTk9URTogV2UgaW50ZW50aW9uYWxseSBsaW1pdCBpbXBvcnRzIGZyb20g
d2Via2l0cHkgaGVyZSB0byBtaW5pbWl6ZSB0aGUKKyMgY2hhbmNlcyBvZiBicmVha2luZyB0ZXN0
LXdlYmtpdHB5IGl0c2VsZi4KK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB2ZXJzaW9uX2No
ZWNrCitmcm9tIHdlYmtpdHB5LnRlc3QgaW1wb3J0IG1haW4KIAogCi1kZWYgX2NsZWFuX3BhY2th
Z2VzKGV4dGVybmFsX3BhY2thZ2VfcGF0aHMpOgotICAgIHdlYmtpdHB5X2RpciA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAid2Via2l0cHkiKQotICAgIHBhY2thZ2Vf
cGF0aHMgPSBbd2Via2l0cHlfZGlyXSArIGV4dGVybmFsX3BhY2thZ2VfcGF0aHMKLSAgICBmb3Ig
cGF0aCBpbiBwYWNrYWdlX3BhdGhzOgotICAgICAgICBfY2xlYW5fcHljX2ZpbGVzKHBhdGgpCi0K
LQotZGVmIGluaXQoY29tbWFuZF9hcmdzLCBleHRlcm5hbF9wYWNrYWdlX3BhdGhzKToKLSAgICAi
IiJFeGVjdXRlIGNvZGUgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20gd2Via2l0cHkudW5pdHRlc3Rz
LgotCi0gICAgQXJnczoKLSAgICAgICAgY29tbWFuZF9hcmdzOiBUaGUgbGlzdCBvZiBjb21tYW5k
LWxpbmUgYXJndW1lbnRzIC0tIHVzdWFsbHkKLSAgICAgICAgICAgICAgICAgICAgICBzeXMuYXJn
dlsxOl0uCi0KLSAgICAiIiIKLSAgICB2ZXJib3NlX2xvZ2dpbmdfZmxhZyA9ICItLXZlcmJvc2Ut
bG9nZ2luZyIKLSAgICBpc192ZXJib3NlX2xvZ2dpbmcgPSB2ZXJib3NlX2xvZ2dpbmdfZmxhZyBp
biBjb21tYW5kX2FyZ3MKLSAgICBpZiBpc192ZXJib3NlX2xvZ2dpbmc6Ci0gICAgICAgICMgUmVt
b3ZlIHRoZSBmbGFnIHNvIGl0IGRvZXNuJ3QgY2F1c2UgdW5pdHRlc3QubWFpbigpIHRvIGVycm9y
IG91dC4KLSAgICAgICAgIwotICAgICAgICAjIEZJWE1FOiBHZXQgZG9jdW1lbnRhdGlvbiBmb3Ig
dGhlIC0tdmVyYm9zZS1sb2dnaW5nIGZsYWcgdG8gc2hvdwotICAgICAgICAjICAgICAgICB1cCBp
biB0aGUgdXNhZ2UgaW5zdHJ1Y3Rpb25zLCB3aGljaCBhcmUgY3VycmVudGx5IGdlbmVyYXRlZAot
ICAgICAgICAjICAgICAgICBieSB1bml0dGVzdC5tYWluKCkuICBJdCdzIHBvc3NpYmxlIHRoYXQg
dGhpcyB3aWxsIHJlcXVpcmUKLSAgICAgICAgIyAgICAgICAgcmUtaW1wbGVtZW50aW5nIHRoZSBv
cHRpb24gcGFyc2VyIGZvciB1bml0dGVzdC5tYWluKCkKLSAgICAgICAgIyAgICAgICAgc2luY2Ug
dGhlcmUgbWF5IG5vdCBiZSBhbiBlYXN5IHdheSB0byBtb2RpZnkgaXRzIGV4aXN0aW5nCi0gICAg
ICAgICMgICAgICAgIG9wdGlvbiBwYXJzZXIuCi0gICAgICAgIHN5cy5hcmd2LnJlbW92ZSh2ZXJi
b3NlX2xvZ2dpbmdfZmxhZykKLQotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGlzX3ZlcmJvc2VfbG9n
Z2luZykKLSAgICBfbG9nLmRlYnVnKCJWZXJib3NlIFdlYktpdCBsb2dnaW5nIGVuYWJsZWQuIikK
LQotICAgICMgV2UgY2xlYW4gb3JwaGFuZWQgKi5weWMgZmlsZXMgZnJvbSB0aGUgcGFja2FnZXMg
cHJpb3IgdG8gaW1wb3J0aW5nIGZyb20KLSAgICAjIHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgbm8g
aW1wb3J0IHN0YXRlbWVudHMgZmFsc2VseSBzdWNjZWVkLgotICAgICMgVGhpcyBoZWxwcyB0byBj
aGVjayB0aGF0IGltcG9ydCBzdGF0ZW1lbnRzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseQot
ICAgICMgYWZ0ZXIgYW55IGZpbGUgbW92ZXMuICBPdGhlcndpc2UsIGluY29ycmVjdCBpbXBvcnQg
c3RhdGVtZW50cyBjYW4KLSAgICAjIGJlIG1hc2tlZC4KLSAgICAjCi0gICAgIyBGb3IgZXhhbXBs
ZSwgaWYgd2Via2l0cHkvY29tbW9uL2hvc3QucHkgd2VyZSBtb3ZlZCB0byBhCi0gICAgIyBkaWZm
ZXJlbnQgbG9jYXRpb24gd2l0aG91dCBjaGFuZ2luZyBhbnkgaW1wb3J0IHN0YXRlbWVudHMsIGFu
ZCBpZgotICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgLnB5YyBmaWxlIHdlcmUgbGVmdCBiZWhpbmQg
d2l0aG91dCBkZWxldGluZyBpdCwKLSAgICAjIHRoZW4gImltcG9ydCB3ZWJraXRweS5jb21tb24u
aG9zdCIgd291bGQgY29udGludWUgdG8gc3VjY2VlZAotICAgICMgZXZlbiB0aG91Z2ggaXQgd291
bGQgZmFpbCBmb3Igc29tZW9uZSBjaGVja2luZyBvdXQgYSBmcmVzaCBjb3B5Ci0gICAgIyBvZiB0
aGUgc291cmNlIHRyZWUuICBUaGlzIGlzIGJlY2F1c2Ugb2YgYSBQeXRob24gZmVhdHVyZToKLSAg
ICAjCi0gICAgIyAiSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBhIGZpbGUgY2FsbGVkIHNwYW0ucHlj
IChvciBzcGFtLnB5byB3aGVuIC1PCi0gICAgIyBpcyB1c2VkKSB3aXRob3V0IGEgZmlsZSBzcGFt
LnB5IGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoaXMgY2FuIGJlIHVzZWQKLSAgICAjIHRvIGRpc3Ry
aWJ1dGUgYSBsaWJyYXJ5IG9mIFB5dGhvbiBjb2RlIGluIGEgZm9ybSB0aGF0IGlzIG1vZGVyYXRl
bHkKLSAgICAjIGhhcmQgdG8gcmV2ZXJzZSBlbmdpbmVlci4iCi0gICAgIwotICAgICMgKCBodHRw
Oi8vZG9jcy5weXRob24ub3JnL3R1dG9yaWFsL21vZHVsZXMuaHRtbCNjb21waWxlZC1weXRob24t
ZmlsZXMgKQotICAgICMKLSAgICAjIERlbGV0aW5nIHRoZSBvcnBoYW5lZCAucHljIGZpbGUgcHJp
b3IgdG8gaW1wb3J0aW5nLCBob3dldmVyLCB3b3VsZAotICAgICMgY2F1c2UgYW4gSW1wb3J0RXJy
b3IgdG8gb2NjdXIgb24gaW1wb3J0IGFzIGRlc2lyZWQuCi0gICAgX2NsZWFuX3BhY2thZ2VzKGV4
dGVybmFsX3BhY2thZ2VfcGF0aHMpCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Vi
a2l0cHkiKQogCiAKLWRlZiBfcGF0aF9mcm9tX3dlYmtpdF9yb290KCpjb21wb25lbnRzKToKK2lm
IF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgd2Via2l0X3Jvb3QgPSBvcy5wYXRoLmRpcm5h
bWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKQotICAgIHJldHVy
biBvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICpjb21wb25lbnRzKQotCiAKLWRlZiBfdGVzdF9p
bXBvcnQobW9kdWxlX3BhdGgpOgotICAgIHRyeToKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9z
LnBhdGguZGlybmFtZShtb2R1bGVfcGF0aCkpCi0gICAgICAgIG1vZHVsZV9uYW1lID0gb3MucGF0
aC5iYXNlbmFtZShtb2R1bGVfcGF0aCkKLSAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSkK
LSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICBt
ZXNzYWdlID0gIlNraXBwaW5nIHRlc3RzIGluICVzIGR1ZSB0byBmYWlsdXJlICglcykuIiAlICht
b2R1bGVfcGF0aCwgZSkKLSAgICAgICAgaWYgbW9kdWxlX25hbWUuZW5kc3dpdGgoIlF1ZXVlU3Rh
dHVzU2VydmVyIik6Ci0gICAgICAgICAgICBtZXNzYWdlICs9ICIgIFRoaXMgbW9kdWxlIGlzIG9w
dGlvbmFsLiAgVGhlIGZhaWx1cmUgaXMgbGlrZWx5IGR1ZSB0byBhIG1pc3NpbmcgR29vZ2xlIEFw
cEVuZ2luZSBpbnN0YWxsLiAgKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lL2Rvd25s
b2Fkcy5odG1sKSIKLSAgICAgICAgX2xvZy53YXJuKG1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBG
YWxzZQorICAgIHRlc3RlciA9IG1haW4uVGVzdGVyKCkKKyAgICB0ZXN0ZXIuaW5pdChzeXMuYXJn
dlsxOl0pCiAKLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgIyBGSVhNRTogV2Ugc2hv
dWxkIHByb2JhYmx5IHRlc3QgZWFjaCBwYWNrYWdlIHNlcGFyYXRlbHkgdG8gYXZvaWQgbmFtaW5n
IGNvbmZsaWN0cy4KLSAgICBleHRlcm5hbF9wYWNrYWdlX3BhdGhzID0gWwotICAgICAgICBfcGF0
aF9mcm9tX3dlYmtpdF9yb290KCdTb3VyY2UnLCAnV2ViS2l0MicsICdTY3JpcHRzJywgJ3dlYmtp
dDInKSwKLSAgICAgICAgX3BhdGhfZnJvbV93ZWJraXRfcm9vdCgnVG9vbHMnLCAnUXVldWVTdGF0
dXNTZXJ2ZXInKSwKKyAgICBkaXJzID0gWworICAgICAgICBvcy5wYXRoLmpvaW4od2Via2l0X3Jv
b3QsICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JyksCisgICAgICAgIG9zLnBhdGguam9p
bih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQyJywgJ1NjcmlwdHMnLCAnd2Via2l0Micp
LAogICAgIF0KLSAgICBpbml0KHN5cy5hcmd2WzE6XSwgZXh0ZXJuYWxfcGFja2FnZV9wYXRocykK
LQotICAgICMgV2UgaW1wb3J0IHRoZSB1bml0IHRlc3QgY29kZSBhZnRlciBpbml0KCkgdG8gZW5z
dXJlIHRoYXQgYW55Ci0gICAgIyBQeXRob24gdmVyc2lvbiB3YXJuaW5ncyBhcmUgZGlzcGxheWVk
IGluIGNhc2UgYW4gZXJyb3Igb2NjdXJzCi0gICAgIyB3aGlsZSBpbnRlcnByZXRpbmcgd2Via2l0
cHkudW5pdHRlc3RzLiAgVGhpcyBhbHNvIGFsbG93cwotICAgICMgbG9nZ2luZyB0byBiZSBjb25m
aWd1cmVkIHByaW9yIHRvIGltcG9ydGluZyAtLSBmb3IgZXhhbXBsZSB0bwotICAgICMgZW5hYmxl
IHRoZSBkaXNwbGF5IG9mIGF1dG9pbnN0YWxsIGxvZ2dpbmcubG9nIG1lc3NhZ2VzIHdoaWxlCi0g
ICAgIyBydW5uaW5nIHRoZSB1bml0IHRlc3RzLgotICAgIGZyb20gd2Via2l0cHkudGVzdC5tYWlu
IGltcG9ydCBUZXN0ZXIKIAotICAgIGV4dGVybmFsX3BhY2thZ2VfcGF0aHMgPSBmaWx0ZXIoX3Rl
c3RfaW1wb3J0LCBleHRlcm5hbF9wYWNrYWdlX3BhdGhzKQorICAgIHRyeToKKyAgICAgICAgaW1w
b3J0IGdvb2dsZS5hcHBlbmdpbmUKKyAgICAgICAgZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHdl
YmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICBleGNlcHQgSW1w
b3J0RXJyb3IsIGU6CisgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2
ZXIgdGVzdHM7IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxl
ZC4nKQogCi0gICAgVGVzdGVyKCkucnVuX3Rlc3RzKHN5cy5hcmd2LCBleHRlcm5hbF9wYWNrYWdl
X3BhdGhzKQorICAgIHRlc3Rlci5jbGVhbl9wYWNrYWdlcyhkaXJzKQorICAgIHRlc3Rlci5ydW5f
dGVzdHMoc3lzLmFyZ3YsIGRpcnMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4
IDliMDNjY2VkOTEwNTlmYjBjZWIzOTM4MzE2MmEzOGMzOGQyMTJkZTQuLjUyNzMxZjVhZTJiNDJi
MzQzNTFiNDYyZjMwNmVmN2ZhOTMxMWVhYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5CkBAIC0yMCwzNSArMjAsMTQxIEBACiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLSIiIkNvbnRhaW5zIHRoZSBlbnRyeSBtZXRob2QgZm9yIHRlc3Qtd2Via2l0cHku
IiIiCisiIiJ1bml0IHRlc3RpbmcgY29kZSBmb3Igd2Via2l0cHkuIiIiCiAKIGltcG9ydCBsb2dn
aW5nCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgd2Vi
a2l0cHkKLQorIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvIG5vdCBkZXBlbmQgb24gYW55dGhp
bmcgZWxzZSBpbiB3ZWJraXRweSBoZXJlIHRvIGF2b2lkIGJyZWFraW5nIHRlc3Qtd2Via2l0cHku
CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBjbGFzcyBUZXN0ZXIo
b2JqZWN0KToKKyAgICAiIiJ3ZWJraXRweSB1bml0IHRlc3RzIGRyaXZlciAoZmluZHMgYW5kIHJ1
bnMgdGVzdHMpLiIiIgogCi0gICAgIiIiRGlzY292ZXJzIGFuZCBydW5zIHdlYmtpdHB5IHVuaXQg
dGVzdHMuIiIiCisgICAgZGVmIGluaXQoc2VsZiwgY29tbWFuZF9hcmdzKToKKyAgICAgICAgIiIi
RXhlY3V0ZSBjb2RlIHByaW9yIHRvIGltcG9ydGluZyBmcm9tIHdlYmtpdHB5LnVuaXR0ZXN0cy4K
IAotICAgIGRlZiBfZmluZF90ZXN0X2ZpbGVzKHNlbGYsIHdlYmtpdHB5X2Rpciwgc3VmZml4KToK
LSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBwYXRocyB0byBhbGwgdW5pdC10ZXN0IGZpbGVz
LiIiIgotICAgICAgICB1bml0dGVzdF9wYXRocyA9IFtdICAjIFJldHVybiB2YWx1ZS4KKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICAgIGNvbW1hbmRfYXJnczogVGhlIGxpc3Qgb2YgY29tbWFuZC1s
aW5lIGFyZ3VtZW50cyAtLSB1c3VhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuYXJn
dlsxOl0uCiAKLSAgICAgICAgZm9yIGRpcl9wYXRoLCBkaXJfbmFtZXMsIGZpbGVfbmFtZXMgaW4g
b3Mud2Fsayh3ZWJraXRweV9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgdmVyYm9zZV9sb2dn
aW5nX2ZsYWcgPSAiLS12ZXJib3NlLWxvZ2dpbmciCisgICAgICAgIGlzX3ZlcmJvc2VfbG9nZ2lu
ZyA9IHZlcmJvc2VfbG9nZ2luZ19mbGFnIGluIGNvbW1hbmRfYXJncworICAgICAgICBpZiBpc192
ZXJib3NlX2xvZ2dpbmc6CisgICAgICAgICAgICAjIFJlbW92ZSB0aGUgZmxhZyBzbyBpdCBkb2Vz
bid0IGNhdXNlIHVuaXR0ZXN0Lm1haW4oKSB0byBlcnJvciBvdXQuCisgICAgICAgICAgICAjCisg
ICAgICAgICAgICAjIEZJWE1FOiBHZXQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIC0tdmVyYm9zZS1s
b2dnaW5nIGZsYWcgdG8gc2hvdworICAgICAgICAgICAgIyAgICAgICAgdXAgaW4gdGhlIHVzYWdl
IGluc3RydWN0aW9ucywgd2hpY2ggYXJlIGN1cnJlbnRseSBnZW5lcmF0ZWQKKyAgICAgICAgICAg
ICMgICAgICAgIGJ5IHVuaXR0ZXN0Lm1haW4oKS4gIEl0J3MgcG9zc2libGUgdGhhdCB0aGlzIHdp
bGwgcmVxdWlyZQorICAgICAgICAgICAgIyAgICAgICAgcmUtaW1wbGVtZW50aW5nIHRoZSBvcHRp
b24gcGFyc2VyIGZvciB1bml0dGVzdC5tYWluKCkKKyAgICAgICAgICAgICMgICAgICAgIHNpbmNl
IHRoZXJlIG1heSBub3QgYmUgYW4gZWFzeSB3YXkgdG8gbW9kaWZ5IGl0cyBleGlzdGluZworICAg
ICAgICAgICAgIyAgICAgICAgb3B0aW9uIHBhcnNlci4KKyAgICAgICAgICAgIHN5cy5hcmd2LnJl
bW92ZSh2ZXJib3NlX2xvZ2dpbmdfZmxhZykKKworICAgICAgICBpZiBpc192ZXJib3NlX2xvZ2dp
bmc6CisgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9sb2dnaW5nKGxvZ2dpbmcuREVCVUcpCisg
ICAgICAgICAgICBfbG9nLmRlYnVnKCJWZXJib3NlIFdlYktpdCBsb2dnaW5nIGVuYWJsZWQuIikK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX2xvZ2dpbmcobG9nZ2lu
Zy5JTkZPKQorCisgICAgIyBWZXJib3NlIGxvZ2dpbmcgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcg
dGVzdC13ZWJraXRweSBjb2RlIHRoYXQgcnVucworICAgICMgYmVmb3JlIHRoZSBhY3R1YWwgdW5p
dCB0ZXN0cyAtLSB0aGluZ3MgbGlrZSBhdXRvaW5zdGFsbCBkb3dubG9hZGluZyBhbmQKKyAgICAj
IHVuaXQtdGVzdCBhdXRvLWRldGVjdGlvbiBsb2dpYy4gIFRoaXMgaXMgZGlmZmVyZW50IGZyb20g
dmVyYm9zZSBsb2dnaW5nCisgICAgIyBvZiB0aGUgdW5pdCB0ZXN0cyB0aGVtc2VsdmVzIChpLmUu
IHRoZSB1bml0dGVzdCBtb2R1bGUncyAtLXZlcmJvc2UgZmxhZykuCisgICAgZGVmIGNvbmZpZ3Vy
ZV9sb2dnaW5nKHNlbGYsIGxvZ19sZXZlbCk6CisgICAgICAgICIiIkNvbmZpZ3VyZSB0aGUgcm9v
dCBsb2dnZXIuCisKKyAgICAgICAgQ29uZmlndXJlIHRoZSByb290IGxvZ2dlciBub3QgdG8gbG9n
IGFueSBtZXNzYWdlcyBmcm9tIHdlYmtpdHB5IC0tCisgICAgICAgIGV4Y2VwdCBmb3IgbWVzc2Fn
ZXMgZnJvbSB0aGUgYXV0b2luc3RhbGwgbW9kdWxlLiAgQWxzbyBzZXQgdGhlCisgICAgICAgIGxv
Z2dpbmcgbGV2ZWwgYXMgZGVzY3JpYmVkIGJlbG93LgorICAgICAgICAiIiIKKyAgICAgICAgaGFu
ZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3RkZXJyKQorICAgICAgICAjIFdlIGNv
bnN0cmFpbiB0aGUgbGV2ZWwgb24gdGhlIGhhbmRsZXIgcmF0aGVyIHRoYW4gb24gdGhlIHJvb3QK
KyAgICAgICAgIyBsb2dnZXIgaXRzZWxmLiAgVGhpcyBpcyBwcm9iYWJseSBiZXR0ZXIgYmVjYXVz
ZSB0aGUgaGFuZGxlciBpcworICAgICAgICAjIGNvbmZpZ3VyZWQgYW5kIGtub3duIG9ubHkgdG8g
dGhpcyBtb2R1bGUsIHdoZXJlYXMgdGhlIHJvb3QgbG9nZ2VyCisgICAgICAgICMgaXMgYW4gb2Jq
ZWN0IHNoYXJlZCAoYW5kIHBvdGVudGlhbGx5IG1vZGlmaWVkKSBieSBtYW55IG1vZHVsZXMuCisg
ICAgICAgICMgTW9kaWZ5aW5nIHRoZSBoYW5kbGVyLCB0aGVuLCBpcyBsZXNzIGludHJ1c2l2ZSBh
bmQgbGVzcyBsaWtlbHkgdG8KKyAgICAgICAgIyBpbnRlcmZlcmUgd2l0aCBtb2RpZmljYXRpb25z
IG1hZGUgYnkgb3RoZXIgbW9kdWxlcyAoZS5nLiBpbiB1bml0CisgICAgICAgICMgdGVzdHMpLgor
ICAgICAgICBoYW5kbGVyLnNldExldmVsKGxvZ19sZXZlbCkKKyAgICAgICAgZm9ybWF0dGVyID0g
bG9nZ2luZy5Gb3JtYXR0ZXIoIiUobWVzc2FnZSlzIikKKyAgICAgICAgaGFuZGxlci5zZXRGb3Jt
YXR0ZXIoZm9ybWF0dGVyKQorCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkK
KyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgbG9nZ2VyLnNldExl
dmVsKGxvZ2dpbmcuTk9UU0VUKQorCisgICAgICAgICMgRmlsdGVyIG91dCBtb3N0IHdlYmtpdHB5
IG1lc3NhZ2VzLgorICAgICAgICAjCisgICAgICAgICMgTWVzc2FnZXMgY2FuIGJlIHNlbGVjdGl2
ZWx5IHJlLWVuYWJsZWQgZm9yIHRoaXMgc2NyaXB0IGJ5IHVwZGF0aW5nCisgICAgICAgICMgdGhp
cyBtZXRob2QgYWNjb3JkaW5nbHkuCisgICAgICAgIGRlZiBmaWx0ZXIocmVjb3JkKToKKyAgICAg
ICAgICAgICIiIkZpbHRlciBvdXQgYXV0b2luc3RhbGwgYW5kIG5vbi10aGlyZC1wYXJ0eSB3ZWJr
aXRweSBtZXNzYWdlcy4iIiIKKyAgICAgICAgICAgICMgRklYTUU6IEZpZ3VyZSBvdXQgYSB3YXkg
bm90IHRvIHVzZSBzdHJpbmdzIGhlcmUsIGZvciBleGFtcGxlIGJ5CisgICAgICAgICAgICAjICAg
ICAgICB1c2luZyBzeW50YXggbGlrZSB3ZWJraXRweS50ZXN0Ll9fbmFtZV9fLiAgV2Ugd2FudCB0
byBiZQorICAgICAgICAgICAgIyAgICAgICAgc3VyZSBub3QgdG8gaW1wb3J0IGFueSBub24tUHl0
aG9uIDIuNCBjb2RlLCB0aG91Z2gsIHVudGlsCisgICAgICAgICAgICAjICAgICAgICBhZnRlciB0
aGUgdmVyc2lvbi1jaGVja2luZyBjb2RlIGhhcyBleGVjdXRlZC4KKyAgICAgICAgICAgIGlmIChy
ZWNvcmQubmFtZS5zdGFydHN3aXRoKCJ3ZWJraXRweS5jb21tb24uc3lzdGVtLmF1dG9pbnN0YWxs
Iikgb3IKKyAgICAgICAgICAgICAgICByZWNvcmQubmFtZS5zdGFydHN3aXRoKCJ3ZWJraXRweS50
ZXN0IikpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiByZWNv
cmQubmFtZS5zdGFydHN3aXRoKCJ3ZWJraXRweSIpOgorICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0ZXN0aW5nX2ZpbHRlciA9
IGxvZ2dpbmcuRmlsdGVyKCkKKyAgICAgICAgdGVzdGluZ19maWx0ZXIuZmlsdGVyID0gZmlsdGVy
CisKKyAgICAgICAgIyBEaXNwbGF5IGEgbWVzc2FnZSBzbyBkZXZlbG9wZXJzIGFyZSBub3QgbXlz
dGlmaWVkIGFzIHRvIHdoeQorICAgICAgICAjIGxvZ2dpbmcgZG9lcyBub3Qgd29yayBpbiB0aGUg
dW5pdCB0ZXN0cy4KKyAgICAgICAgX2xvZy5pbmZvKCJTdXBwcmVzc2luZyBtb3N0IHdlYmtpdHB5
IGxvZ2dpbmcgd2hpbGUgcnVubmluZyB1bml0IHRlc3RzLiIpCisgICAgICAgIGhhbmRsZXIuYWRk
RmlsdGVyKHRlc3RpbmdfZmlsdGVyKQorCisgICAgZGVmIGNsZWFuX3BhY2thZ2VzKHNlbGYsIGRp
cnMpOgorICAgICAgICAiIiJEZWxldGUgYWxsIC5weWMgZmlsZXMgdW5kZXIgZGlycyB0aGF0IGhh
dmUgbm8gLnB5IGZpbGUuIiIiCisgICAgICAgICMgV2UgY2xlYW4gb3JwaGFuZWQgKi5weWMgZmls
ZXMgZnJvbSB0aGUgcGFja2FnZXMgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20KKyAgICAgICAgIyB0
aGVtIHRvIG1ha2Ugc3VyZSB0aGF0IG5vIGltcG9ydCBzdGF0ZW1lbnRzIGZhbHNlbHkgc3VjY2Vl
ZC4KKyAgICAgICAgIyBUaGlzIGhlbHBzIHRvIGNoZWNrIHRoYXQgaW1wb3J0IHN0YXRlbWVudHMg
aGF2ZSBiZWVuIHVwZGF0ZWQgY29ycmVjdGx5CisgICAgICAgICMgYWZ0ZXIgYW55IGZpbGUgbW92
ZXMuICBPdGhlcndpc2UsIGluY29ycmVjdCBpbXBvcnQgc3RhdGVtZW50cyBjYW4KKyAgICAgICAg
IyBiZSBtYXNrZWQuCisgICAgICAgICMKKyAgICAgICAgIyBGb3IgZXhhbXBsZSwgaWYgd2Via2l0
cHkvY29tbW9uL2hvc3QucHkgd2VyZSBtb3ZlZCB0byBhCisgICAgICAgICMgZGlmZmVyZW50IGxv
Y2F0aW9uIHdpdGhvdXQgY2hhbmdpbmcgYW55IGltcG9ydCBzdGF0ZW1lbnRzLCBhbmQgaWYKKyAg
ICAgICAgIyB0aGUgY29ycmVzcG9uZGluZyAucHljIGZpbGUgd2VyZSBsZWZ0IGJlaGluZCB3aXRo
b3V0IGRlbGV0aW5nIGl0LAorICAgICAgICAjIHRoZW4gImltcG9ydCB3ZWJraXRweS5jb21tb24u
aG9zdCIgd291bGQgY29udGludWUgdG8gc3VjY2VlZAorICAgICAgICAjIGV2ZW4gdGhvdWdoIGl0
IHdvdWxkIGZhaWwgZm9yIHNvbWVvbmUgY2hlY2tpbmcgb3V0IGEgZnJlc2ggY29weQorICAgICAg
ICAjIG9mIHRoZSBzb3VyY2UgdHJlZS4gIFRoaXMgaXMgYmVjYXVzZSBvZiBhIFB5dGhvbiBmZWF0
dXJlOgorICAgICAgICAjCisgICAgICAgICMgIkl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgYSBmaWxl
IGNhbGxlZCBzcGFtLnB5YyAob3Igc3BhbS5weW8gd2hlbiAtTworICAgICAgICAjIGlzIHVzZWQp
IHdpdGhvdXQgYSBmaWxlIHNwYW0ucHkgZm9yIHRoZSBzYW1lIG1vZHVsZS4gVGhpcyBjYW4gYmUg
dXNlZAorICAgICAgICAjIHRvIGRpc3RyaWJ1dGUgYSBsaWJyYXJ5IG9mIFB5dGhvbiBjb2RlIGlu
IGEgZm9ybSB0aGF0IGlzIG1vZGVyYXRlbHkKKyAgICAgICAgIyBoYXJkIHRvIHJldmVyc2UgZW5n
aW5lZXIuIgorICAgICAgICAjCisgICAgICAgICMgKCBodHRwOi8vZG9jcy5weXRob24ub3JnL3R1
dG9yaWFsL21vZHVsZXMuaHRtbCNjb21waWxlZC1weXRob24tZmlsZXMgKQorICAgICAgICAjCisg
ICAgICAgICMgRGVsZXRpbmcgdGhlIG9ycGhhbmVkIC5weWMgZmlsZSBwcmlvciB0byBpbXBvcnRp
bmcsIGhvd2V2ZXIsIHdvdWxkCisgICAgICAgICMgY2F1c2UgYW4gSW1wb3J0RXJyb3IgdG8gb2Nj
dXIgb24gaW1wb3J0IGFzIGRlc2lyZWQuCisgICAgICAgIGZvciBkaXJfdG9fY2xlYW4gaW4gZGly
czoKKyAgICAgICAgICAgIF9sb2cuZGVidWcoIkNsZWFuaW5nIG9ycGhhbmVkICoucHljIGZpbGVz
IGZyb206ICVzIiAlIGRpcl90b19jbGVhbikKKyAgICAgICAgICAgIGZvciBkaXJfcGF0aCwgZGly
X25hbWVzLCBmaWxlX25hbWVzIGluIG9zLndhbGsoZGlyX3RvX2NsZWFuKToKKyAgICAgICAgICAg
ICAgICBmb3IgZmlsZV9uYW1lIGluIGZpbGVfbmFtZXM6CisgICAgICAgICAgICAgICAgICAgIGlm
IGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpIGFuZCBmaWxlX25hbWVbOi0xXSBub3QgaW4gZmls
ZV9uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9p
bihkaXJfcGF0aCwgZmlsZV9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZv
KCJEZWxldGluZyBvcnBoYW4gKi5weWMgZmlsZTogJXMiICUgZmlsZV9wYXRoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVfcGF0aCkKKworICAgIGRlZiBfZmluZF91bmRl
cihzZWxmLCBkaXJfdG9fc2VhcmNoLCBzdWZmaXgpOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0
IG9mIHBhdGhzIHRvIGFsbCBmaWxlcyB1bmRlciBkaXJfdG9fc2VhcmNoIGVuZGluZyBpbiBzdWZm
aXguIiIiCisgICAgICAgIHBhdGhzID0gW10KKyAgICAgICAgZm9yIGRpcl9wYXRoLCBkaXJfbmFt
ZXMsIGZpbGVfbmFtZXMgaW4gb3Mud2FsayhkaXJfdG9fc2VhcmNoKToKICAgICAgICAgICAgIGZv
ciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKLSAgICAgICAgICAgICAgICBpZiBub3QgZmlsZV9u
YW1lLmVuZHN3aXRoKHN1ZmZpeCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICAgICAgdW5pdHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihkaXJfcGF0aCwgZmlsZV9u
YW1lKQotICAgICAgICAgICAgICAgIHVuaXR0ZXN0X3BhdGhzLmFwcGVuZCh1bml0dGVzdF9wYXRo
KQotCi0gICAgICAgIHJldHVybiB1bml0dGVzdF9wYXRocworICAgICAgICAgICAgICAgIGlmIGZp
bGVfbmFtZS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgICAgICAgICBwYXRocy5hcHBl
bmQob3MucGF0aC5qb2luKGRpcl9wYXRoLCBmaWxlX25hbWUpKQorICAgICAgICByZXR1cm4gcGF0
aHMKIAogICAgIGRlZiBfbW9kdWxlc19mcm9tX3BhdGhzKHNlbGYsIHBhY2thZ2Vfcm9vdCwgcGF0
aHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZ1bGx5LXF1YWxpZmllZCBtb2R1bGUg
bmFtZXMgZ2l2ZW4gcGF0aHMuIiIiCkBAIC05Myw4ICsxOTksOCBAQCBjbGFzcyBUZXN0ZXIob2Jq
ZWN0KToKICAgICAgICAgICAgICd3ZWJraXRweS50b19iZV9tb3ZlZC5kZWR1cGxpY2F0ZV90ZXN0
c191bml0dGVzdCcsCiAgICAgICAgIF0KIAotICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgc3lzX2Fy
Z3YsIGV4dGVybmFsX3BhY2thZ2VfcGF0aHM9Tm9uZSk6Ci0gICAgICAgICIiIlJ1biB0aGUgdW5p
dCB0ZXN0cyBpbiBhbGwgKl91bml0dGVzdC5weSBtb2R1bGVzIGluIHdlYmtpdHB5LgorICAgIGRl
ZiBydW5fdGVzdHMoc2VsZiwgc3lzX2FyZ3YsIGRpcnM9Tm9uZSk6CisgICAgICAgICIiIlJ1biBh
bGwgdGhlIHRlc3RzIGZvdW5kIHVuZGVyIGRpcnMuCiAKICAgICAgICAgVGhpcyBtZXRob2QgZXhj
bHVkZXMgIndlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX3VuaXR0ZXN0IiB1bmxlc3MK
ICAgICAgICAgdGhlIC0tYWxsIG9wdGlvbiBpcyB0aGUgc2Vjb25kIGVsZW1lbnQgb2Ygc3lzX2Fy
Z3YuCkBAIC0xMDMsMTMgKzIwOSwxMCBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAg
ICBzeXNfYXJndjogQSByZWZlcmVuY2UgdG8gc3lzLmFyZ3YuCiAKICAgICAgICAgIiIiCi0gICAg
ICAgIGlmIGV4dGVybmFsX3BhY2thZ2VfcGF0aHMgaXMgTm9uZToKLSAgICAgICAgICAgIGV4dGVy
bmFsX3BhY2thZ2VfcGF0aHMgPSBbXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBGSVhN
RTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB3ZWJraXRweSBvZmYgb2YgdXNpbmcgIndlYmtp
dHB5LiIgdG8gcHJlZml4Ci0gICAgICAgICAgICAjIGFsbCBpbmNsdWRlcy4gIElmIHdlIGRpZCB0
aGF0LCB0aGVuIHRoaXMgd291bGQgdXNlIHBhdGggaW5zdGVhZCBvZiBkaXJuYW1lKHBhdGgpLgot
ICAgICAgICAgICAgIyBRdWV1ZVN0YXR1c1NlcnZlci5fX2luaXRfXyBoYXMgYSBzeXMucGF0aCBp
bXBvcnQgaGFjayBkdWUgdG8gdGhpcyBjb2RlLgotICAgICAgICAgICAgc3lzLnBhdGguZXh0ZW5k
KHNldChvcy5wYXRoLmRpcm5hbWUocGF0aCkgZm9yIHBhdGggaW4gZXh0ZXJuYWxfcGFja2FnZV9w
YXRocykpCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3Zpbmcgd2Via2l0
cHkgb2ZmIG9mIHVzaW5nICJ3ZWJraXRweS4iIHRvIHByZWZpeAorICAgICAgICAjIGFsbCBpbmNs
dWRlcy4gIElmIHdlIGRpZCB0aGF0LCB0aGVuIHRoaXMgd291bGQgdXNlIHBhdGggaW5zdGVhZCBv
ZiBkaXJuYW1lKHBhdGgpLgorICAgICAgICAjIFF1ZXVlU3RhdHVzU2VydmVyLl9faW5pdF9fIGhh
cyBhIHN5cy5wYXRoIGltcG9ydCBoYWNrIGR1ZSB0byB0aGlzIGNvZGUuCisgICAgICAgIHN5cy5w
YXRoLmV4dGVuZChzZXQob3MucGF0aC5kaXJuYW1lKHBhdGgpIGZvciBwYXRoIGluIGRpcnMpKQog
CiAgICAgICAgIGlmICctLXhtbCcgaW4gc3lzLmFyZ3Y6CiAgICAgICAgICAgICBzeXMuYXJndi5y
ZW1vdmUoJy0teG1sJykKQEAgLTEyNiwyMyArMjI5LDE5IEBAIGNsYXNzIFRlc3RlcihvYmplY3Qp
OgogCiAgICAgICAgICMgT3RoZXJ3aXNlLCBhdXRvLWRldGVjdCBhbGwgdW5pdCB0ZXN0cy4KIAot
ICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb21iaW5lZCB3aXRoIHRoZSBleHRlcm5h
bF9wYWNrYWdlX3BhdGhzIGNvZGUgYWJvdmUuCi0gICAgICAgIHdlYmtpdHB5X2RpciA9IG9zLnBh
dGguZGlybmFtZSh3ZWJraXRweS5fX2ZpbGVfXykKLQogICAgICAgICBza2lwX2ludGVncmF0aW9u
X3Rlc3RzID0gRmFsc2UKICAgICAgICAgaWYgbGVuKHN5c19hcmd2KSA+IDEgYW5kIHN5cy5hcmd2
WzFdID09ICItLXNraXAtaW50ZWdyYXRpb250ZXN0cyI6CiAgICAgICAgICAgICBzeXMuYXJndi5y
ZW1vdmUoIi0tc2tpcC1pbnRlZ3JhdGlvbnRlc3RzIikKICAgICAgICAgICAgIHNraXBfaW50ZWdy
YXRpb25fdGVzdHMgPSBUcnVlCiAKICAgICAgICAgbW9kdWxlcyA9IFtdCi0gICAgICAgIGZvciBw
YXRoIGluIFt3ZWJraXRweV9kaXJdICsgZXh0ZXJuYWxfcGFja2FnZV9wYXRoczoKLSAgICAgICAg
ICAgIG1vZHVsZXMuZXh0ZW5kKHNlbGYuX21vZHVsZXNfZnJvbV9wYXRocyhwYXRoLCBzZWxmLl9m
aW5kX3Rlc3RfZmlsZXMocGF0aCwgIl91bml0dGVzdC5weSIpKSkKKyAgICAgICAgZm9yIGRpcl90
b19zZWFyY2ggaW4gZGlyczoKKyAgICAgICAgICAgIG1vZHVsZXMuZXh0ZW5kKHNlbGYuX21vZHVs
ZXNfZnJvbV9wYXRocyhkaXJfdG9fc2VhcmNoLCBzZWxmLl9maW5kX3VuZGVyKGRpcl90b19zZWFy
Y2gsICJfdW5pdHRlc3QucHkiKSkpCiAgICAgICAgICAgICBpZiBub3Qgc2tpcF9pbnRlZ3JhdGlv
bl90ZXN0czoKLSAgICAgICAgICAgICAgICBtb2R1bGVzLmV4dGVuZChzZWxmLl9tb2R1bGVzX2Zy
b21fcGF0aHMocGF0aCwgc2VsZi5fZmluZF90ZXN0X2ZpbGVzKHBhdGgsICJfaW50ZWdyYXRpb250
ZXN0LnB5IikpKQorICAgICAgICAgICAgICAgIG1vZHVsZXMuZXh0ZW5kKHNlbGYuX21vZHVsZXNf
ZnJvbV9wYXRocyhkaXJfdG9fc2VhcmNoLCBzZWxmLl9maW5kX3VuZGVyKGRpcl90b19zZWFyY2gs
ICJfaW50ZWdyYXRpb250ZXN0LnB5IikpKQogICAgICAgICBtb2R1bGVzLnNvcnQoKQogCi0gICAg
ICAgICMgVGhpcyBpcyBhIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgdW5pdC10ZXN0
IGRpc2NvdmVyeQotICAgICAgICAjIG1ldGhvZHMgYXJlIHdvcmtpbmcuCisgICAgICAgICMgVGhp
cyBpcyBhIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgdW5pdC10ZXN0IGRpc2NvdmVy
eSBtZXRob2RzIGFyZSB3b3JraW5nLgogICAgICAgICBpZiBsZW4obW9kdWxlcykgPCAxOgogICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyB1bml0LXRlc3QgbW9kdWxlcyBmb3VuZC4iKQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122055</attachid>
            <date>2012-01-11 11:21:33 -0800</date>
            <delta_ts>2012-01-11 15:55:27 -0800</delta_ts>
            <desc>test QueueStatusServer, fix argv</desc>
            <filename>bug-76021-20120111112131.patch</filename>
            <type>text/plain</type>
            <size>23013</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NjU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQ4ODBhNGJlNDMyYWM3YzkxMjZkYTUxMDdkNGExMTI0
NzU2ZjgyYS4uZjBlNmFjM2NhMDk0NDMzNTliYjA4NjM2MDgxYzhmNmJkOWY2NThlOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAxLTEwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHRlc3Qtd2Via2l0cHk6IHB1c2ggbW9yZSBsb2dpYyBpbnRvIHdlYmtpdHB5LnRlc3Qu
bWFpbiwgY2xlYW4gdXAgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJIHBsYW4gdG8gYWRkIG1vcmUgZnVuY3Rpb25hbGl0eSB0byB0ZXN0LXdlYmtp
dHB5LCBidXQgaXQgaXMKKyAgICAgICAgZGlmZmljdWx0IHRvIGhhY2sgb24gbm93OyB0aGlzIHBh
dGNoIGlzIHRoZSBmaXJzdCBvZiB0d28gdGhhdAorICAgICAgICBicmluZ3MgdGVzdC13ZWJraXRw
eSBtb3JlIGlubGluZSB3aXRoIGN1cnJlbnQgY29kaW5nIHN0eWxlIGJ5CisgICAgICAgIHB1c2hp
bmcgbW9yZSBsb2dpYyBpbnRvIHRoZSB3ZWJraXRweS50ZXN0Lm1haW4uVGVzdGVyIGNsYXNzIChz
bworICAgICAgICB0aGF0IGl0IHdpbGwgYmUgdGVzdGFibGUgaXRzZWxmKS4KKyAgICAgICAgCisg
ICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBwYXRj
aC4KKworICAgICAgICAqIFNjcmlwdHMvdGVzdC13ZWJraXRweToKKyAgICAgICAgKF9wYXRoX2Zy
b21fd2Via2l0X3Jvb3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5
OgorICAgICAgICAoVGVzdGVyKToKKyAgICAgICAgKFRlc3Rlci5pbml0KToKKyAgICAgICAgKFRl
c3Rlci5jb25maWd1cmVfbG9nZ2luZyk6CisgICAgICAgIChUZXN0ZXIuY29uZmlndXJlX2xvZ2dp
bmcuZmlsdGVyKToKKyAgICAgICAgKFRlc3Rlci5jbGVhbl9wYWNrYWdlcyk6CisgICAgICAgIChU
ZXN0ZXIucnVuX3Rlc3RzKToKKwogMjAxMi0wMS0xMCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENsYXJpZnkgcnVuLXdlYmtpdC10ZXN0cyBvcHRpb25z
IHJlc2V0LXJlc3VsdHMgYW5kIG5ldy1iYXNlbGluZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy90ZXN0LXdlYmtpdHB5IGIvVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5CmluZGV4IGI3MjEx
NWM4YmUxYWNlNDQzNTJkMjhhN2EzZGIzZjY1ZGViNjVmM2QuLjllMjllMjA5OGQzZGI2NmEzY2Uy
YTIxMzMwMzcxZjZhNWQxMGZmOWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJr
aXRweQorKysgYi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkKQEAgLTMyLDE3OSArMzIsMzYg
QEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi0jIFdlIHN0cmljdGx5
IGxpbWl0IHdoYXQgaXMgaW1wb3J0ZWQgZnJvbSB3ZWJraXRweSB1bnRpbCB3ZSBnZXQgYSBjaGFu
Y2UKLSMgdG8gZGVsZXRlIGFueSBzdHJheSAqLnB5YyBmaWxlcy4KLWltcG9ydCB3ZWJraXRweS5j
b21tb24udmVyc2lvbl9jaGVjawotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Vi
a2l0cHkiKQotCi0KLSMgVmVyYm9zZSBsb2dnaW5nIGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRl
c3Qtd2Via2l0cHkgY29kZSB0aGF0IHJ1bnMKLSMgYmVmb3JlIHRoZSBhY3R1YWwgdW5pdCB0ZXN0
cyAtLSB0aGluZ3MgbGlrZSBhdXRvaW5zdGFsbCBkb3dubG9hZGluZyBhbmQKLSMgdW5pdC10ZXN0
IGF1dG8tZGV0ZWN0aW9uIGxvZ2ljLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB2ZXJib3NlIGxv
Z2dpbmcKLSMgb2YgdGhlIHVuaXQgdGVzdHMgdGhlbXNlbHZlcyAoaS5lLiB0aGUgdW5pdHRlc3Qg
bW9kdWxlJ3MgLS12ZXJib3NlIGZsYWcpLgotZGVmIGNvbmZpZ3VyZV9sb2dnaW5nKGlzX3ZlcmJv
c2VfbG9nZ2luZyk6Ci0gICAgIiIiQ29uZmlndXJlIHRoZSByb290IGxvZ2dlci4KLQotICAgIENv
bmZpZ3VyZSB0aGUgcm9vdCBsb2dnZXIgbm90IHRvIGxvZyBhbnkgbWVzc2FnZXMgZnJvbSB3ZWJr
aXRweSAtLQotICAgIGV4Y2VwdCBmb3IgbWVzc2FnZXMgZnJvbSB0aGUgYXV0b2luc3RhbGwgbW9k
dWxlLiAgQWxzbyBzZXQgdGhlCi0gICAgbG9nZ2luZyBsZXZlbCBhcyBkZXNjcmliZWQgYmVsb3cu
Ci0KLSAgICBBcmdzOgotICAgICAgaXNfdmVyYm9zZV9sb2dnaW5nOiBBIGJvb2xlYW4gdmFsdWUg
b2Ygd2hldGhlciBsb2dnaW5nIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICB2
ZXJib3NlLiAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgdHJ1ZSwgdGhlIGxvZ2dpbmcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGV2ZWwgZm9yIHRoZSBoYW5kbGVyIG9uIHRoZSByb290IGxvZ2dl
ciBpcyBzZXQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy5ERUJVRy4gIE90
aGVyd2lzZSwgaXQgaXMgc2V0IHRvIGxvZ2dpbmcuSU5GTy4KLQotICAgICIiIgotICAgIGlmIGlz
X3ZlcmJvc2VfbG9nZ2luZzoKLSAgICAgICAgbG9nZ2luZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcK
LSAgICBlbHNlOgotICAgICAgICBsb2dnaW5nX2xldmVsID0gbG9nZ2luZy5JTkZPCi0KLSAgICBo
YW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCi0gICAgIyBXZSBjb25z
dHJhaW4gdGhlIGxldmVsIG9uIHRoZSBoYW5kbGVyIHJhdGhlciB0aGFuIG9uIHRoZSByb290Ci0g
ICAgIyBsb2dnZXIgaXRzZWxmLiAgVGhpcyBpcyBwcm9iYWJseSBiZXR0ZXIgYmVjYXVzZSB0aGUg
aGFuZGxlciBpcwotICAgICMgY29uZmlndXJlZCBhbmQga25vd24gb25seSB0byB0aGlzIG1vZHVs
ZSwgd2hlcmVhcyB0aGUgcm9vdCBsb2dnZXIKLSAgICAjIGlzIGFuIG9iamVjdCBzaGFyZWQgKGFu
ZCBwb3RlbnRpYWxseSBtb2RpZmllZCkgYnkgbWFueSBtb2R1bGVzLgotICAgICMgTW9kaWZ5aW5n
IHRoZSBoYW5kbGVyLCB0aGVuLCBpcyBsZXNzIGludHJ1c2l2ZSBhbmQgbGVzcyBsaWtlbHkgdG8K
LSAgICAjIGludGVyZmVyZSB3aXRoIG1vZGlmaWNhdGlvbnMgbWFkZSBieSBvdGhlciBtb2R1bGVz
IChlLmcuIGluIHVuaXQKLSAgICAjIHRlc3RzKS4KLSAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dp
bmdfbGV2ZWwpCi0gICAgZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoIiUobmFtZSlzOiAl
KGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMiKQotICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZv
cm1hdHRlcikKLQotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICBsb2dnZXIu
YWRkSGFuZGxlcihoYW5kbGVyKQotICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLk5PVFNFVCkK
LQotICAgICMgRmlsdGVyIG91dCBtb3N0IHdlYmtpdHB5IG1lc3NhZ2VzLgotICAgICMKLSAgICAj
IE1lc3NhZ2VzIGNhbiBiZSBzZWxlY3RpdmVseSByZS1lbmFibGVkIGZvciB0aGlzIHNjcmlwdCBi
eSB1cGRhdGluZwotICAgICMgdGhpcyBtZXRob2QgYWNjb3JkaW5nbHkuCi0gICAgZGVmIGZpbHRl
cihyZWNvcmQpOgotICAgICAgICAiIiJGaWx0ZXIgb3V0IGF1dG9pbnN0YWxsIGFuZCBub24tdGhp
cmQtcGFydHkgd2Via2l0cHkgbWVzc2FnZXMuIiIiCi0gICAgICAgICMgRklYTUU6IEZpZ3VyZSBv
dXQgYSB3YXkgbm90IHRvIHVzZSBzdHJpbmdzIGhlcmUsIGZvciBleGFtcGxlIGJ5Ci0gICAgICAg
ICMgICAgICAgIHVzaW5nIHN5bnRheCBsaWtlIHdlYmtpdHB5LnRlc3QuX19uYW1lX18uICBXZSB3
YW50IHRvIGJlCi0gICAgICAgICMgICAgICAgIHN1cmUgbm90IHRvIGltcG9ydCBhbnkgbm9uLVB5
dGhvbiAyLjQgY29kZSwgdGhvdWdoLCB1bnRpbAotICAgICAgICAjICAgICAgICBhZnRlciB0aGUg
dmVyc2lvbi1jaGVja2luZyBjb2RlIGhhcyBleGVjdXRlZC4KLSAgICAgICAgaWYgKHJlY29yZC5u
YW1lLnN0YXJ0c3dpdGgoIndlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uYXV0b2luc3RhbGwiKSBvcgot
ICAgICAgICAgICAgcmVjb3JkLm5hbWUuc3RhcnRzd2l0aCgid2Via2l0cHkudGVzdCIpKToKLSAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHJlY29yZC5uYW1lLnN0YXJ0c3dpdGgo
IndlYmtpdHB5Iik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRy
dWUKLQotICAgIHRlc3RpbmdfZmlsdGVyID0gbG9nZ2luZy5GaWx0ZXIoKQotICAgIHRlc3Rpbmdf
ZmlsdGVyLmZpbHRlciA9IGZpbHRlcgotCi0gICAgIyBEaXNwbGF5IGEgbWVzc2FnZSBzbyBkZXZl
bG9wZXJzIGFyZSBub3QgbXlzdGlmaWVkIGFzIHRvIHdoeQotICAgICMgbG9nZ2luZyBkb2VzIG5v
dCB3b3JrIGluIHRoZSB1bml0IHRlc3RzLgotICAgIF9sb2cuaW5mbygiU3VwcHJlc3NpbmcgbW9z
dCB3ZWJraXRweSBsb2dnaW5nIHdoaWxlIHJ1bm5pbmcgdW5pdCB0ZXN0cy4iKQotICAgIGhhbmRs
ZXIuYWRkRmlsdGVyKHRlc3RpbmdfZmlsdGVyKQotCi0KLWRlZiBfY2xlYW5fcHljX2ZpbGVzKGRp
cl90b19jbGVhbik6Ci0gICAgIiIiRGVsZXRlIGZyb20gdW5kZXIgYSBkaXJlY3RvcnkgYWxsIC5w
eWMgZmlsZXMgdGhhdCBoYXZlIG5vIC5weSBmaWxlLiIiIgotICAgIF9sb2cuZGVidWcoIkNsZWFu
aW5nIG9ycGhhbmVkICoucHljIGZpbGVzIGZyb206ICVzIiAlIGRpcl90b19jbGVhbikKLSAgICBm
b3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1lcyBpbiBvcy53YWxrKGRpcl90b19jbGVh
bik6Ci0gICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKLSAgICAgICAgICAgIGlm
IGZpbGVfbmFtZS5lbmRzd2l0aCgiLnB5YyIpIGFuZCBmaWxlX25hbWVbOi0xXSBub3QgaW4gZmls
ZV9uYW1lczoKLSAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlyX3Bh
dGgsIGZpbGVfbmFtZSkKLSAgICAgICAgICAgICAgICBfbG9nLmluZm8oIkRlbGV0aW5nIG9ycGhh
biAqLnB5YyBmaWxlOiAlcyIgJSBmaWxlX3BhdGgpCi0gICAgICAgICAgICAgICAgb3MucmVtb3Zl
KGZpbGVfcGF0aCkKKyMgTk9URTogV2UgaW50ZW50aW9uYWxseSBsaW1pdCBpbXBvcnRzIGZyb20g
d2Via2l0cHkgaGVyZSB0byBtaW5pbWl6ZSB0aGUKKyMgY2hhbmNlcyBvZiBicmVha2luZyB0ZXN0
LXdlYmtpdHB5IGl0c2VsZi4KK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB2ZXJzaW9uX2No
ZWNrCitmcm9tIHdlYmtpdHB5LnRlc3QgaW1wb3J0IG1haW4KIAogCi1kZWYgX2NsZWFuX3BhY2th
Z2VzKGV4dGVybmFsX3BhY2thZ2VfcGF0aHMpOgotICAgIHdlYmtpdHB5X2RpciA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAid2Via2l0cHkiKQotICAgIHBhY2thZ2Vf
cGF0aHMgPSBbd2Via2l0cHlfZGlyXSArIGV4dGVybmFsX3BhY2thZ2VfcGF0aHMKLSAgICBmb3Ig
cGF0aCBpbiBwYWNrYWdlX3BhdGhzOgotICAgICAgICBfY2xlYW5fcHljX2ZpbGVzKHBhdGgpCi0K
LQotZGVmIGluaXQoY29tbWFuZF9hcmdzLCBleHRlcm5hbF9wYWNrYWdlX3BhdGhzKToKLSAgICAi
IiJFeGVjdXRlIGNvZGUgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20gd2Via2l0cHkudW5pdHRlc3Rz
LgotCi0gICAgQXJnczoKLSAgICAgICAgY29tbWFuZF9hcmdzOiBUaGUgbGlzdCBvZiBjb21tYW5k
LWxpbmUgYXJndW1lbnRzIC0tIHVzdWFsbHkKLSAgICAgICAgICAgICAgICAgICAgICBzeXMuYXJn
dlsxOl0uCi0KLSAgICAiIiIKLSAgICB2ZXJib3NlX2xvZ2dpbmdfZmxhZyA9ICItLXZlcmJvc2Ut
bG9nZ2luZyIKLSAgICBpc192ZXJib3NlX2xvZ2dpbmcgPSB2ZXJib3NlX2xvZ2dpbmdfZmxhZyBp
biBjb21tYW5kX2FyZ3MKLSAgICBpZiBpc192ZXJib3NlX2xvZ2dpbmc6Ci0gICAgICAgICMgUmVt
b3ZlIHRoZSBmbGFnIHNvIGl0IGRvZXNuJ3QgY2F1c2UgdW5pdHRlc3QubWFpbigpIHRvIGVycm9y
IG91dC4KLSAgICAgICAgIwotICAgICAgICAjIEZJWE1FOiBHZXQgZG9jdW1lbnRhdGlvbiBmb3Ig
dGhlIC0tdmVyYm9zZS1sb2dnaW5nIGZsYWcgdG8gc2hvdwotICAgICAgICAjICAgICAgICB1cCBp
biB0aGUgdXNhZ2UgaW5zdHJ1Y3Rpb25zLCB3aGljaCBhcmUgY3VycmVudGx5IGdlbmVyYXRlZAot
ICAgICAgICAjICAgICAgICBieSB1bml0dGVzdC5tYWluKCkuICBJdCdzIHBvc3NpYmxlIHRoYXQg
dGhpcyB3aWxsIHJlcXVpcmUKLSAgICAgICAgIyAgICAgICAgcmUtaW1wbGVtZW50aW5nIHRoZSBv
cHRpb24gcGFyc2VyIGZvciB1bml0dGVzdC5tYWluKCkKLSAgICAgICAgIyAgICAgICAgc2luY2Ug
dGhlcmUgbWF5IG5vdCBiZSBhbiBlYXN5IHdheSB0byBtb2RpZnkgaXRzIGV4aXN0aW5nCi0gICAg
ICAgICMgICAgICAgIG9wdGlvbiBwYXJzZXIuCi0gICAgICAgIHN5cy5hcmd2LnJlbW92ZSh2ZXJi
b3NlX2xvZ2dpbmdfZmxhZykKLQotICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGlzX3ZlcmJvc2VfbG9n
Z2luZykKLSAgICBfbG9nLmRlYnVnKCJWZXJib3NlIFdlYktpdCBsb2dnaW5nIGVuYWJsZWQuIikK
LQotICAgICMgV2UgY2xlYW4gb3JwaGFuZWQgKi5weWMgZmlsZXMgZnJvbSB0aGUgcGFja2FnZXMg
cHJpb3IgdG8gaW1wb3J0aW5nIGZyb20KLSAgICAjIHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgbm8g
aW1wb3J0IHN0YXRlbWVudHMgZmFsc2VseSBzdWNjZWVkLgotICAgICMgVGhpcyBoZWxwcyB0byBj
aGVjayB0aGF0IGltcG9ydCBzdGF0ZW1lbnRzIGhhdmUgYmVlbiB1cGRhdGVkIGNvcnJlY3RseQot
ICAgICMgYWZ0ZXIgYW55IGZpbGUgbW92ZXMuICBPdGhlcndpc2UsIGluY29ycmVjdCBpbXBvcnQg
c3RhdGVtZW50cyBjYW4KLSAgICAjIGJlIG1hc2tlZC4KLSAgICAjCi0gICAgIyBGb3IgZXhhbXBs
ZSwgaWYgd2Via2l0cHkvY29tbW9uL2hvc3QucHkgd2VyZSBtb3ZlZCB0byBhCi0gICAgIyBkaWZm
ZXJlbnQgbG9jYXRpb24gd2l0aG91dCBjaGFuZ2luZyBhbnkgaW1wb3J0IHN0YXRlbWVudHMsIGFu
ZCBpZgotICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgLnB5YyBmaWxlIHdlcmUgbGVmdCBiZWhpbmQg
d2l0aG91dCBkZWxldGluZyBpdCwKLSAgICAjIHRoZW4gImltcG9ydCB3ZWJraXRweS5jb21tb24u
aG9zdCIgd291bGQgY29udGludWUgdG8gc3VjY2VlZAotICAgICMgZXZlbiB0aG91Z2ggaXQgd291
bGQgZmFpbCBmb3Igc29tZW9uZSBjaGVja2luZyBvdXQgYSBmcmVzaCBjb3B5Ci0gICAgIyBvZiB0
aGUgc291cmNlIHRyZWUuICBUaGlzIGlzIGJlY2F1c2Ugb2YgYSBQeXRob24gZmVhdHVyZToKLSAg
ICAjCi0gICAgIyAiSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBhIGZpbGUgY2FsbGVkIHNwYW0ucHlj
IChvciBzcGFtLnB5byB3aGVuIC1PCi0gICAgIyBpcyB1c2VkKSB3aXRob3V0IGEgZmlsZSBzcGFt
LnB5IGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoaXMgY2FuIGJlIHVzZWQKLSAgICAjIHRvIGRpc3Ry
aWJ1dGUgYSBsaWJyYXJ5IG9mIFB5dGhvbiBjb2RlIGluIGEgZm9ybSB0aGF0IGlzIG1vZGVyYXRl
bHkKLSAgICAjIGhhcmQgdG8gcmV2ZXJzZSBlbmdpbmVlci4iCi0gICAgIwotICAgICMgKCBodHRw
Oi8vZG9jcy5weXRob24ub3JnL3R1dG9yaWFsL21vZHVsZXMuaHRtbCNjb21waWxlZC1weXRob24t
ZmlsZXMgKQotICAgICMKLSAgICAjIERlbGV0aW5nIHRoZSBvcnBoYW5lZCAucHljIGZpbGUgcHJp
b3IgdG8gaW1wb3J0aW5nLCBob3dldmVyLCB3b3VsZAotICAgICMgY2F1c2UgYW4gSW1wb3J0RXJy
b3IgdG8gb2NjdXIgb24gaW1wb3J0IGFzIGRlc2lyZWQuCi0gICAgX2NsZWFuX3BhY2thZ2VzKGV4
dGVybmFsX3BhY2thZ2VfcGF0aHMpCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInRlc3Qtd2Vi
a2l0cHkiKQogCiAKLWRlZiBfcGF0aF9mcm9tX3dlYmtpdF9yb290KCpjb21wb25lbnRzKToKK2lm
IF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgd2Via2l0X3Jvb3QgPSBvcy5wYXRoLmRpcm5h
bWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpKQotICAgIHJldHVy
biBvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICpjb21wb25lbnRzKQotCiAKLWRlZiBfdGVzdF9p
bXBvcnQobW9kdWxlX3BhdGgpOgotICAgIHRyeToKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9z
LnBhdGguZGlybmFtZShtb2R1bGVfcGF0aCkpCi0gICAgICAgIG1vZHVsZV9uYW1lID0gb3MucGF0
aC5iYXNlbmFtZShtb2R1bGVfcGF0aCkKLSAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSkK
LSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICBt
ZXNzYWdlID0gIlNraXBwaW5nIHRlc3RzIGluICVzIGR1ZSB0byBmYWlsdXJlICglcykuIiAlICht
b2R1bGVfcGF0aCwgZSkKLSAgICAgICAgaWYgbW9kdWxlX25hbWUuZW5kc3dpdGgoIlF1ZXVlU3Rh
dHVzU2VydmVyIik6Ci0gICAgICAgICAgICBtZXNzYWdlICs9ICIgIFRoaXMgbW9kdWxlIGlzIG9w
dGlvbmFsLiAgVGhlIGZhaWx1cmUgaXMgbGlrZWx5IGR1ZSB0byBhIG1pc3NpbmcgR29vZ2xlIEFw
cEVuZ2luZSBpbnN0YWxsLiAgKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lL2Rvd25s
b2Fkcy5odG1sKSIKLSAgICAgICAgX2xvZy53YXJuKG1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBG
YWxzZQorICAgIHRlc3RlciA9IG1haW4uVGVzdGVyKCkKKyAgICB0ZXN0ZXIuaW5pdChzeXMuYXJn
dlsxOl0pCiAKLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgIyBGSVhNRTogV2Ugc2hv
dWxkIHByb2JhYmx5IHRlc3QgZWFjaCBwYWNrYWdlIHNlcGFyYXRlbHkgdG8gYXZvaWQgbmFtaW5n
IGNvbmZsaWN0cy4KLSAgICBleHRlcm5hbF9wYWNrYWdlX3BhdGhzID0gWwotICAgICAgICBfcGF0
aF9mcm9tX3dlYmtpdF9yb290KCdTb3VyY2UnLCAnV2ViS2l0MicsICdTY3JpcHRzJywgJ3dlYmtp
dDInKSwKLSAgICAgICAgX3BhdGhfZnJvbV93ZWJraXRfcm9vdCgnVG9vbHMnLCAnUXVldWVTdGF0
dXNTZXJ2ZXInKSwKKyAgICBkaXJzID0gWworICAgICAgICBvcy5wYXRoLmpvaW4od2Via2l0X3Jv
b3QsICdUb29scycsICdTY3JpcHRzJywgJ3dlYmtpdHB5JyksCisgICAgICAgIG9zLnBhdGguam9p
bih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQyJywgJ1NjcmlwdHMnLCAnd2Via2l0Micp
LAogICAgIF0KLSAgICBpbml0KHN5cy5hcmd2WzE6XSwgZXh0ZXJuYWxfcGFja2FnZV9wYXRocykK
LQotICAgICMgV2UgaW1wb3J0IHRoZSB1bml0IHRlc3QgY29kZSBhZnRlciBpbml0KCkgdG8gZW5z
dXJlIHRoYXQgYW55Ci0gICAgIyBQeXRob24gdmVyc2lvbiB3YXJuaW5ncyBhcmUgZGlzcGxheWVk
IGluIGNhc2UgYW4gZXJyb3Igb2NjdXJzCi0gICAgIyB3aGlsZSBpbnRlcnByZXRpbmcgd2Via2l0
cHkudW5pdHRlc3RzLiAgVGhpcyBhbHNvIGFsbG93cwotICAgICMgbG9nZ2luZyB0byBiZSBjb25m
aWd1cmVkIHByaW9yIHRvIGltcG9ydGluZyAtLSBmb3IgZXhhbXBsZSB0bwotICAgICMgZW5hYmxl
IHRoZSBkaXNwbGF5IG9mIGF1dG9pbnN0YWxsIGxvZ2dpbmcubG9nIG1lc3NhZ2VzIHdoaWxlCi0g
ICAgIyBydW5uaW5nIHRoZSB1bml0IHRlc3RzLgotICAgIGZyb20gd2Via2l0cHkudGVzdC5tYWlu
IGltcG9ydCBUZXN0ZXIKIAotICAgIGV4dGVybmFsX3BhY2thZ2VfcGF0aHMgPSBmaWx0ZXIoX3Rl
c3RfaW1wb3J0LCBleHRlcm5hbF9wYWNrYWdlX3BhdGhzKQorICAgICMgRklYTUU6IE1ha2UgdGhp
cyB3b3JrIG9uIHdpbmRvd3MgYXMgd2VsbD8KKyAgICBhcHBlbmdpbmVfc2RrX3BhdGggPSAnL3Vz
ci9sb2NhbC9nb29nbGVfYXBwZW5naW5lJworICAgIGlmIG9zLnBhdGguZXhpc3RzKGFwcGVuZ2lu
ZV9zZGtfcGF0aCkgYW5kIG5vdCBhcHBlbmdpbmVfc2RrX3BhdGggaW4gc3lzLnBhdGg6CisgICAg
ICAgIHN5cy5wYXRoLmFwcGVuZChhcHBlbmdpbmVfc2RrX3BhdGgpCisgICAgdHJ5OgorICAgICAg
ICBpbXBvcnQgZ29vZ2xlLmFwcGVuZ2luZQorICAgICAgICBkaXJzLmFwcGVuZChvcy5wYXRoLmpv
aW4od2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZlcicpKQorICAgIGV4Y2Vw
dCBJbXBvcnRFcnJvcjoKKyAgICAgICAgX2xvZy5pbmZvKCdTa2lwcGluZyBRdWV1ZVN0YXR1c1Nl
cnZlciB0ZXN0czsgdGhlIEdvb2dsZSBBcHBFbmdpbmUgUHl0aG9uIFNESyBpcyBub3QgaW5zdGFs
bGVkLicpCiAKLSAgICBUZXN0ZXIoKS5ydW5fdGVzdHMoc3lzLmFyZ3YsIGV4dGVybmFsX3BhY2th
Z2VfcGF0aHMpCisgICAgdGVzdGVyLmNsZWFuX3BhY2thZ2VzKGRpcnMpCisgICAgdGVzdGVyLnJ1
bl90ZXN0cyhzeXMuYXJndiwgZGlycykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5k
ZXggOWIwM2NjZWQ5MTA1OWZiMGNlYjM5MzgzMTYyYTM4YzM4ZDIxMmRlNC4uMDAxOGRhZjhjZjJk
NjliZjRiODU0MTM5OGZmNjRjNjlmOGU3ODM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90ZXN0L21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21h
aW4ucHkKQEAgLTIwLDM1ICsyMCwxNDEgQEAKICMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAotIiIiQ29udGFpbnMgdGhlIGVudHJ5IG1ldGhvZCBmb3IgdGVzdC13ZWJraXRw
eS4iIiIKKyIiInVuaXQgdGVzdGluZyBjb2RlIGZvciB3ZWJraXRweS4iIiIKIAogaW1wb3J0IGxv
Z2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWltcG9ydCB3
ZWJraXRweQotCisjIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG8gbm90IGRlcGVuZCBvbiBhbnl0
aGluZyBlbHNlIGluIHdlYmtpdHB5IGhlcmUgdG8gYXZvaWQgYnJlYWtpbmcgdGVzdC13ZWJraXRw
eS4KIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIFRlc3Rl
cihvYmplY3QpOgorICAgICIiIndlYmtpdHB5IHVuaXQgdGVzdHMgZHJpdmVyIChmaW5kcyBhbmQg
cnVucyB0ZXN0cykuIiIiCiAKLSAgICAiIiJEaXNjb3ZlcnMgYW5kIHJ1bnMgd2Via2l0cHkgdW5p
dCB0ZXN0cy4iIiIKKyAgICBkZWYgaW5pdChzZWxmLCBjb21tYW5kX2FyZ3MpOgorICAgICAgICAi
IiJFeGVjdXRlIGNvZGUgcHJpb3IgdG8gaW1wb3J0aW5nIGZyb20gd2Via2l0cHkudW5pdHRlc3Rz
LgogCi0gICAgZGVmIF9maW5kX3Rlc3RfZmlsZXMoc2VsZiwgd2Via2l0cHlfZGlyLCBzdWZmaXgp
OgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHBhdGhzIHRvIGFsbCB1bml0LXRlc3QgZmls
ZXMuIiIiCi0gICAgICAgIHVuaXR0ZXN0X3BhdGhzID0gW10gICMgUmV0dXJuIHZhbHVlLgorICAg
ICAgICBBcmdzOgorICAgICAgICAgICAgY29tbWFuZF9hcmdzOiBUaGUgbGlzdCBvZiBjb21tYW5k
LWxpbmUgYXJndW1lbnRzIC0tIHVzdWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5h
cmd2WzE6XS4KIAotICAgICAgICBmb3IgZGlyX3BhdGgsIGRpcl9uYW1lcywgZmlsZV9uYW1lcyBp
biBvcy53YWxrKHdlYmtpdHB5X2Rpcik6CisgICAgICAgICIiIgorICAgICAgICB2ZXJib3NlX2xv
Z2dpbmdfZmxhZyA9ICItLXZlcmJvc2UtbG9nZ2luZyIKKyAgICAgICAgaXNfdmVyYm9zZV9sb2dn
aW5nID0gdmVyYm9zZV9sb2dnaW5nX2ZsYWcgaW4gY29tbWFuZF9hcmdzCisgICAgICAgIGlmIGlz
X3ZlcmJvc2VfbG9nZ2luZzoKKyAgICAgICAgICAgICMgUmVtb3ZlIHRoZSBmbGFnIHNvIGl0IGRv
ZXNuJ3QgY2F1c2UgdW5pdHRlc3QubWFpbigpIHRvIGVycm9yIG91dC4KKyAgICAgICAgICAgICMK
KyAgICAgICAgICAgICMgRklYTUU6IEdldCBkb2N1bWVudGF0aW9uIGZvciB0aGUgLS12ZXJib3Nl
LWxvZ2dpbmcgZmxhZyB0byBzaG93CisgICAgICAgICAgICAjICAgICAgICB1cCBpbiB0aGUgdXNh
Z2UgaW5zdHJ1Y3Rpb25zLCB3aGljaCBhcmUgY3VycmVudGx5IGdlbmVyYXRlZAorICAgICAgICAg
ICAgIyAgICAgICAgYnkgdW5pdHRlc3QubWFpbigpLiAgSXQncyBwb3NzaWJsZSB0aGF0IHRoaXMg
d2lsbCByZXF1aXJlCisgICAgICAgICAgICAjICAgICAgICByZS1pbXBsZW1lbnRpbmcgdGhlIG9w
dGlvbiBwYXJzZXIgZm9yIHVuaXR0ZXN0Lm1haW4oKQorICAgICAgICAgICAgIyAgICAgICAgc2lu
Y2UgdGhlcmUgbWF5IG5vdCBiZSBhbiBlYXN5IHdheSB0byBtb2RpZnkgaXRzIGV4aXN0aW5nCisg
ICAgICAgICAgICAjICAgICAgICBvcHRpb24gcGFyc2VyLgorICAgICAgICAgICAgc3lzLmFyZ3Yu
cmVtb3ZlKHZlcmJvc2VfbG9nZ2luZ19mbGFnKQorCisgICAgICAgIGlmIGlzX3ZlcmJvc2VfbG9n
Z2luZzoKKyAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX2xvZ2dpbmcobG9nZ2luZy5ERUJVRykK
KyAgICAgICAgICAgIF9sb2cuZGVidWcoIlZlcmJvc2UgV2ViS2l0IGxvZ2dpbmcgZW5hYmxlZC4i
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfbG9nZ2luZyhsb2dn
aW5nLklORk8pCisKKyAgICAjIFZlcmJvc2UgbG9nZ2luZyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2lu
ZyB0ZXN0LXdlYmtpdHB5IGNvZGUgdGhhdCBydW5zCisgICAgIyBiZWZvcmUgdGhlIGFjdHVhbCB1
bml0IHRlc3RzIC0tIHRoaW5ncyBsaWtlIGF1dG9pbnN0YWxsIGRvd25sb2FkaW5nIGFuZAorICAg
ICMgdW5pdC10ZXN0IGF1dG8tZGV0ZWN0aW9uIGxvZ2ljLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJv
bSB2ZXJib3NlIGxvZ2dpbmcKKyAgICAjIG9mIHRoZSB1bml0IHRlc3RzIHRoZW1zZWx2ZXMgKGku
ZS4gdGhlIHVuaXR0ZXN0IG1vZHVsZSdzIC0tdmVyYm9zZSBmbGFnKS4KKyAgICBkZWYgY29uZmln
dXJlX2xvZ2dpbmcoc2VsZiwgbG9nX2xldmVsKToKKyAgICAgICAgIiIiQ29uZmlndXJlIHRoZSBy
b290IGxvZ2dlci4KKworICAgICAgICBDb25maWd1cmUgdGhlIHJvb3QgbG9nZ2VyIG5vdCB0byBs
b2cgYW55IG1lc3NhZ2VzIGZyb20gd2Via2l0cHkgLS0KKyAgICAgICAgZXhjZXB0IGZvciBtZXNz
YWdlcyBmcm9tIHRoZSBhdXRvaW5zdGFsbCBtb2R1bGUuICBBbHNvIHNldCB0aGUKKyAgICAgICAg
bG9nZ2luZyBsZXZlbCBhcyBkZXNjcmliZWQgYmVsb3cuCisgICAgICAgICIiIgorICAgICAgICBo
YW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCisgICAgICAgICMgV2Ug
Y29uc3RyYWluIHRoZSBsZXZlbCBvbiB0aGUgaGFuZGxlciByYXRoZXIgdGhhbiBvbiB0aGUgcm9v
dAorICAgICAgICAjIGxvZ2dlciBpdHNlbGYuICBUaGlzIGlzIHByb2JhYmx5IGJldHRlciBiZWNh
dXNlIHRoZSBoYW5kbGVyIGlzCisgICAgICAgICMgY29uZmlndXJlZCBhbmQga25vd24gb25seSB0
byB0aGlzIG1vZHVsZSwgd2hlcmVhcyB0aGUgcm9vdCBsb2dnZXIKKyAgICAgICAgIyBpcyBhbiBv
YmplY3Qgc2hhcmVkIChhbmQgcG90ZW50aWFsbHkgbW9kaWZpZWQpIGJ5IG1hbnkgbW9kdWxlcy4K
KyAgICAgICAgIyBNb2RpZnlpbmcgdGhlIGhhbmRsZXIsIHRoZW4sIGlzIGxlc3MgaW50cnVzaXZl
IGFuZCBsZXNzIGxpa2VseSB0bworICAgICAgICAjIGludGVyZmVyZSB3aXRoIG1vZGlmaWNhdGlv
bnMgbWFkZSBieSBvdGhlciBtb2R1bGVzIChlLmcuIGluIHVuaXQKKyAgICAgICAgIyB0ZXN0cyku
CisgICAgICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nX2xldmVsKQorICAgICAgICBmb3JtYXR0ZXIg
PSBsb2dnaW5nLkZvcm1hdHRlcigiJShtZXNzYWdlKXMiKQorICAgICAgICBoYW5kbGVyLnNldEZv
cm1hdHRlcihmb3JtYXR0ZXIpCisKKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIo
KQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgICAgICBsb2dnZXIuc2V0
TGV2ZWwobG9nZ2luZy5OT1RTRVQpCisKKyAgICAgICAgIyBGaWx0ZXIgb3V0IG1vc3Qgd2Via2l0
cHkgbWVzc2FnZXMuCisgICAgICAgICMKKyAgICAgICAgIyBNZXNzYWdlcyBjYW4gYmUgc2VsZWN0
aXZlbHkgcmUtZW5hYmxlZCBmb3IgdGhpcyBzY3JpcHQgYnkgdXBkYXRpbmcKKyAgICAgICAgIyB0
aGlzIG1ldGhvZCBhY2NvcmRpbmdseS4KKyAgICAgICAgZGVmIGZpbHRlcihyZWNvcmQpOgorICAg
ICAgICAgICAgIiIiRmlsdGVyIG91dCBhdXRvaW5zdGFsbCBhbmQgbm9uLXRoaXJkLXBhcnR5IHdl
YmtpdHB5IG1lc3NhZ2VzLiIiIgorICAgICAgICAgICAgIyBGSVhNRTogRmlndXJlIG91dCBhIHdh
eSBub3QgdG8gdXNlIHN0cmluZ3MgaGVyZSwgZm9yIGV4YW1wbGUgYnkKKyAgICAgICAgICAgICMg
ICAgICAgIHVzaW5nIHN5bnRheCBsaWtlIHdlYmtpdHB5LnRlc3QuX19uYW1lX18uICBXZSB3YW50
IHRvIGJlCisgICAgICAgICAgICAjICAgICAgICBzdXJlIG5vdCB0byBpbXBvcnQgYW55IG5vbi1Q
eXRob24gMi40IGNvZGUsIHRob3VnaCwgdW50aWwKKyAgICAgICAgICAgICMgICAgICAgIGFmdGVy
IHRoZSB2ZXJzaW9uLWNoZWNraW5nIGNvZGUgaGFzIGV4ZWN1dGVkLgorICAgICAgICAgICAgaWYg
KHJlY29yZC5uYW1lLnN0YXJ0c3dpdGgoIndlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uYXV0b2luc3Rh
bGwiKSBvcgorICAgICAgICAgICAgICAgIHJlY29yZC5uYW1lLnN0YXJ0c3dpdGgoIndlYmtpdHB5
LnRlc3QiKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHJl
Y29yZC5uYW1lLnN0YXJ0c3dpdGgoIndlYmtpdHB5Iik6CisgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRlc3RpbmdfZmlsdGVy
ID0gbG9nZ2luZy5GaWx0ZXIoKQorICAgICAgICB0ZXN0aW5nX2ZpbHRlci5maWx0ZXIgPSBmaWx0
ZXIKKworICAgICAgICAjIERpc3BsYXkgYSBtZXNzYWdlIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBt
eXN0aWZpZWQgYXMgdG8gd2h5CisgICAgICAgICMgbG9nZ2luZyBkb2VzIG5vdCB3b3JrIGluIHRo
ZSB1bml0IHRlc3RzLgorICAgICAgICBfbG9nLmluZm8oIlN1cHByZXNzaW5nIG1vc3Qgd2Via2l0
cHkgbG9nZ2luZyB3aGlsZSBydW5uaW5nIHVuaXQgdGVzdHMuIikKKyAgICAgICAgaGFuZGxlci5h
ZGRGaWx0ZXIodGVzdGluZ19maWx0ZXIpCisKKyAgICBkZWYgY2xlYW5fcGFja2FnZXMoc2VsZiwg
ZGlycyk6CisgICAgICAgICIiIkRlbGV0ZSBhbGwgLnB5YyBmaWxlcyB1bmRlciBkaXJzIHRoYXQg
aGF2ZSBubyAucHkgZmlsZS4iIiIKKyAgICAgICAgIyBXZSBjbGVhbiBvcnBoYW5lZCAqLnB5YyBm
aWxlcyBmcm9tIHRoZSBwYWNrYWdlcyBwcmlvciB0byBpbXBvcnRpbmcgZnJvbQorICAgICAgICAj
IHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgbm8gaW1wb3J0IHN0YXRlbWVudHMgZmFsc2VseSBzdWNj
ZWVkLgorICAgICAgICAjIFRoaXMgaGVscHMgdG8gY2hlY2sgdGhhdCBpbXBvcnQgc3RhdGVtZW50
cyBoYXZlIGJlZW4gdXBkYXRlZCBjb3JyZWN0bHkKKyAgICAgICAgIyBhZnRlciBhbnkgZmlsZSBt
b3Zlcy4gIE90aGVyd2lzZSwgaW5jb3JyZWN0IGltcG9ydCBzdGF0ZW1lbnRzIGNhbgorICAgICAg
ICAjIGJlIG1hc2tlZC4KKyAgICAgICAgIworICAgICAgICAjIEZvciBleGFtcGxlLCBpZiB3ZWJr
aXRweS9jb21tb24vaG9zdC5weSB3ZXJlIG1vdmVkIHRvIGEKKyAgICAgICAgIyBkaWZmZXJlbnQg
bG9jYXRpb24gd2l0aG91dCBjaGFuZ2luZyBhbnkgaW1wb3J0IHN0YXRlbWVudHMsIGFuZCBpZgor
ICAgICAgICAjIHRoZSBjb3JyZXNwb25kaW5nIC5weWMgZmlsZSB3ZXJlIGxlZnQgYmVoaW5kIHdp
dGhvdXQgZGVsZXRpbmcgaXQsCisgICAgICAgICMgdGhlbiAiaW1wb3J0IHdlYmtpdHB5LmNvbW1v
bi5ob3N0IiB3b3VsZCBjb250aW51ZSB0byBzdWNjZWVkCisgICAgICAgICMgZXZlbiB0aG91Z2gg
aXQgd291bGQgZmFpbCBmb3Igc29tZW9uZSBjaGVja2luZyBvdXQgYSBmcmVzaCBjb3B5CisgICAg
ICAgICMgb2YgdGhlIHNvdXJjZSB0cmVlLiAgVGhpcyBpcyBiZWNhdXNlIG9mIGEgUHl0aG9uIGZl
YXR1cmU6CisgICAgICAgICMKKyAgICAgICAgIyAiSXQgaXMgcG9zc2libGUgdG8gaGF2ZSBhIGZp
bGUgY2FsbGVkIHNwYW0ucHljIChvciBzcGFtLnB5byB3aGVuIC1PCisgICAgICAgICMgaXMgdXNl
ZCkgd2l0aG91dCBhIGZpbGUgc3BhbS5weSBmb3IgdGhlIHNhbWUgbW9kdWxlLiBUaGlzIGNhbiBi
ZSB1c2VkCisgICAgICAgICMgdG8gZGlzdHJpYnV0ZSBhIGxpYnJhcnkgb2YgUHl0aG9uIGNvZGUg
aW4gYSBmb3JtIHRoYXQgaXMgbW9kZXJhdGVseQorICAgICAgICAjIGhhcmQgdG8gcmV2ZXJzZSBl
bmdpbmVlci4iCisgICAgICAgICMKKyAgICAgICAgIyAoIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcv
dHV0b3JpYWwvbW9kdWxlcy5odG1sI2NvbXBpbGVkLXB5dGhvbi1maWxlcyApCisgICAgICAgICMK
KyAgICAgICAgIyBEZWxldGluZyB0aGUgb3JwaGFuZWQgLnB5YyBmaWxlIHByaW9yIHRvIGltcG9y
dGluZywgaG93ZXZlciwgd291bGQKKyAgICAgICAgIyBjYXVzZSBhbiBJbXBvcnRFcnJvciB0byBv
Y2N1ciBvbiBpbXBvcnQgYXMgZGVzaXJlZC4KKyAgICAgICAgZm9yIGRpcl90b19jbGVhbiBpbiBk
aXJzOgorICAgICAgICAgICAgX2xvZy5kZWJ1ZygiQ2xlYW5pbmcgb3JwaGFuZWQgKi5weWMgZmls
ZXMgZnJvbTogJXMiICUgZGlyX3RvX2NsZWFuKQorICAgICAgICAgICAgZm9yIGRpcl9wYXRoLCBk
aXJfbmFtZXMsIGZpbGVfbmFtZXMgaW4gb3Mud2FsayhkaXJfdG9fY2xlYW4pOgorICAgICAgICAg
ICAgICAgIGZvciBmaWxlX25hbWUgaW4gZmlsZV9uYW1lczoKKyAgICAgICAgICAgICAgICAgICAg
aWYgZmlsZV9uYW1lLmVuZHN3aXRoKCIucHljIikgYW5kIGZpbGVfbmFtZVs6LTFdIG5vdCBpbiBm
aWxlX25hbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5q
b2luKGRpcl9wYXRoLCBmaWxlX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oIkRlbGV0aW5nIG9ycGhhbiAqLnB5YyBmaWxlOiAlcyIgJSBmaWxlX3BhdGgpCisgICAgICAg
ICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZV9wYXRoKQorCisgICAgZGVmIF9maW5kX3Vu
ZGVyKHNlbGYsIGRpcl90b19zZWFyY2gsIHN1ZmZpeCk6CisgICAgICAgICIiIlJldHVybiBhIGxp
c3Qgb2YgcGF0aHMgdG8gYWxsIGZpbGVzIHVuZGVyIGRpcl90b19zZWFyY2ggZW5kaW5nIGluIHN1
ZmZpeC4iIiIKKyAgICAgICAgcGF0aHMgPSBbXQorICAgICAgICBmb3IgZGlyX3BhdGgsIGRpcl9u
YW1lcywgZmlsZV9uYW1lcyBpbiBvcy53YWxrKGRpcl90b19zZWFyY2gpOgogICAgICAgICAgICAg
Zm9yIGZpbGVfbmFtZSBpbiBmaWxlX25hbWVzOgotICAgICAgICAgICAgICAgIGlmIG5vdCBmaWxl
X25hbWUuZW5kc3dpdGgoc3VmZml4KToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgICAgICB1bml0dGVzdF9wYXRoID0gb3MucGF0aC5qb2luKGRpcl9wYXRoLCBmaWxl
X25hbWUpCi0gICAgICAgICAgICAgICAgdW5pdHRlc3RfcGF0aHMuYXBwZW5kKHVuaXR0ZXN0X3Bh
dGgpCi0KLSAgICAgICAgcmV0dXJuIHVuaXR0ZXN0X3BhdGhzCisgICAgICAgICAgICAgICAgaWYg
ZmlsZV9uYW1lLmVuZHN3aXRoKHN1ZmZpeCk6CisgICAgICAgICAgICAgICAgICAgIHBhdGhzLmFw
cGVuZChvcy5wYXRoLmpvaW4oZGlyX3BhdGgsIGZpbGVfbmFtZSkpCisgICAgICAgIHJldHVybiBw
YXRocwogCiAgICAgZGVmIF9tb2R1bGVzX2Zyb21fcGF0aHMoc2VsZiwgcGFja2FnZV9yb290LCBw
YXRocyk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZnVsbHktcXVhbGlmaWVkIG1vZHVs
ZSBuYW1lcyBnaXZlbiBwYXRocy4iIiIKQEAgLTkzLDU2ICsxOTksNDEgQEAgY2xhc3MgVGVzdGVy
KG9iamVjdCk6CiAgICAgICAgICAgICAnd2Via2l0cHkudG9fYmVfbW92ZWQuZGVkdXBsaWNhdGVf
dGVzdHNfdW5pdHRlc3QnLAogICAgICAgICBdCiAKLSAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIHN5
c19hcmd2LCBleHRlcm5hbF9wYWNrYWdlX3BhdGhzPU5vbmUpOgotICAgICAgICAiIiJSdW4gdGhl
IHVuaXQgdGVzdHMgaW4gYWxsICpfdW5pdHRlc3QucHkgbW9kdWxlcyBpbiB3ZWJraXRweS4KLQot
ICAgICAgICBUaGlzIG1ldGhvZCBleGNsdWRlcyAid2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bS5zY21fdW5pdHRlc3QiIHVubGVzcwotICAgICAgICB0aGUgLS1hbGwgb3B0aW9uIGlzIHRoZSBz
ZWNvbmQgZWxlbWVudCBvZiBzeXNfYXJndi4KKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGFyZ3Ys
IGRpcnMpOgorICAgICAgICAiIiJSdW4gYWxsIHRoZSB0ZXN0cyBmb3VuZCB1bmRlciBkaXJzLiIi
IgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHdlYmtpdHB5IG9m
ZiBvZiB1c2luZyAid2Via2l0cHkuIiB0byBwcmVmaXgKKyAgICAgICAgIyBhbGwgaW5jbHVkZXMu
ICBJZiB3ZSBkaWQgdGhhdCwgdGhlbiB0aGlzIHdvdWxkIHVzZSBwYXRoIGluc3RlYWQgb2YgZGly
bmFtZShwYXRoKS4KKyAgICAgICAgIyBRdWV1ZVN0YXR1c1NlcnZlci5fX2luaXRfXyBoYXMgYSBz
eXMucGF0aCBpbXBvcnQgaGFjayBkdWUgdG8gdGhpcyBjb2RlLgorICAgICAgICBzeXMucGF0aC5l
eHRlbmQoc2V0KG9zLnBhdGguZGlybmFtZShwYXRoKSBmb3IgcGF0aCBpbiBkaXJzKSkKIAotICAg
ICAgICBBcmdzOgotICAgICAgICAgIHN5c19hcmd2OiBBIHJlZmVyZW5jZSB0byBzeXMuYXJndi4K
LQotICAgICAgICAiIiIKLSAgICAgICAgaWYgZXh0ZXJuYWxfcGFja2FnZV9wYXRocyBpcyBOb25l
OgotICAgICAgICAgICAgZXh0ZXJuYWxfcGFja2FnZV9wYXRocyA9IFtdCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHdlYmtpdHB5
IG9mZiBvZiB1c2luZyAid2Via2l0cHkuIiB0byBwcmVmaXgKLSAgICAgICAgICAgICMgYWxsIGlu
Y2x1ZGVzLiAgSWYgd2UgZGlkIHRoYXQsIHRoZW4gdGhpcyB3b3VsZCB1c2UgcGF0aCBpbnN0ZWFk
IG9mIGRpcm5hbWUocGF0aCkuCi0gICAgICAgICAgICAjIFF1ZXVlU3RhdHVzU2VydmVyLl9faW5p
dF9fIGhhcyBhIHN5cy5wYXRoIGltcG9ydCBoYWNrIGR1ZSB0byB0aGlzIGNvZGUuCi0gICAgICAg
ICAgICBzeXMucGF0aC5leHRlbmQoc2V0KG9zLnBhdGguZGlybmFtZShwYXRoKSBmb3IgcGF0aCBp
biBleHRlcm5hbF9wYWNrYWdlX3BhdGhzKSkKLQotICAgICAgICBpZiAnLS14bWwnIGluIHN5cy5h
cmd2OgotICAgICAgICAgICAgc3lzLmFyZ3YucmVtb3ZlKCctLXhtbCcpCisgICAgICAgIGlmICct
LXhtbCcgaW4gYXJndjoKKyAgICAgICAgICAgIGFyZ3YucmVtb3ZlKCctLXhtbCcpCiAgICAgICAg
ICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC54bWxydW5uZXIgaW1w
b3J0IFhNTFRlc3RSdW5uZXIKICAgICAgICAgICAgIHRlc3RfcnVubmVyID0gWE1MVGVzdFJ1bm5l
cihvdXRwdXQ9J3Rlc3Qtd2Via2l0cHkteG1sLXJlcG9ydHMnKQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgdGVzdF9ydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpCiAKLSAgICAg
ICAgaWYgbGVuKHN5c19hcmd2KSA+IDEgYW5kIG5vdCBzeXNfYXJndlstMV0uc3RhcnRzd2l0aCgi
LSIpOgorICAgICAgICBpZiBsZW4oYXJndikgPiAxIGFuZCBub3QgYXJndlstMV0uc3RhcnRzd2l0
aCgiLSIpOgogICAgICAgICAgICAgIyBUaGVuIGV4cGxpY2l0IG1vZHVsZXMgb3IgdGVzdCBuYW1l
cyB3ZXJlIHByb3ZpZGVkLCB3aGljaAogICAgICAgICAgICAgIyB0aGUgdW5pdHRlc3QgbW9kdWxl
IGlzIGVxdWlwcGVkIHRvIGhhbmRsZS4KLSAgICAgICAgICAgIHVuaXR0ZXN0Lm1haW4oYXJndj1z
eXNfYXJndiwgbW9kdWxlPU5vbmUsIHRlc3RSdW5uZXI9dGVzdF9ydW5uZXIpCisgICAgICAgICAg
ICB1bml0dGVzdC5tYWluKGFyZ3Y9YXJndiwgbW9kdWxlPU5vbmUsIHRlc3RSdW5uZXI9dGVzdF9y
dW5uZXIpCiAgICAgICAgICAgICAjIE5vIG5lZWQgdG8gcmV0dXJuIHNpbmNlIHVuaXR0dGVzdC5t
YWluKCkgZXhpdHMuCiAKICAgICAgICAgIyBPdGhlcndpc2UsIGF1dG8tZGV0ZWN0IGFsbCB1bml0
IHRlc3RzLgogCi0gICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGNvbWJpbmVkIHdpdGgg
dGhlIGV4dGVybmFsX3BhY2thZ2VfcGF0aHMgY29kZSBhYm92ZS4KLSAgICAgICAgd2Via2l0cHlf
ZGlyID0gb3MucGF0aC5kaXJuYW1lKHdlYmtpdHB5Ll9fZmlsZV9fKQotCiAgICAgICAgIHNraXBf
aW50ZWdyYXRpb25fdGVzdHMgPSBGYWxzZQotICAgICAgICBpZiBsZW4oc3lzX2FyZ3YpID4gMSBh
bmQgc3lzLmFyZ3ZbMV0gPT0gIi0tc2tpcC1pbnRlZ3JhdGlvbnRlc3RzIjoKLSAgICAgICAgICAg
IHN5cy5hcmd2LnJlbW92ZSgiLS1za2lwLWludGVncmF0aW9udGVzdHMiKQorICAgICAgICBpZiBs
ZW4oYXJndikgPiAxIGFuZCBhcmd2WzFdID09ICItLXNraXAtaW50ZWdyYXRpb250ZXN0cyI6Cisg
ICAgICAgICAgICBhcmd2LnJlbW92ZSgiLS1za2lwLWludGVncmF0aW9udGVzdHMiKQogICAgICAg
ICAgICAgc2tpcF9pbnRlZ3JhdGlvbl90ZXN0cyA9IFRydWUKIAogICAgICAgICBtb2R1bGVzID0g
W10KLSAgICAgICAgZm9yIHBhdGggaW4gW3dlYmtpdHB5X2Rpcl0gKyBleHRlcm5hbF9wYWNrYWdl
X3BhdGhzOgotICAgICAgICAgICAgbW9kdWxlcy5leHRlbmQoc2VsZi5fbW9kdWxlc19mcm9tX3Bh
dGhzKHBhdGgsIHNlbGYuX2ZpbmRfdGVzdF9maWxlcyhwYXRoLCAiX3VuaXR0ZXN0LnB5IikpKQor
ICAgICAgICBmb3IgZGlyX3RvX3NlYXJjaCBpbiBkaXJzOgorICAgICAgICAgICAgbW9kdWxlcy5l
eHRlbmQoc2VsZi5fbW9kdWxlc19mcm9tX3BhdGhzKGRpcl90b19zZWFyY2gsIHNlbGYuX2ZpbmRf
dW5kZXIoZGlyX3RvX3NlYXJjaCwgIl91bml0dGVzdC5weSIpKSkKICAgICAgICAgICAgIGlmIG5v
dCBza2lwX2ludGVncmF0aW9uX3Rlc3RzOgotICAgICAgICAgICAgICAgIG1vZHVsZXMuZXh0ZW5k
KHNlbGYuX21vZHVsZXNfZnJvbV9wYXRocyhwYXRoLCBzZWxmLl9maW5kX3Rlc3RfZmlsZXMocGF0
aCwgIl9pbnRlZ3JhdGlvbnRlc3QucHkiKSkpCisgICAgICAgICAgICAgICAgbW9kdWxlcy5leHRl
bmQoc2VsZi5fbW9kdWxlc19mcm9tX3BhdGhzKGRpcl90b19zZWFyY2gsIHNlbGYuX2ZpbmRfdW5k
ZXIoZGlyX3RvX3NlYXJjaCwgIl9pbnRlZ3JhdGlvbnRlc3QucHkiKSkpCiAgICAgICAgIG1vZHVs
ZXMuc29ydCgpCiAKLSAgICAgICAgIyBUaGlzIGlzIGEgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZSB0
aGF0IHRoZSB1bml0LXRlc3QgZGlzY292ZXJ5Ci0gICAgICAgICMgbWV0aG9kcyBhcmUgd29ya2lu
Zy4KKyAgICAgICAgIyBUaGlzIGlzIGEgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSB1
bml0LXRlc3QgZGlzY292ZXJ5IG1ldGhvZHMgYXJlIHdvcmtpbmcuCiAgICAgICAgIGlmIGxlbiht
b2R1bGVzKSA8IDE6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIHVuaXQtdGVzdCBt
b2R1bGVzIGZvdW5kLiIpCiAKQEAgLTE1MSw4ICsyNDIsOCBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0
KToKIAogICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjaywgYnV0IEknbSB0aXJlZCBvZiBj
b21tZW50aW5nIG91dCB0aGUgdGVzdC4KICAgICAgICAgIyAgICAgICAgU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTgxOAotICAgICAgICBpZiBsZW4oc3lzX2Fy
Z3YpID4gMSBhbmQgc3lzLmFyZ3ZbMV0gPT0gIi0tYWxsIjoKLSAgICAgICAgICAgIHN5cy5hcmd2
LnJlbW92ZSgiLS1hbGwiKQorICAgICAgICBpZiBsZW4oYXJndikgPiAxIGFuZCBhcmd2WzFdID09
ICItLWFsbCI6CisgICAgICAgICAgICBhcmd2LnJlbW92ZSgiLS1hbGwiKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgZXhjbHVkZWRfbW9kdWxlID0gIndlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtX3VuaXR0ZXN0IgogICAgICAgICAgICAgX2xvZy5pbmZvKCJFeGNsdWRpbmc6ICVz
ICh1c2UgLS1hbGwgdG8gaW5jbHVkZSkiICUgZXhjbHVkZWRfbW9kdWxlKQpAQCAtMTY2LDExICsy
NTcsMTEgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgIGZvciBtb2R1bGUgaW4gbW9k
dWxlczoKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlKQogCi0gICAgICAgIHN5c19hcmd2
LmV4dGVuZChtb2R1bGVzKQorICAgICAgICBhcmd2LmV4dGVuZChtb2R1bGVzKQogCiAgICAgICAg
ICMgV2UgcGFzcyBOb25lIGZvciB0aGUgbW9kdWxlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdGhl
IHVuaXR0ZXN0CiAgICAgICAgICMgbW9kdWxlIHRvIHJlc29sdmUgbW9kdWxlIG5hbWVzIHJlbGF0
aXZlIHRvIGEgZ2l2ZW4gbW9kdWxlLgogICAgICAgICAjIChUaGlzIHdvdWxkIHJlcXVpcmUgaW1w
b3J0aW5nIGFsbCBvZiB0aGUgdW5pdHRlc3QgbW9kdWxlcyBmcm9tCiAgICAgICAgICMgdGhpcyBt
b2R1bGUuKSAgU2VlIHRoZSBsb2FkVGVzdHNGcm9tTmFtZSgpIG1ldGhvZCBvZiB0aGUKICAgICAg
ICAgIyB1bml0dGVzdC5UZXN0TG9hZGVyIGNsYXNzIGZvciBtb3JlIGRldGFpbHMgb24gdGhpcyBw
YXJhbWV0ZXIuCi0gICAgICAgIHVuaXR0ZXN0Lm1haW4oYXJndj1zeXNfYXJndiwgbW9kdWxlPU5v
bmUsIHRlc3RSdW5uZXI9dGVzdF9ydW5uZXIpCisgICAgICAgIHVuaXR0ZXN0Lm1haW4oYXJndj1h
cmd2LCBtb2R1bGU9Tm9uZSwgdGVzdFJ1bm5lcj10ZXN0X3J1bm5lcikK
</data>
<flag name="review"
          id="122749"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>