<?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>103830</bug_id>
          
          <creation_ts>2012-12-01 19:08:45 -0800</creation_ts>
          <short_desc>nrwt: clean up exception propagation / handling for interrupts and early exits</short_desc>
          <delta_ts>2012-12-03 23:33:08 -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>103824</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780831</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-01 19:08:45 -0800</bug_when>
    <thetext>nrwt: clean up exception propagation / handling for interrupts and early exits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780832</commentid>
    <comment_count>1</comment_count>
      <attachid>177126</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-01 19:13:48 -0800</bug_when>
    <thetext>Created attachment 177126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780834</commentid>
    <comment_count>2</comment_count>
      <attachid>177126</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-12-01 19:37:14 -0800</bug_when>
    <thetext>Comment on attachment 177126
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:437
&gt; +        logging.getLogger().setLevel(logging.DEBUG if options.debug_rwt_logging else logging.INFO)

Nit: this doesn&apos;t need to be in the try, right? In fact, maybe it makes the most sense right after we do the options parsing? In theory, the other code (e.g. the Host constructor) could log stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780952</commentid>
    <comment_count>3</comment_count>
      <attachid>177126</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 07:18:42 -0800</bug_when>
    <thetext>Comment on attachment 177126
Patch

Attachment 177126 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15106106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780965</commentid>
    <comment_count>4</comment_count>
      <attachid>177126</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-02 10:22:55 -0800</bug_when>
    <thetext>Comment on attachment 177126
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:437
&gt;&gt; +        logging.getLogger().setLevel(logging.DEBUG if options.debug_rwt_logging else logging.INFO)
&gt; 
&gt; Nit: this doesn&apos;t need to be in the try, right? In fact, maybe it makes the most sense right after we do the options parsing? In theory, the other code (e.g. the Host constructor) could log stuff.

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781862</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-03 14:00:00 -0800</bug_when>
    <thetext>Committed r136437: &lt;http://trac.webkit.org/changeset/136437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782246</commentid>
    <comment_count>6</comment_count>
      <attachid>177126</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-12-03 23:07:13 -0800</bug_when>
    <thetext>Comment on attachment 177126
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:450
&gt; +    except:

sys.exit(main()) call raises a SystemExit exception which is then again handled here, so a 254 exit code is returned no matter how many tests failed. This affects both BuildBot builders and EWS builders, all of them seemingly failing.

I&apos;ve committed r136474, a simple temporary fix that checks that the exception handled here is not a SystemExit exception. We can address the problem proper when USA wakes up.
http://trac.webkit.org/changeset/136474</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782260</commentid>
    <comment_count>7</comment_count>
      <attachid>177126</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-03 23:33:08 -0800</bug_when>
    <thetext>Comment on attachment 177126
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:450
&gt;&gt; +    except:
&gt; 
&gt; sys.exit(main()) call raises a SystemExit exception which is then again handled here, so a 254 exit code is returned no matter how many tests failed. This affects both BuildBot builders and EWS builders, all of them seemingly failing.
&gt; 
&gt; I&apos;ve committed r136474, a simple temporary fix that checks that the exception handled here is not a SystemExit exception. We can address the problem proper when USA wakes up.
&gt; http://trac.webkit.org/changeset/136474

whoops. I knew I was going to mess up at least one branch of this somewhere, since of course this is the 5 lines of code I don&apos;t have tests for ...

This probably should&apos;ve been:

try:
  return_code = main()
except KeyboardInterrupt:
  return_code = INTERRUPTED_EXIT_STATUS
except:
  return_code = EXCEPTIONAL_EXIT_STATUS
sys.exit(return_code)

as in the prior version. Thanks for patching this in the meantime!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177126</attachid>
            <date>2012-12-01 19:13:48 -0800</date>
            <delta_ts>2012-12-03 23:33:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103830-20121201191117.patch</filename>
            <type>text/plain</type>
            <size>23926</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzEzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWZhN2FhMmNmOWEyYjVhZTdhMTM1OWY4MjhlNmMxZDg0
MzIxNzk1Zi4uZTcxMDZiZTc2ZDU1MGExODIxYmMyNDdiM2FiZTYyNzY3MGQwYWVlYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4
IEBACiAyMDEyLTEyLTAxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5yd3Q6IGNsZWFuIHVwIGV4Y2VwdGlvbiBwcm9wYWdhdGlvbiAvIGhhbmRsaW5nIGZv
ciBpbnRlcnJ1cHRzIGFuZCBlYXJseSBleGl0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIGNvZGUgZm9yIHByb3BhZ2F0aW5nIGVhcmx5IGV4aXRz
IG91dCBvZiB0aGUgdGVzdCBydW4gd2FzCisgICAgICAgIGNvbnZvbHV0ZWQgYW5kIGhhcmQgdG8g
Zm9sbG93LiBCeSBhZGp1c3RpbmcgdGhlIFdvcmtlckV4Y2VwdGlvbiB0bworICAgICAgICBkZXJp
dmUgZnJvbSBCYXNlRXhjZXB0aW9uIHJhdGhlciB0aGFuIEV4Y2VwdGlvbiAod2hpY2ggaXMgYSBm
YWlyCisgICAgICAgIHdheSBvZiByZXByZXNlbnRpbmcgYW4gZXJyb3IgdGhhdCB3YXMgcmVhbGx5
IHVuZXhwZWN0ZWQvdW5yZWNvdmVyYWJsZQorICAgICAgICBhbnl3YXkpIGFuZCBwdXNoaW5nIHRo
ZSBUZXN0UnVuSW50ZXJydXB0ZWRFeGNlcHRpb24gaW50byB0aGUKKyAgICAgICAgUmVzdWx0U3Vt
bWFyeSAod2hpY2ggaXMgYWxzbyBmYWlyIHNpbmNlIGl0IHdhcyBtb3JlIG9mIGEgcmVzdWx0Cisg
ICAgICAgIHRoYW4gYW4gZXhjZXB0aW9uKSB0aGlzIGFsbG93cyB1cyB0byBjb25zb2xpZGF0ZSBh
bmQgY2xlYW4gdXAKKyAgICAgICAgYSBidW5jaCBvZiB0aGUgdHJ5L2NhdGNoIGxvZ2ljIGFuZCBw
YXNzIGZld2VyIHN0YXRlIGZsYWdzIGFyb3VuZC4KKworICAgICAgICBUaGVyZSBhcmUgbm8gcmVh
bCBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhpcyBwYXRjaDsgdGhlcmUncyBhbgorICAgICAgICBB
UEkgY2hhbmdlIGluIHRoYXQgd2Ugc3RvcCBleHBvcnRpbmcgVGVzdFJ1bkludGVycnVwdGVkRXhj
ZXB0aW9uCisgICAgICAgIGFuZCBXb3JrZXJFeGNlcHRpb24gb3V0IG9mIHRoZSBNYW5hZ2VyLCBh
bmQgdGhlIGV4aXN0ZW5jZSBvZiB0aGUKKyAgICAgICAgTWVzc2FnZVBvb2wgaXMgbm93IGNvbXBs
ZXRlbHkgaGlkZGVuLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2Fn
ZV9wb29sLnB5OgorICAgICAgICAoV29ya2VyRXhjZXB0aW9uKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHk6
CisgICAgICAgIChMYXlvdXRUZXN0UnVubmVyLnJ1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAg
KHN1bW1hcml6ZV9yZXN1bHRzKToKKyAgICAgICAgKE1hbmFnZXIucnVuKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoUmVzdWx0U3VtbWFyeVRlc3Quc3VtbWFyaXplZF9yZXN1bHRzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvcmVzdWx0X3N1bW1h
cnkucHk6CisgICAgICAgIChSZXN1bHRTdW1tYXJ5Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAo
cnVuKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAoTWFp
blRlc3QudGVzdF9leGNlcHRpb25fcmFpc2VkLm9mKToKKyAgICAgICAgKE1haW5UZXN0LnRlc3Rf
ZXhjZXB0aW9uX3JhaXNlZCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X3J1bl9mb3JjZSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5p
dHRlc3QucHk6CisgICAgICAgIChUZXN0cHJpbnRlci50ZXN0X3ByaW50X3VuZXhwZWN0ZWRfcmVz
dWx0cy5nZXRfdW5leHBlY3RlZF9yZXN1bHRzKToKKyAgICAgICAgKFRlc3RwcmludGVyKToKKwor
MjAxMi0xMi0wMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBucnd0OiBjbGVhbiB1cCBsb2dpYyBmb3IgcmV0cnlpbmcgZmFpbGVkIHRlc3RzIGEgYml0CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4MjkKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2FnZV9wb29sLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbWVzc2FnZV9wb29sLnB5CmluZGV4IDJl
MWU4NWU1Y2IwNjA0ODU0MTIzMTY3NzVkYWViZTYxMzNmZWQ0MjAuLjAzMDU2Y2Y2NGZlMDVjNWI1
MDdiNzM2OWE1NjdjZGM1N2MwNzRkOTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL21lc3NhZ2VfcG9vbC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9tZXNzYWdlX3Bvb2wucHkKQEAgLTE4NCw3ICsxODQsNyBAQCBjbGFzcyBfTWVzc2FnZVBv
b2wob2JqZWN0KToKICAgICAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBXb3JrZXJFeGNlcHRpb24o
RXhjZXB0aW9uKToKK2NsYXNzIFdvcmtlckV4Y2VwdGlvbihCYXNlRXhjZXB0aW9uKToKICAgICAi
IiJSYWlzZWQgd2hlbiB3ZSByZWNlaXZlIGFuIHVuZXhwZWN0ZWQvdW5rbm93biBleGNlcHRpb24g
ZnJvbSBhIHdvcmtlci4iIiIKICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90
ZXN0X3J1bm5lci5weQppbmRleCA1NGNlNWU2ZmUxMTk4NmJmNzQyNWQ1Y2Q4NGY5YzExNWIwNmFl
MDY3Li5hZjIyNDdiOGEyZGViMzA2YjE4MjA0MTJiZWVkMzRkYjQ2MTYyMTFiIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRf
dGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CkBAIC04MSwxNiArODEsMTMgQEAgY2xh
c3MgTGF5b3V0VGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0g
c2VsZi5fcG9ydC5ob3N0LmZpbGVzeXN0ZW0KIAogICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgdGVz
dF9pbnB1dHMsIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIG51bV93b3JrZXJzLCBuZWVk
c19odHRwLCBuZWVkc193ZWJzb2NrZXRzLCByZXRyeWluZyk6Ci0gICAgICAgICIiIlJldHVybnMg
YSB0dXBsZSBvZiAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGlt
aW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6Ci0gICAgICAgICAg
ICBpbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBydW4gd2FzIGludGVycnVwdGVkCi0gICAgICAg
ICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCBpcyB3aGV0aGVyIHRoZSBpbnRlcnJ1cHRpb24gd2Fz
IGJlY2F1c2Ugc29tZW9uZSB0eXBlZCBDdHJsXkMKKyAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxl
IG9mICh0aHJlYWRfdGltaW5ncywgdGVzdF90aW1pbmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5n
cyk6CiAgICAgICAgICAgICB0aHJlYWRfdGltaW5ncyBpcyBhIGxpc3Qgb2YgZGljdHMgd2l0aCB0
aGUgdG90YWwgcnVudGltZQogICAgICAgICAgICAgICAgIG9mIGVhY2ggdGhyZWFkIHdpdGggJ25h
bWUnLCAnbnVtX3Rlc3RzJywgJ3RvdGFsX3RpbWUnIHByb3BlcnRpZXMKICAgICAgICAgICAgIHRl
c3RfdGltaW5ncyBpcyBhIGxpc3Qgb2YgdGltaW5ncyBmb3IgZWFjaCBzaGFyZGVkIHN1YmRpcmVj
dG9yeQogICAgICAgICAgICAgICAgIG9mIHRoZSBmb3JtIFt0aW1lLCBkaXJlY3RvcnlfbmFtZSwg
bnVtX3Rlc3RzXQogICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MgaXMgYSBsaXN0
IG9mIHJ1biB0aW1lcyBmb3IgZWFjaCB0ZXN0CiAgICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0g
e2ZpbGVuYW1lOmZpbGVuYW1lLCB0ZXN0X3J1bl90aW1lOnRlc3RfcnVuX3RpbWV9Ci0gICAgICAg
ICAgICByZXN1bHRfc3VtbWFyeTogc3VtbWFyeSBvYmplY3QgdG8gcG9wdWxhdGUgd2l0aCB0aGUg
cmVzdWx0cwogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY3VycmVudF9yZXN1bHRfc3VtbWFy
eSA9IHJlc3VsdF9zdW1tYXJ5CiAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0
aW9ucwpAQCAtMTA3LDkgKzEwNCw2IEBAIGNsYXNzIExheW91dFRlc3RSdW5uZXIob2JqZWN0KToK
ICAgICAgICAgc2VsZi5faGFzX2h0dHBfbG9jayA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlbWFp
bmluZ19sb2NrZWRfc2hhcmRzID0gW10KIAotICAgICAgICBrZXlib2FyZF9pbnRlcnJ1cHRlZCA9
IEZhbHNlCi0gICAgICAgIGludGVycnVwdGVkID0gRmFsc2UKLQogICAgICAgICBzZWxmLl9wcmlu
dGVyLndyaXRlX3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKICAgICAgICAgbG9ja2VkX3No
YXJkcywgdW5sb2NrZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRlci5zaGFyZF90ZXN0cyh0ZXN0X2lu
cHV0cywgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2VsZi5fb3B0aW9ucy5m
dWxseV9wYXJhbGxlbCkKIApAQCAtMTMwLDI4ICsxMjQsMjggQEAgY2xhc3MgTGF5b3V0VGVzdFJ1
bm5lcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3dvcmtlcnNfYW5kX3No
YXJkcyhudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpLCBsZW4obG9ja2VkX3NoYXJkcykpCiAK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgotICAgICAgICAgICAgcmV0dXJuIChr
ZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHNlbGYuX3dvcmtlcl9zdGF0cy52YWx1
ZXMoKSwgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQorICAgICAgICAgICAg
cmV0dXJuIChzZWxmLl93b3JrZXJfc3RhdHMudmFsdWVzKCksIHNlbGYuX2dyb3VwX3N0YXRzLCBz
ZWxmLl9hbGxfcmVzdWx0cykKIAogICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSgn
U3RhcnRpbmcgJXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2Vy
cykpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBtZXNzYWdlX3Bvb2wuZ2V0KHNl
bGYsIHNlbGYuX3dvcmtlcl9mYWN0b3J5LCBudW1fd29ya2Vycywgc2VsZi5fcG9ydC53b3JrZXJf
c3RhcnR1cF9kZWxheV9zZWNzKCksIHNlbGYuX3BvcnQuaG9zdCkgYXMgcG9vbDoKICAgICAgICAg
ICAgICAgICBwb29sLnJ1bigoJ3Rlc3RfbGlzdCcsIHNoYXJkLm5hbWUsIHNoYXJkLnRlc3RfaW5w
dXRzKSBmb3Igc2hhcmQgaW4gYWxsX3NoYXJkcykKKyAgICAgICAgZXhjZXB0IFRlc3RSdW5JbnRl
cnJ1cHRlZEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIF9sb2cud2FybmluZyhlLnJlYXNvbikK
KyAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmludGVycnVwdGVkID0gVHJ1ZQogICAgICAgICBl
eGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICBzZWxmLl9wcmludGVyLmZsdXNo
KCkKICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGVsbignSW50ZXJydXB0ZWQsIGV4aXRp
bmcgLi4uJykKLSAgICAgICAgICAgIGtleWJvYXJkX2ludGVycnVwdGVkID0gVHJ1ZQotICAgICAg
ICBleGNlcHQgVGVzdFJ1bkludGVycnVwdGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgX2xv
Zy53YXJuaW5nKGUucmVhc29uKQotICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCisgICAg
ICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAg
X2xvZy5kZWJ1ZygnJXMoIiVzIikgcmFpc2VkLCBleGl0aW5nJyAlIChlLl9fY2xhc3NfXy5fX25h
bWVfXywgc3RyKGUpKSkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAg
ICAgICAgICBzZWxmLnN0b3Bfc2VydmVyc193aXRoX2xvY2soKQogCi0gICAgICAgICMgRklYTUU6
IHNob3VsZCB0aGlzIGJlIGEgY2xhc3MgaW5zdGVhZCBvZiBhIHR1cGxlPwotICAgICAgICByZXR1
cm4gKGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRlZCwgc2VsZi5fd29ya2VyX3N0YXRz
LnZhbHVlcygpLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCisgICAgICAg
ICMgRklYTUU6IE1vdmUgdGhlc2Ugc3RhdHMgaW50byBSZXN1bHRTdW1tYXJ5IGFuZCByZXR1cm4g
dGhhdC4KKyAgICAgICAgcmV0dXJuIChzZWxmLl93b3JrZXJfc3RhdHMudmFsdWVzKCksIHNlbGYu
X2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKIAogICAgIGRlZiBfd29ya2VyX2ZhY3Rv
cnkoc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24pOgogICAgICAgICByZXN1bHRzX2RpcmVjdG9yeSA9
IHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQppbmRleCBkMGQwNzFm
YmNkNmY2NzQ3ZWVjODgzYzJmM2E3OTVjZjM4MmRmZDJhLi4wNDU5MjMyNzAwM2E1MTAyMTZkMGQ5
NzJlMGMyNGY4ODg4NDQzNWEyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKQEAgLTQ2LDcgKzQ2LDcg
QEAgaW1wb3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG1lc3NhZ2VfcG9v
bAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMubGF5b3V0X3Rlc3RfZmlu
ZGVyIGltcG9ydCBMYXlvdXRUZXN0RmluZGVyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5j
b250cm9sbGVycy5sYXlvdXRfdGVzdF9ydW5uZXIgaW1wb3J0IExheW91dFRlc3RSdW5uZXIsIFRl
c3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiwgV29ya2VyRXhjZXB0aW9uCitmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5sYXlvdXRfdGVzdF9ydW5uZXIgaW1wb3J0IExheW91
dFRlc3RSdW5uZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLnRlc3Rf
cmVzdWx0X3dyaXRlciBpbXBvcnQgVGVzdFJlc3VsdFdyaXRlcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IGpzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJh
dG9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQganNv
bl9yZXN1bHRzX2dlbmVyYXRvcgpAQCAtMTA3LDcgKzEwNyw3IEBAIGRlZiB1c2VfdHJhY19saW5r
c19pbl9yZXN1bHRzX2h0bWwocG9ydF9vYmopOgogIyBvciBzcGxpdCBvZmYgZnJvbSBNYW5hZ2Vy
IG9udG8gYW5vdGhlciBoZWxwZXIgY2xhc3MsIGJ1dCBzaG91bGQgbm90IGJlIGEgZnJlZSBmdW5j
dGlvbi4KICMgTW9zdCBsaWtlbHkgdGhpcyBzaG91bGQgYmUgbWFkZSBpbnRvIGl0cyBvd24gY2xh
c3MsIGFuZCB0aGlzIHN1cGVyLWxvbmcgZnVuY3Rpb24KICMgc3BsaXQgaW50byBtYW55IGhlbHBl
ciBmdW5jdGlvbnMuCi1kZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9u
cywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlc3RfdGltaW5ncywgb25seV91bmV4
cGVjdGVkLCBpbnRlcnJ1cHRlZCk6CitkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4
cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlc3RfdGltaW5ncywg
b25seV91bmV4cGVjdGVkKToKICAgICAiIiJTdW1tYXJpemUgZmFpbGluZyByZXN1bHRzIGFzIGEg
ZGljdC4KIAogICAgIEZJWE1FOiBzcGxpdCB0aGlzIGRhdGEgc3RydWN0dXJlIGludG8gYSBzZXBh
cmF0ZSBjbGFzcz8KQEAgLTIzMCw3ICsyMzAsNyBAQCBkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9y
dF9vYmosIGV4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlcwog
ICAgIHJlc3VsdHNbJ251bV9taXNzaW5nJ10gPSBudW1fbWlzc2luZwogICAgIHJlc3VsdHNbJ251
bV9yZWdyZXNzaW9ucyddID0gbnVtX3JlZ3Jlc3Npb25zCiAgICAgcmVzdWx0c1sndXNlc19leHBl
Y3RhdGlvbnNfZmlsZSddID0gcG9ydF9vYmoudXNlc190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkK
LSAgICByZXN1bHRzWydpbnRlcnJ1cHRlZCddID0gaW50ZXJydXB0ZWQgICMgRG9lcyByZXN1bHRz
Lmh0bWwgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY29tcHV0ZSB0aGlzIGl0c2VsZj8gKGJ5
IGNoZWNraW5nIHRvdGFsIG51bWJlciBvZiByZXN1bHRzIHZzLiB0b3RhbCBudW1iZXIgb2YgdGVz
dHM/KQorICAgIHJlc3VsdHNbJ2ludGVycnVwdGVkJ10gPSByZXN1bHRfc3VtbWFyeS5pbnRlcnJ1
cHRlZCAgIyBEb2VzIHJlc3VsdHMuaHRtbCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjb21w
dXRlIHRoaXMgaXRzZWxmPyAoYnkgY2hlY2tpbmcgdG90YWwgbnVtYmVyIG9mIHJlc3VsdHMgdnMu
IHRvdGFsIG51bWJlciBvZiB0ZXN0cz8pCiAgICAgcmVzdWx0c1snbGF5b3V0X3Rlc3RzX2Rpcidd
ID0gcG9ydF9vYmoubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgcmVzdWx0c1snaGFzX3dkaWZmJ10g
PSBwb3J0X29iai53ZGlmZl9hdmFpbGFibGUoKQogICAgIHJlc3VsdHNbJ2hhc19wcmV0dHlfcGF0
Y2gnXSA9IHBvcnRfb2JqLnByZXR0eV9wYXRjaF9hdmFpbGFibGUoKQpAQCAtNDAyLDQ2ICs0MDIs
NDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIC0xCiAKICAg
ICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHJldHJ5X3N1bW1hcnkgPSBy
ZXN1bHRfc3VtbWFyeQogCi0gICAgICAgIGludGVycnVwdGVkLCBrZXlib2FyZF9pbnRlcnJ1cHRl
ZCwgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mg
PSBcCi0gICAgICAgICAgICBzZWxmLl9ydW5fdGVzdHMoc2VsZi5fdGVzdF9uYW1lcywgcmVzdWx0
X3N1bW1hcnksIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHJldHJ5aW5nPUZh
bHNlKQotCi0gICAgICAgICMgV2UgZXhjbHVkZSB0aGUgY3Jhc2hlcyBmcm9tIHRoZSBsaXN0IG9m
IHJlc3VsdHMgdG8gcmV0cnksIGJlY2F1c2UKLSAgICAgICAgIyB3ZSB3YW50IHRvIHRyZWF0IGV2
ZW4gYSBwb3RlbnRpYWxseSBmbGFreSBjcmFzaCBhcyBhbiBlcnJvci4KLQotICAgICAgICBmYWls
dXJlcyA9IHNlbGYuX2ZhaWxlZF90ZXN0X25hbWVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2Ny
YXNoZXM9c2VsZi5fcG9ydC5zaG91bGRfcmV0cnlfY3Jhc2hlcygpLCBpbmNsdWRlX21pc3Npbmc9
RmFsc2UpCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMucmV0cnlfZmFpbHVyZXMgYW5kIGZhaWx1
cmVzIGFuZCBub3QgaW50ZXJydXB0ZWQgYW5kIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZDoKLSAg
ICAgICAgICAgIF9sb2cuaW5mbygnJykKLSAgICAgICAgICAgIF9sb2cuaW5mbygiUmV0cnlpbmcg
JWQgdW5leHBlY3RlZCBmYWlsdXJlKHMpIC4uLiIgJSBsZW4oZmFpbHVyZXMpKQotICAgICAgICAg
ICAgX2xvZy5pbmZvKCcnKQotICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FyZSBh
Ym91dCB0aGUgdmFsdWVzIHJldHVybmVkIGZyb20gdGhlIHJldHJ5IHBhc3MuCi0gICAgICAgICAg
ICByZXRyeV9zdW1tYXJ5ID0gUmVzdWx0U3VtbWFyeShzZWxmLl9leHBlY3RhdGlvbnMsIGZhaWx1
cmVzLCAxLCBzZXQoKSkKLSAgICAgICAgICAgIF8gPSBzZWxmLl9ydW5fdGVzdHMoZmFpbHVyZXMs
IHJldHJ5X3N1bW1hcnksIDEsIHJldHJ5aW5nPVRydWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICByZXRyeV9zdW1tYXJ5ID0gcmVzdWx0X3N1bW1hcnkKLQotICAgICAgICBlbmRfdGltZSA9
IHRpbWUudGltZSgpCi0KLSAgICAgICAgIyBTb21lIGNyYXNoIGxvZ3MgY2FuIHRha2UgYSBsb25n
IHRpbWUgdG8gYmUgd3JpdHRlbiBvdXQgc28gbG9vawotICAgICAgICAjIGZvciBuZXcgbG9ncyBh
ZnRlciB0aGUgdGVzdCBydW4gZmluaXNoZXMuCi0gICAgICAgIHNlbGYuX2xvb2tfZm9yX25ld19j
cmFzaF9sb2dzKHJlc3VsdF9zdW1tYXJ5LCBzdGFydF90aW1lKQotICAgICAgICBzZWxmLl9sb29r
X2Zvcl9uZXdfY3Jhc2hfbG9ncyhyZXRyeV9zdW1tYXJ5LCBzdGFydF90aW1lKQotICAgICAgICBz
ZWxmLl9jbGVhbl91cF9ydW4oKQotCi0gICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1h
cml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1h
cnksIHJldHJ5X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0
ZWQ9VHJ1ZSwgaW50ZXJydXB0ZWQ9aW50ZXJydXB0ZWQpCi0KLSAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF9yZXN1bHRzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwgdGhyZWFkX3RpbWluZ3MsIHRl
c3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIHJlc3VsdF9zdW1tYXJ5LCB1bmV4
cGVjdGVkX3Jlc3VsdHMpCi0KLSAgICAgICAgIyBSZS1yYWlzZSBhIEtleWJvYXJkSW50ZXJydXB0
IGlmIG5lY2Vzc2FyeSBzbyB0aGUgY2FsbGVyIGNhbiBoYW5kbGUgaXQuCi0gICAgICAgIGlmIGtl
eWJvYXJkX2ludGVycnVwdGVkOgotICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQK
KyAgICAgICAgIyBGSVhNRTogbW92ZSB0aGVzZSBmaWVsZHMgaW50byByZXN1bHRfc3VtbWFyeSBz
byB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgdGhlbSBhcm91bmQuCisgICAgICAgIHRocmVhZF90aW1p
bmdzID0gdGVzdF90aW1pbmdzID0ge30KKyAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3Mg
PSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aHJlYWRfdGltaW5ncywgdGVzdF90aW1p
bmdzLCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyA9IFwKKyAgICAgICAgICAgICAgICBzZWxmLl9y
dW5fdGVzdHMoc2VsZi5fdGVzdF9uYW1lcywgcmVzdWx0X3N1bW1hcnksIGludChzZWxmLl9vcHRp
b25zLmNoaWxkX3Byb2Nlc3NlcyksIHJldHJ5aW5nPUZhbHNlKQorCisgICAgICAgICAgICAjIFdl
IGV4Y2x1ZGUgdGhlIGNyYXNoZXMgZnJvbSB0aGUgbGlzdCBvZiByZXN1bHRzIHRvIHJldHJ5LCBi
ZWNhdXNlCisgICAgICAgICAgICAjIHdlIHdhbnQgdG8gdHJlYXQgZXZlbiBhIHBvdGVudGlhbGx5
IGZsYWt5IGNyYXNoIGFzIGFuIGVycm9yLgorCisgICAgICAgICAgICBmYWlsdXJlcyA9IHNlbGYu
X2ZhaWxlZF90ZXN0X25hbWVzKHJlc3VsdF9zdW1tYXJ5LCBpbmNsdWRlX2NyYXNoZXM9c2VsZi5f
cG9ydC5zaG91bGRfcmV0cnlfY3Jhc2hlcygpLCBpbmNsdWRlX21pc3Npbmc9RmFsc2UpCisgICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZCBmYWlsdXJlcyBhbmQg
bm90IHJlc3VsdF9zdW1tYXJ5LmludGVycnVwdGVkOgorICAgICAgICAgICAgICAgIF9sb2cuaW5m
bygnJykKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oIlJldHJ5aW5nICVkIHVuZXhwZWN0ZWQg
ZmFpbHVyZShzKSAuLi4iICUgbGVuKGZhaWx1cmVzKSkKKyAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oJycpCisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB0
aGUgdmFsdWVzIHJldHVybmVkIGZyb20gdGhlIHJldHJ5IHBhc3MuCisgICAgICAgICAgICAgICAg
cmV0cnlfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBmYWlsdXJl
cywgMSwgc2V0KCkpCisgICAgICAgICAgICAgICAgXyA9IHNlbGYuX3J1bl90ZXN0cyhmYWlsdXJl
cywgcmV0cnlfc3VtbWFyeSwgMSwgcmV0cnlpbmc9VHJ1ZSkKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgICMgSWYgd2UgYXJlIGN0cmwtYydlZDsgd2Ugc3RpbGwgd2FudCB0byB0cnkgYW5k
IHByaW50IHRoZSByZXN1bHRzIHdlIGdvdCwgYW5kIGNsZWFuIHVwLAorICAgICAgICAgICAgIyBi
dXQgd2UgZG9uJ3Qgd2FudCB0byB1cGxvYWQgYW55dGhpbmcuCisgICAgICAgICAgICBlbmRfdGlt
ZSA9IHRpbWUudGltZSgpCisKKyAgICAgICAgICAgICMgU29tZSBjcmFzaCBsb2dzIGNhbiB0YWtl
IGEgbG9uZyB0aW1lIHRvIGJlIHdyaXR0ZW4gb3V0IHNvIGxvb2sKKyAgICAgICAgICAgICMgZm9y
IG5ldyBsb2dzIGFmdGVyIHRoZSB0ZXN0IHJ1biBmaW5pc2hlcy4KKyAgICAgICAgICAgIHNlbGYu
X2xvb2tfZm9yX25ld19jcmFzaF9sb2dzKHJlc3VsdF9zdW1tYXJ5LCBzdGFydF90aW1lKQorICAg
ICAgICAgICAgc2VsZi5fbG9va19mb3JfbmV3X2NyYXNoX2xvZ3MocmV0cnlfc3VtbWFyeSwgc3Rh
cnRfdGltZSkKKyAgICAgICAgICAgIHNlbGYuX2NsZWFuX3VwX3J1bigpCisKKyAgICAgICAgICAg
IHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYu
X2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSkKKworICAgICAgICAgICAgc2VsZi5f
cHJpbnRlci5wcmludF9yZXN1bHRzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwgdGhyZWFkX3RpbWlu
Z3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIHJlc3VsdF9zdW1tYXJ5
LCB1bmV4cGVjdGVkX3Jlc3VsdHMpCiAKICAgICAgICAgIyBGSVhNRTogcmVtb3ZlIHJlY29yZF9y
ZXN1bHRzLiBJdCdzIGp1c3QgdXNlZCBmb3IgdGVzdGluZy4gVGhlcmUncyBubyBuZWVkCiAgICAg
ICAgICMgZm9yIGl0IHRvIGJlIGEgY29tbWFuZGxpbmUgYXJndW1lbnQuCi0gICAgICAgIGlmIChz
ZWxmLl9vcHRpb25zLnJlY29yZF9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVu
IGFuZCBub3Qga2V5Ym9hcmRfaW50ZXJydXB0ZWQpOgorICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnJlY29yZF9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgogICAgICAgICAg
ICAgc2VsZi5fcG9ydC5wcmludF9sZWFrc19zdW1tYXJ5KCkKICAgICAgICAgICAgICMgV3JpdGUg
dGhlIHNhbWUgZGF0YSB0byBsb2cgZmlsZXMgYW5kIHVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxl
cyB0byBhcHBlbmdpbmUgc2VydmVyLgotICAgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzID0g
c3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRf
c3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIG9ubHlfdW5l
eHBlY3RlZD1GYWxzZSwgaW50ZXJydXB0ZWQ9aW50ZXJydXB0ZWQpCisgICAgICAgICAgICBzdW1t
YXJpemVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhzZWxmLl9wb3J0LCBzZWxmLl9leHBl
Y3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3Rf
dGltaW5ncywgb25seV91bmV4cGVjdGVkPUZhbHNlKQogICAgICAgICAgICAgc2VsZi5fdXBsb2Fk
X2pzb25fZmlsZXMoc3VtbWFyaXplZF9yZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwgaW5kaXZpZHVh
bF90ZXN0X3RpbWluZ3MpCiAKICAgICAgICAgIyBXcml0ZSB0aGUgc3VtbWFyeSB0byBkaXNrIChy
ZXN1bHRzLmh0bWwpIGFuZCBkaXNwbGF5IGl0IGlmIHJlcXVlc3RlZC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CmluZGV4IGU5NGQxMzMyYmU0MjM1NmE0ZmYyYzY5Y2UzZjQ4
ODQ0YmEyOThiNDMuLjE3ZmNlYWY1ODBlMTIwNzAzNDRiMmIyNTJjZGRhZjg3YjEzNDM1NjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpAQCAtMTc4LDggKzE3OCw4IEBA
IGNsYXNzIFJlc3VsdFN1bW1hcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ3Bhc3Nlcy90ZXh0Lmh0bWwnKSwgVHJ1ZSwgdGVz
dF9pc19zbG93KQogICAgICAgICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sJyksIFRydWUsIHRlc3RfaXNfc2xvdykKICAgICAgICAg
ICAgIHJldHJ5LmFkZChzZWxmLmdldF9yZXN1bHQoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0
bWwnKSwgVHJ1ZSwgdGVzdF9pc19zbG93KQotICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBz
dW1tYXJpemVfcmVzdWx0cyhwb3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90aW1pbmdzPXt9LCBv
bmx5X3VuZXhwZWN0ZWQ9VHJ1ZSwgaW50ZXJydXB0ZWQ9RmFsc2UpCi0gICAgICAgIGV4cGVjdGVk
X3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhwb3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90
aW1pbmdzPXt9LCBvbmx5X3VuZXhwZWN0ZWQ9RmFsc2UsIGludGVycnVwdGVkPUZhbHNlKQorICAg
ICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhwb3J0LCBleHAsIHJz
LCByZXRyeSwgdGVzdF90aW1pbmdzPXt9LCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSkKKyAgICAgICAg
ZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHBvcnQsIGV4cCwgcnMsIHJldHJ5
LCB0ZXN0X3RpbWluZ3M9e30sIG9ubHlfdW5leHBlY3RlZD1GYWxzZSkKICAgICAgICAgcmV0dXJu
IGV4cGVjdGVkX3Jlc3VsdHMsIHVuZXhwZWN0ZWRfcmVzdWx0cwogCiAgICAgZGVmIHRlc3Rfbm9f
c3ZuX3JldmlzaW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbW9kZWxzL3Jlc3VsdF9zdW1tYXJ5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Jlc3VsdF9zdW1tYXJ5LnB5CmluZGV4IDViYjUwMTA2
MTc5NmU1MjdlYzQ0MmI3OTg0ZjJiMzc0YWJiYWI0ZjcuLjc2YTZhY2YxYmQ1OTA2NzUxNTRkZjgz
M2Q3NDY1NTU3Njg3NzM5NWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL21vZGVscy9yZXN1bHRfc3VtbWFyeS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvcmVzdWx0X3N1bW1hcnkucHkKQEAgLTU2LDYgKzU2
LDcgQEAgY2xhc3MgUmVzdWx0U3VtbWFyeShvYmplY3QpOgogICAgICAgICBmb3IgdGltZWxpbmUg
aW4gVGVzdEV4cGVjdGF0aW9ucy5USU1FTElORVMudmFsdWVzKCk6CiAgICAgICAgICAgICBzZWxm
LnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSA9IGV4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0
aF90aW1lbGluZSh0aW1lbGluZSkKICAgICAgICAgc2VsZi5zbG93X3Rlc3RzID0gc2V0KCkKKyAg
ICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCiAKICAgICBkZWYgYWRkKHNlbGYsIHRlc3Rf
cmVzdWx0LCBleHBlY3RlZCwgdGVzdF9pc19zbG93KToKICAgICAgICAgc2VsZi50b3RhbF90ZXN0
c19ieV9leHBlY3RhdGlvblt0ZXN0X3Jlc3VsdC50eXBlXSArPSAxCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRl
eCBjNTA1Y2QzOTljYTc3NWJmZWUzOGE2ZTA3NjZhMTg1YzdhOTEyZGVlLi4yYzhlYjk3ZmM0YzJl
YmIyMTZlNjc4YjRmYTE4MjA4ODE4MDYxZGVmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTM5LDcgKzM5
LDcgQEAgaW1wb3J0IHRyYWNlYmFjawogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9y
dCBIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHN0YWNrX3V0aWxzCi1m
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5tYW5hZ2VyIGltcG9ydCBNYW5h
Z2VyLCBXb3JrZXJFeGNlcHRpb24sIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbgorZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMubWFuYWdlciBpbXBvcnQgTWFuYWdlcgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9u
cwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgY29uZmlndXJhdGlvbl9v
cHRpb25zLCBwbGF0Zm9ybV9vcHRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3
cyBpbXBvcnQgcHJpbnRpbmcKQEAgLTEwMywyNSArMTAzLDE1IEBAIGRlZiBydW4ocG9ydCwgb3B0
aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5
cy5zdGRvCiAKICAgICAgICAgIyBXZSB3cmFwIGFueSBwYXJ0cyBvZiB0aGUgcnVuIHRoYXQgYXJl
IHNsb3cgb3IgbGlrZWx5IHRvIHJhaXNlIGV4Y2VwdGlvbnMKICAgICAgICAgIyBpbiBhIHRyeS9m
aW5hbGx5IHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRp
b24uCi0gICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gLTEKLQogICAgICAgICBtYW5h
Z2VyID0gTWFuYWdlcihwb3J0LCBvcHRpb25zLCBwcmludGVyKQogICAgICAgICBwcmludGVyLnBy
aW50X2NvbmZpZyhwb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCkpCiAKICAgICAgICAgdW5leHBlY3Rl
ZF9yZXN1bHRfY291bnQgPSBtYW5hZ2VyLnJ1bihhcmdzKQogICAgICAgICBfbG9nLmRlYnVnKCJU
ZXN0aW5nIGNvbXBsZXRlZCwgRXhpdCBzdGF0dXM6ICVkIiAlIHVuZXhwZWN0ZWRfcmVzdWx0X2Nv
dW50KQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIGV4Y2VwdGlvbl90eXBlLCBleGNl
cHRpb25fdmFsdWUsIGV4Y2VwdGlvbl90cmFjZWJhY2sgPSBzeXMuZXhjX2luZm8oKQotICAgICAg
ICBpZiBleGNlcHRpb25fdHlwZSBub3QgaW4gKEtleWJvYXJkSW50ZXJydXB0LCBUZXN0UnVuSW50
ZXJydXB0ZWRFeGNlcHRpb24sIFdvcmtlckV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBwcmludCA+
PiBzeXMuc3RkZXJyLCAnXG4lcyByYWlzZWQ6ICVzJyAlIChleGNlcHRpb25fdHlwZS5fX25hbWVf
XywgZXhjZXB0aW9uX3ZhbHVlKQotICAgICAgICAgICAgc3RhY2tfdXRpbHMubG9nX3RyYWNlYmFj
ayhfbG9nLmVycm9yLCBleGNlcHRpb25fdHJhY2ViYWNrKQotICAgICAgICByYWlzZQorICAgICAg
ICByZXR1cm4gdW5leHBlY3RlZF9yZXN1bHRfY291bnQKICAgICBmaW5hbGx5OgogICAgICAgICBw
cmludGVyLmNsZWFudXAoKQogCi0gICAgcmV0dXJuIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50Ci0K
LQogZGVmIF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBvcnQsIG9wdGlvbnMpOgogICAgICIiIlNl
dHMgdGhlIG9wdGlvbnMgdmFsdWVzIHRoYXQgZGVwZW5kIG9uIG90aGVyIG9wdGlvbnMgdmFsdWVz
LiIiIgogICAgICMgV2UgcmV0dXJuIGEgbGlzdCBvZiB3YXJuaW5ncyB0byBwcmludCBhZnRlciB0
aGUgcHJpbnRlciBpcyBpbml0aWFsaXplZC4KQEAgLTQyNiwzNiArNDE2LDM2IEBAIGRlZiBwYXJz
ZV9hcmdzKGFyZ3M9Tm9uZSk6CiAKIAogZGVmIG1haW4oYXJndj1Ob25lKToKKyAgICBvcHRpb25z
LCBhcmdzID0gcGFyc2VfYXJncyhhcmd2KQorICAgIGlmIG9wdGlvbnMucGxhdGZvcm0gYW5kICd0
ZXN0JyBpbiBvcHRpb25zLnBsYXRmb3JtOgorICAgICAgICAjIEl0J3MgYSBiaXQgbGFtZSB0byBp
bXBvcnQgbW9ja3MgaW50byByZWFsIGNvZGUsIGJ1dCB0aGlzIGFsbG93cyB0aGUgdXNlcgorICAg
ICAgICAjIHRvIHJ1biB0ZXN0cyBhZ2FpbnN0IHRoZSB0ZXN0IHBsYXRmb3JtIGludGVyYWN0aXZl
bHksIHdoaWNoIGlzIHVzZWZ1bCBmb3IKKyAgICAgICAgIyBkZWJ1Z2dpbmcgdGVzdCBmYWlsdXJl
cy4KKyAgICAgICAgZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgIGVsc2U6CisgICAgICAgIGhvc3QgPSBI
b3N0KCkKKwogICAgIHRyeToKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3MoYXJn
dikKLSAgICAgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybSBhbmQgJ3Rlc3QnIGluIG9wdGlvbnMucGxh
dGZvcm06Ci0gICAgICAgICAgICAjIEl0J3MgYSBiaXQgbGFtZSB0byBpbXBvcnQgbW9ja3MgaW50
byByZWFsIGNvZGUsIGJ1dCB0aGlzIGFsbG93cyB0aGUgdXNlcgotICAgICAgICAgICAgIyB0byBy
dW4gdGVzdHMgYWdhaW5zdCB0aGUgdGVzdCBwbGF0Zm9ybSBpbnRlcmFjdGl2ZWx5LCB3aGljaCBp
cyB1c2VmdWwgZm9yCi0gICAgICAgICAgICAjIGRlYnVnZ2luZyB0ZXN0IGZhaWx1cmVzLgotICAg
ICAgICAgICAgZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAot
ICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGhvc3QgPSBIb3N0KCkKICAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChvcHRp
b25zLnBsYXRmb3JtLCBvcHRpb25zKQogICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yLCBl
OgogICAgICAgICAjIEZJWE1FOiBpcyB0aGlzIHRoZSBiZXN0IHdheSB0byBoYW5kbGUgdW5zdXBw
b3J0ZWQgcG9ydCBuYW1lcz8KICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgc3RyKGUpCiAg
ICAgICAgIHJldHVybiBFWENFUFRJT05BTF9FWElUX1NUQVRVUworCisgICAgdHJ5OgorICAgICAg
ICBsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGxvZ2dpbmcuREVCVUcgaWYgb3B0aW9ucy5k
ZWJ1Z19yd3RfbG9nZ2luZyBlbHNlIGxvZ2dpbmcuSU5GTykKKyAgICAgICAgcmV0dXJuIHJ1bihw
b3J0LCBvcHRpb25zLCBhcmdzKQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgIHBy
aW50ID4+IHN5cy5zdGRlcnIsICdcbiVzIHJhaXNlZDogJXMnICUgKGUuX19jbGFzc19fLl9fbmFt
ZV9fLCBzdHIoZSkpCiAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJy
KQogICAgICAgICByYWlzZQogCi0gICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5zZXRMZXZlbChsb2dn
aW5nLkRFQlVHIGlmIG9wdGlvbnMuZGVidWdfcnd0X2xvZ2dpbmcgZWxzZSBsb2dnaW5nLklORk8p
Ci0gICAgcmV0dXJuIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzKQotCiAKIGlmICdfX21haW5fXycg
PT0gX19uYW1lX186CiAgICAgdHJ5OgotICAgICAgICByZXR1cm5fY29kZSA9IG1haW4oKQotICAg
IGV4Y2VwdCBCYXNlRXhjZXB0aW9uLCBlOgotICAgICAgICBpZiBlLl9fY2xhc3NfXyBpbiAoS2V5
Ym9hcmRJbnRlcnJ1cHQsIFRlc3RSdW5JbnRlcnJ1cHRlZEV4Y2VwdGlvbik6Ci0gICAgICAgICAg
ICBzeXMuZXhpdChJTlRFUlJVUFRFRF9FWElUX1NUQVRVUykKKyAgICAgICAgc3lzLmV4aXQobWFp
bigpKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgc3lzLmV4aXQoSU5U
RVJSVVBURURfRVhJVF9TVEFUVVMpCisgICAgZXhjZXB0OgogICAgICAgICBzeXMuZXhpdChFWENF
UFRJT05BTF9FWElUX1NUQVRVUykKLQotICAgIHN5cy5leGl0KHJldHVybl9jb2RlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQppbmRleCAyYmZlOTA0ZDViMjRi
MjNlZTIwMjI0NTU3OTRiNjExNWUxZGFiNzBiLi5kMWU0NDM5YzU5ZTAyNTdkODI0YzJiYWU4NGMy
NmNiMjAwODIwZDQ3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVz
dC5weQpAQCAtNTIsNyArNTIsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1w
b3J0IE1vY2tIb3N0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMubWFuYWdlciBpbXBvcnQgV29ya2VyRXhj
ZXB0aW9uCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBQb3J0CiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJp
dmVyCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBvcnQgc2tpcF9pZgpAQCAtMzQyLDEzICsz
NDEsMTMgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVRlc3RpbmdN
aXhpbik6CiAgICAgICAgICMgaXMgYWN0dWFsbHkgdXNlZnVsIGluIHRlc3RpbmcuCiAgICAgICAg
ICMKICAgICAgICAgIyBFeGNlcHRpb25zIHJhaXNlZCBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgYXJl
IHJlLXBhY2thZ2VkIGludG8KLSAgICAgICAgIyBXb3JrZXJFeGNlcHRpb25zLCB3aGljaCBoYXZl
IGEgc3RyaW5nIGNhcHR1cmUgb2YgdGhlIHN0YWNrIHdoaWNoIGNhbgorICAgICAgICAjIFdvcmtl
ckV4Y2VwdGlvbnMgKGEgc3ViY2xhc3Mgb2YgQmFzZUV4Y2VwdGlvbiksIHdoaWNoIGhhdmUgYSBz
dHJpbmcgY2FwdHVyZSBvZiB0aGUgc3RhY2sgd2hpY2ggY2FuCiAgICAgICAgICMgYmUgcHJpbnRl
ZCwgYnV0IGRvbid0IGRpc3BsYXkgcHJvcGVybHkgaW4gdGhlIHVuaXQgdGVzdCBleGNlcHRpb24g
aGFuZGxlcnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmdf
cnVuLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCYXNlRXhjZXB0aW9uLCBsb2dnaW5nX3J1
biwKICAgICAgICAgICAgIFsnZmFpbHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwnLCAnLS1j
aGlsZC1wcm9jZXNzZXMnLCAnMSddLCB0ZXN0c19pbmNsdWRlZD1UcnVlKQogCiAgICAgICAgIGlm
IHNlbGYuc2hvdWxkX3Rlc3RfcHJvY2Vzc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoV29ya2VyRXhjZXB0aW9uLCBsb2dnaW5nX3J1biwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKEJhc2VFeGNlcHRpb24sIGxvZ2dpbmdfcnVuLAogICAgICAgICAgICAgICAgIFsnLS1j
aGlsZC1wcm9jZXNzZXMnLCAnMicsICctLWZvcmNlJywgJ2ZhaWx1cmVzL2V4cGVjdGVkL2V4Y2Vw
dGlvbi5odG1sJywgJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwgc2hh
cmVkX3BvcnQ9RmFsc2UpCiAKICAgICBkZWYgdGVzdF9mdWxsX3Jlc3VsdHNfaHRtbChzZWxmKToK
QEAgLTQ5OSw3ICs0OTgsNiBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3Ry
ZWFtVGVzdGluZ01peGluKToKICAgICAgICAgIyBUaGlzIHJhaXNlcyBhbiBleGNlcHRpb24gYmVj
YXVzZSB3ZSBydW4KICAgICAgICAgIyBmYWlsdXJlcy9leHBlY3RlZC9leGNlcHRpb24uaHRtbCwg
d2hpY2ggaXMgbm9ybWFsbHkgU0tJUHBlZC4KIAotICAgICAgICAjIFNlZSBhbHNvIHRoZSBjb21t
ZW50cyBpbiB0ZXN0X2V4Y2VwdGlvbl9yYWlzZWQoKSBhYm91dCBWYWx1ZUVycm9yIHZzLiBXb3Jr
ZXJFeGNlcHRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dp
bmdfcnVuLCBbJy0tZm9yY2UnXSkKIAogICAgIGRlZiB0ZXN0X3J1bl9wYXJ0KHNlbGYpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRp
bmdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9wcmludGluZ191bml0dGVzdC5weQppbmRleCBjMGI5MjhiMGNjODE5YTBlMDdkZTczYTlkOTNh
NWMxNzkwYjQzZTlkLi5kNGM0MTY5NjZlMmM5MDBmN2JjYmM3OTI1YzExYTcwZjM2MWZhYTVhIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmlu
dGluZ191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weQpAQCAtMjAwLDcgKzIwMCw3IEBAIGNsYXNzICBU
ZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgcmV0cnkuYWRk
KHNlbGYuZ2V0X3Jlc3VsdCgncGFzc2VzL3RleHQuaHRtbCcpLCBUcnVlLCB0ZXN0X2lzX3Nsb3cp
CiAgICAgICAgICAgICAgICAgcmV0cnkuYWRkKHNlbGYuZ2V0X3Jlc3VsdCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvdGltZW91dC5odG1sJyksIFRydWUsIHRlc3RfaXNfc2xvdykKICAgICAgICAgICAgICAg
ICByZXRyeS5hZGQoc2VsZi5nZXRfcmVzdWx0KCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1s
JyksIFRydWUsIHRlc3RfaXNfc2xvdykKLSAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9
IG1hbmFnZXIuc3VtbWFyaXplX3Jlc3VsdHMoc2VsZi5fcG9ydCwgZXhwLCBycywgcmV0cnksIHRl
c3RfdGltaW5ncz17fSwgb25seV91bmV4cGVjdGVkPVRydWUsIGludGVycnVwdGVkPUZhbHNlKQor
ICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRzID0gbWFuYWdlci5zdW1tYXJpemVfcmVzdWx0
cyhzZWxmLl9wb3J0LCBleHAsIHJzLCByZXRyeSwgdGVzdF90aW1pbmdzPXt9LCBvbmx5X3VuZXhw
ZWN0ZWQ9VHJ1ZSkKICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX3Jlc3VsdHMKIAogICAg
ICAgICB0ZXN0cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90aW1l
b3V0Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCddCg==
</data>
<flag name="review"
          id="193125"
          type_id="1"
          status="+"
          setter="ojan"
    />
    <flag name="commit-queue"
          id="193126"
          type_id="3"
          status="-"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>