<?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>49707</bug_id>
          
          <creation_ts>2010-11-17 19:24:55 -0800</creation_ts>
          <short_desc>new-run-webkit-tests: create first part of &apos;message_broker&apos; class for multiprocessing fixes</short_desc>
          <delta_ts>2010-11-18 15:23:50 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>310674</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-17 19:24:55 -0800</bug_when>
    <thetext>new-run-webkit-tests: create first part of &apos;message_broker&apos; class for multiprocessing fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310675</commentid>
    <comment_count>1</comment_count>
      <attachid>74195</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-17 19:27:28 -0800</bug_when>
    <thetext>Created attachment 74195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311101</commentid>
    <comment_count>2</comment_count>
      <attachid>74195</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-18 14:46:45 -0800</bug_when>
    <thetext>Comment on attachment 74195
Patch

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

Just some small nits

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread_unittest.py:35
&gt; +    pass

Should we just delete this file for now?  It&apos;s easy to bring back.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:34
&gt; +

Nit: Kill blank line?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:38
&gt; +# FIXME: This is a small file for now to handle breaking the uber-patch into
&gt; +# smaller, more manageable patches.

I don&apos;t understand what needs to be fixed here.  I think it&apos;s fine to have small .py files.  I would just remove this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311110</commentid>
    <comment_count>3</comment_count>
      <attachid>74297</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 15:09:21 -0800</bug_when>
    <thetext>Created attachment 74297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311111</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 15:11:50 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 74195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74195&amp;action=review
&gt; 
&gt; Just some small nits
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread_unittest.py:35
&gt; &gt; +    pass
&gt; 
&gt; Should we just delete this file for now?  It&apos;s easy to bring back.
&gt; 

I figured the time in which it didn&apos;t exist was limited, so there wasn&apos;t much point in deleting it, but I dont feel that strongly about it, so I removed it.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:34
&gt; &gt; +
&gt; 
&gt; Nit: Kill blank line?
&gt;

Technically, the blank line at the end of a docstring is recommended by PEP 8, but I waffle on them myself. Deleted.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py:38
&gt; &gt; +# FIXME: This is a small file for now to handle breaking the uber-patch into
&gt; &gt; +# smaller, more manageable patches.
&gt; 
&gt; I don&apos;t understand what needs to be fixed here.  I think it&apos;s fine to have small .py files.  I would just remove this comment.

The comment was more intended to indicate to the review that this file would be getting much bigger. Otherwise the reviewer might&apos;ve wondered why this was being split out into a separate file at all (I would&apos;ve, anyway). Deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311123</commentid>
    <comment_count>5</comment_count>
      <attachid>74297</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 15:23:44 -0800</bug_when>
    <thetext>Comment on attachment 74297
Patch

Clearing flags on attachment: 74297

Committed r72339: &lt;http://trac.webkit.org/changeset/72339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311124</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 15:23:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74195</attachid>
            <date>2010-11-17 19:27:28 -0800</date>
            <delta_ts>2010-11-18 15:09:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49707-20101117192727.patch</filename>
            <type>text/plain</type>
            <size>19470</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZjYzNmIzZWUxNzUxYTQzZmZiOTUxYzc2ODYxOWEzYmUwNDliOWZlLi42NzBkNGVh
ZTI4Mjk3MzQxZWU0ZjgyNTRlZTNjYTNmYWI2MGFmZDgyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAK
IDIwMTAtMTEtMTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNyZWF0ZSBmaXJzdCBwYXJ0IG9mICdtZXNzYWdlX2Jyb2tlcicgY2xhc3MgZm9yIG11
bHRpcHJvY2Vzc2luZyBmaXhlcworCisgICAgICAgIENyZWF0ZSB0aGUgZmlyc3QgdmVyc2lvbiBv
ZiB0aGUgJ21lc3NhZ2VfYnJva2VyJyBwYWNrYWdlLiBUaGlzCisgICAgICAgIGNsYXNzIHdpbGwg
ZW5jYXBzdWxhdGUgYWxsIG9mIHRoZSB0aHJlYWRpbmcvbXVsdGlwcm9jZXNzaW5nIGFuZAorICAg
ICAgICBtZXNzYWdlLXNlbmRpbmcgZGV0YWlscyBmb3IgdGhlIGNvbW11bmljYXRpb24gYmV0d2Vl
biB0aGUKKyAgICAgICAgJ21hbmFnZXInIG9iamVjdCBhbmQgdGhlICd3b3JrZXInIG9iamVjdHMu
IEZvciB0aGUgbW9tZW50LCBpdAorICAgICAgICBqdXN0IGhvbGRzIHNvbWUgcm91dGluZXMgYW5k
IHRlc3RzIGZvciBsb2dnaW5nIHRocmVhZCBzdGFja3MuCisKKyAgICAgICAgVGhlcmUgc2hvdWxk
IGJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLCBqdXN0IG1vdmluZyBzdHVm
ZgorICAgICAgICBhcm91bmQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ5NzA3CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2Fn
ZV9icm9rZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKworMjAxMC0x
MS0xNyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgogCiAgICAgICAgIHdlYmtpdC1wYXRjaCBwcmV0dHktZGlm
ZiBzaG91bGRuJ3QgbmVlZCB0byBiZSBydW4gZnJvbSBhIGNoZWNrb3V0IHJvb3QgaW4gZ2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVf
dGhyZWFkLnB5CmluZGV4IDgxNDI4NjcyYjYwNTE4N2UyMjExMTc0NGMwNDQ5MGQ1NTk1ZWEzZWYu
LmFkZjRmZmNjNzhmNmQ0YWU0MTc3MDljNjU2ZmE0OGU3YmZkYzFkZDcgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1
bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
CkBAIC00OCw3ICs0OCw2IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWQKIGltcG9ydCB0aHJl
YWRpbmcKIGltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCiAKIGltcG9ydCB0ZXN0X2ZhaWx1
cmVzCiBpbXBvcnQgdGVzdF9vdXRwdXQKQEAgLTU4LDIzICs1Nyw2IEBAIF9sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQiKQogCiAKLWRlZiBm
aW5kX3RocmVhZF9zdGFjayhpZCk6Ci0gICAgIiIiUmV0dXJucyBhIHN0YWNrIG9iamVjdCB0aGF0
IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBzdGFjayB0cmFjZSBmb3IKLSAgICB0aGUgZ2l2ZW4gdGhy
ZWFkIGlkIChvciBOb25lIGlmIHRoZSBpZCBpcyBub3QgZm91bmQpLiIiIgotICAgIGZvciB0aHJl
YWRfaWQsIHN0YWNrIGluIHN5cy5fY3VycmVudF9mcmFtZXMoKS5pdGVtcygpOgotICAgICAgICBp
ZiB0aHJlYWRfaWQgPT0gaWQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RhY2sKLSAgICByZXR1cm4g
Tm9uZQotCi0KLWRlZiBsb2dfc3RhY2soc3RhY2spOgotICAgICIiIkxvZyBhIHN0YWNrIHRyYWNl
IHRvIGxvZy5lcnJvcigpLiIiIgotICAgIGZvciBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5l
IGluIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN0YWNrKToKLSAgICAgICAgX2xvZy5lcnJvcign
RmlsZTogIiVzIiwgbGluZSAlZCwgaW4gJXMnICUgKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUpKQot
ICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgX2xvZy5lcnJvcignICAlcycgJSBsaW5lLnN0
cmlwKCkpCi0KLQogZGVmIF9leHBlY3RlZF90ZXN0X291dHB1dChwb3J0LCBmaWxlbmFtZSk6CiAg
ICAgIiIiUmV0dXJucyBhbiBleHBlY3RlZCBUZXN0T3V0cHV0IG9iamVjdC4iIiIKICAgICByZXR1
cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1dChwb3J0LmV4cGVjdGVkX3RleHQoZmlsZW5hbWUpLApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJfdHJlZV90aHJlYWRfdW5pdHRlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3Jl
bmRlcl90cmVlX3RocmVhZF91bml0dGVzdC5weQppbmRleCA2M2Y4NmQ5M2Q4OTQ5NWVhOTdjOWYw
MWFhMTc0OTE2OGViNmFhYjhkLi40ODY5MmYzYmI5NTE4ZmQ0MjkxZTI1YzQzNGU4MmQxMDM0ZTIz
MTYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZF91bml0dGVzdC5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZF91bml0dGVzdC5weQpAQCAtMjgsMjEgKzI4LDExIEBA
CiAKICIiIiJUZXN0cyBjb2RlIHBhdGhzIG5vdCBjb3ZlcmVkIGJ5IHRoZSByZWd1bGFyIHVuaXQg
dGVzdHMuIiIiCiAKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQKLQogCiBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBkZWYgdGVzdF9maW5kX3RocmVhZF9zdGFja19mb3VuZChzZWxmKToKLSAgICAgICAgaWQsIHN0
YWNrID0gc3lzLl9jdXJyZW50X2ZyYW1lcygpLml0ZW1zKClbMF0KLSAgICAgICAgZm91bmRfc3Rh
Y2sgPSBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5maW5kX3RocmVhZF9zdGFjayhpZCkKLSAgICAg
ICAgc2VsZi5hc3NlcnROb3RFcXVhbChmb3VuZF9zdGFjaywgTm9uZSkKLQotICAgIGRlZiB0ZXN0
X2ZpbmRfdGhyZWFkX3N0YWNrX25vdF9mb3VuZChzZWxmKToKLSAgICAgICAgZm91bmRfc3RhY2sg
PSBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5maW5kX3RocmVhZF9zdGFjaygwKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGZvdW5kX3N0YWNrLCBOb25lKQorICAgIHBhc3MKIAogCiBpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNz
YWdlX2Jyb2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjViZTI1M2RhMzEwM2QyYTJkMTdiYTViZWRiZjQy
Njg3MTExODFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkKQEAgLTAsMCAr
MSw3MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2Fn
ZXMsIHRocmVhZHMsIHByb2Nlc3NlcywgYW5kIGNvbmN1cnJlbmN5IGZvciBydW4td2Via2l0LXRl
c3RzLgorCitUaGUgbW9kZWwgd2UgdXNlIGlzIHRoYXQgb2YgYSBtZXNzYWdlIGJyb2tlciAtIGl0
IHByb3ZpZGVzIGEgbWVzc2FnaW5nCithYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcywgYW5k
IGhhbmRsZXMgbGF1bmNoaW5nIHRocmVhZHMgYW5kL29yIHByb2Nlc3NlcworZGVwZW5kaW5nIG9u
IHRoZSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbi4KKworIiIiCisKKyMgRklYTUU6IFRoaXMgaXMg
YSBzbWFsbCBmaWxlIGZvciBub3cgdG8gaGFuZGxlIGJyZWFraW5nIHRoZSB1YmVyLXBhdGNoIGlu
dG8KKyMgc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHBhdGNoZXMuCisKK2ltcG9ydCBsb2dnaW5n
CitpbXBvcnQgc3lzCitpbXBvcnQgdHJhY2ViYWNrCisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQorCisKK2RlZiBsb2dfd2VkZ2VkX3RocmVhZChpZCk6CisgICAgIiIiTG9n
IGluZm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiB0aHJlYWQgc3RhdGUuIiIiCisgICAgc3RhY2sg
PSBfZmluZF90aHJlYWRfc3RhY2soaWQpCisgICAgYXNzZXJ0KHN0YWNrIGlzIG5vdCBOb25lKQor
ICAgIF9sb2cuZXJyb3IoIiIpCisgICAgX2xvZy5lcnJvcigiVGhyZWFkICVkIGlzIHdlZGdlZCIg
JSBpZCkKKyAgICBfbG9nX3N0YWNrKHN0YWNrKQorICAgIF9sb2cuZXJyb3IoIiIpCisKKworZGVm
IF9maW5kX3RocmVhZF9zdGFjayhpZCk6CisgICAgIiIiUmV0dXJucyBhIHN0YWNrIG9iamVjdCB0
aGF0IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBzdGFjayB0cmFjZSBmb3IKKyAgICB0aGUgZ2l2ZW4g
dGhyZWFkIGlkIChvciBOb25lIGlmIHRoZSBpZCBpcyBub3QgZm91bmQpLiIiIgorICAgIGZvciB0
aHJlYWRfaWQsIHN0YWNrIGluIHN5cy5fY3VycmVudF9mcmFtZXMoKS5pdGVtcygpOgorICAgICAg
ICBpZiB0aHJlYWRfaWQgPT0gaWQ6CisgICAgICAgICAgICByZXR1cm4gc3RhY2sKKyAgICByZXR1
cm4gTm9uZQorCisKK2RlZiBfbG9nX3N0YWNrKHN0YWNrKToKKyAgICAiIiJMb2cgYSBzdGFjayB0
cmFjZSB0byBsb2cuZXJyb3IoKS4iIiIKKyAgICBmb3IgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwg
bGluZSBpbiB0cmFjZWJhY2suZXh0cmFjdF9zdGFjayhzdGFjayk6CisgICAgICAgIF9sb2cuZXJy
b3IoJ0ZpbGU6ICIlcyIsIGxpbmUgJWQsIGluICVzJyAlIChmaWxlbmFtZSwgbGluZW5vLCBuYW1l
KSkKKyAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgJXMnICUgbGlu
ZS5zdHJpcCgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNz
YWdlX2Jyb2tlcl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzA4NzQ1NWIzY2M1MGU4MmM3YzMx
OGNiMzg3YTJkYjk4ZjIxMDE3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSwxNjQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IFF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdGhyZWFkCitpbXBvcnQgdGlt
ZQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBhcnJheV9z
dHJlYW0KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQor
Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cworCitp
bXBvcnQgZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQKK2ltcG9ydCBtZXNzYWdlX2Jyb2tlcgorCisK
K2NsYXNzIFRlc3RUaHJlYWQoZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuV2F0Y2hhYmxlVGhyZWFk
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnRlZF9xdWV1ZSwgc3RvcHBpbmdfcXVldWUp
OgorICAgICAgICBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5XYXRjaGFibGVUaHJlYWQuX19pbml0
X18oc2VsZikKKyAgICAgICAgc2VsZi5fc3RhcnRlZF9xdWV1ZSA9IHN0YXJ0ZWRfcXVldWUKKyAg
ICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19xdWV1ZQorICAgICAgICBzZWxm
Ll90aW1lb3V0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGltZW91dF9xdWV1ZSA9IFF1ZXVlLlF1
ZXVlKCkKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHNlbGYuX2NvdmVyZWRfcnVuKCkK
KworICAgIGRlZiBfY292ZXJlZF9ydW4oc2VsZik6CisgICAgICAgICMgRklYTUU6IHRoaXMgaXMg
YSBzZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsgYXJvdW5kIGEgYnVnCisgICAgICAgICMgaW4gY292
ZXJhZ2U6IHNlZSBodHRwOi8vYml0YnVja2V0Lm9yZy9uZWQvY292ZXJhZ2VweS9pc3N1ZS84NS4K
KyAgICAgICAgc2VsZi5fdGhyZWFkX2lkID0gdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHNlbGYuX3N0YXJ0ZWRfcXVldWUucHV0KCcnKQorICAgICAgICAgICAg
bXNnID0gc2VsZi5fc3RvcHBpbmdfcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGlmIG1zZyA9PSAn
S2V5Ym9hcmRJbnRlcnJ1cHQnOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJy
dXB0CisgICAgICAgICAgICBlbGlmIG1zZyA9PSAnRXhjZXB0aW9uJzoKKyAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCkKKyAgICAgICAgICAgIGVsaWYgbXNnID09ICdUaW1lb3V0JzoK
KyAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0ID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNl
bGYuX3RpbWVvdXRfcXVldWUuZ2V0KCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc2Vs
Zi5fZXhjZXB0aW9uX2luZm8gPSBzeXMuZXhjX2luZm8oKQorCisgICAgZGVmIG5leHRfdGltZW91
dChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fdGltZW91dDoKKyAgICAgICAgICAgIHNlbGYuX3Rp
bWVvdXRfcXVldWUucHV0KCdkb25lJykKKyAgICAgICAgICAgIHJldHVybiB0aW1lLnRpbWUoKSAt
IDEwCisgICAgICAgIHJldHVybiB0aW1lLnRpbWUoKQorCisKK2NsYXNzIFRlc3RIYW5kbGVyKGxv
Z2dpbmcuSGFuZGxlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzdHJlYW0pOgorICAgICAg
ICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fc3RyZWFtID0g
YXN0cmVhbQorCisgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgc2VsZi5fc3Ry
ZWFtLndyaXRlKHNlbGYuZm9ybWF0KHJlY29yZCkpCisKKworY2xhc3MgV2FpdEZvclRocmVhZHNU
b0ZpbmlzaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNsYXNzIE1vY2tUZXN0UnVubmVy
KHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lcik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAg
ICAgICAgIHBhc3MKKworICAgICAgICBkZWYgdXBkYXRlX3N1bW1hcnkoc2VsZiwgcmVzdWx0X3N1
bW1hcnkpOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHJ1bl9vbmVfdGhyZWFkKHNlbGYs
IG1zZyk6CisgICAgICAgIHJ1bm5lciA9IHNlbGYuTW9ja1Rlc3RSdW5uZXIoKQorICAgICAgICBz
dGFydGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBR
dWV1ZS5RdWV1ZSgpCisgICAgICAgIGNoaWxkX3RocmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRpbmdf
cXVldWUsIHN0b3BwaW5nX3F1ZXVlKQorICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQoKQorICAg
ICAgICBzdGFydGVkX21zZyA9IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCisgICAgICAgIHN0b3BwaW5n
X3F1ZXVlLnB1dChtc2cpCisgICAgICAgIHRocmVhZHMgPSBbY2hpbGRfdGhyZWFkXQorICAgICAg
ICByZXR1cm4gcnVubmVyLl93YWl0X2Zvcl90aHJlYWRzX3RvX2ZpbmlzaCh0aHJlYWRzLCBOb25l
KQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIGludGVycnVwdGVkID0gc2Vs
Zi5ydW5fb25lX3RocmVhZCgnJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnRlcnJ1cHRl
ZCkKKworICAgIGRlZiB0ZXN0X2ludGVycnVwdChzZWxmKToKKyAgICAgICAgaW50ZXJydXB0ZWQg
PSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCdLZXlib2FyZEludGVycnVwdCcpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShpbnRlcnJ1cHRlZCkKKworICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6Cisg
ICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKKyAgICAgICAgb2MuY2Fw
dHVyZV9vdXRwdXQoKQorICAgICAgICBpbnRlcnJ1cHRlZCA9IHNlbGYucnVuX29uZV90aHJlYWQo
J1RpbWVvdXQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGludGVycnVwdGVkKQorICAgICAg
ICBvYy5yZXN0b3JlX291dHB1dCgpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYucnVuX29uZV90aHJlYWQs
ICdFeGNlcHRpb24nKQorCisKK2NsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRl
ZiB0ZXN0X2ZpbmRfdGhyZWFkX3N0YWNrX2ZvdW5kKHNlbGYpOgorICAgICAgICBpZCwgc3RhY2sg
PSBzeXMuX2N1cnJlbnRfZnJhbWVzKCkuaXRlbXMoKVswXQorICAgICAgICBmb3VuZF9zdGFjayA9
IG1lc3NhZ2VfYnJva2VyLl9maW5kX3RocmVhZF9zdGFjayhpZCkKKyAgICAgICAgc2VsZi5hc3Nl
cnROb3RFcXVhbChmb3VuZF9zdGFjaywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfdGhyZWFk
X3N0YWNrX25vdF9mb3VuZChzZWxmKToKKyAgICAgICAgZm91bmRfc3RhY2sgPSBtZXNzYWdlX2Jy
b2tlci5fZmluZF90aHJlYWRfc3RhY2soMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3Vu
ZF9zdGFjaywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvZ193ZWRnZWRfdGhyZWFkKHNlbGYpOgor
ICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNh
cHR1cmVfb3V0cHV0KCkKKyAgICAgICAgbG9nZ2VyID0gbWVzc2FnZV9icm9rZXIuX2xvZworICAg
ICAgICBhc3RyZWFtID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAgaGFuZGxl
ciA9IFRlc3RIYW5kbGVyKGFzdHJlYW0pCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRs
ZXIpCisKKyAgICAgICAgc3RhcnRpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIHN0
b3BwaW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQorICAgICAgICBjaGlsZF90aHJlYWQgPSBUZXN0
VGhyZWFkKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkKKyAgICAgICAgY2hpbGRfdGhy
ZWFkLnN0YXJ0KCkKKyAgICAgICAgbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0KCkKKworICAgICAg
ICBtZXNzYWdlX2Jyb2tlci5sb2dfd2VkZ2VkX3RocmVhZChjaGlsZF90aHJlYWQuaWQoKSkKKyAg
ICAgICAgc3RvcHBpbmdfcXVldWUucHV0KCcnKQorICAgICAgICBjaGlsZF90aHJlYWQuam9pbih0
aW1lb3V0PTEuMCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzdHJlYW0uZW1wdHkoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF90aHJlYWQuaXNBbGl2ZSgpKQorICAgICAg
ICBvYy5yZXN0b3JlX291dHB1dCgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGIzN2ZhMWVi
ZjJiYjMyMTFkNTIyOTRiNWQ4ODE1ZWZiOTU0ZTM2ZWYuLjc3Yjg5OWI0MmMxYzgyZjZlOTAyNTNi
ZTE5YTVjZGU2NjIwMWJlM2UgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtNjYsNiAr
NjYsNyBAQCBpbXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IGR1
bXBfcmVuZGVyX3RyZWVfdGhyZWFkCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBqc29uX2xh
eW91dF9yZXN1bHRzX2dlbmVyYXRvcgorZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgbWVzc2Fn
ZV9icm9rZXIKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHByaW50aW5nCiBmcm9tIGxheW91
dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSBsYXlvdXRfcGFja2FnZSBp
bXBvcnQgdGVzdF9mYWlsdXJlcwpAQCAtNjY3LDcgKzY2OCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgICAgICAgICAgICAgICAgICBzb21lX3RocmVhZF9pc19hbGl2ZSA9IFRydWUKICAg
ICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGltZW91dCA9IHRocmVhZC5uZXh0X3RpbWVvdXQo
KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfdGltZW91dCBhbmQgdCA+IG5leHRf
dGltZW91dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvZ193ZWRnZWRfdGhyZWFk
KHRocmVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX2Jyb2tlci5sb2df
d2VkZ2VkX3RocmVhZCh0aHJlYWQuaWQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJlYWQuY2xlYXJfbmV4dF90aW1lb3V0KCkKIAogICAgICAgICAgICAgICAgIHNlbGYudXBkYXRl
X3N1bW1hcnkocmVzdWx0X3N1bW1hcnkpCkBAIC0xNjcwLDE2ICsxNjcxLDYgQEAgZGVmIHBhcnNl
X2FyZ3MoYXJncz1Ob25lKToKICAgICByZXR1cm4gb3B0aW9ucywgYXJncwogCiAKLWRlZiBfbG9n
X3dlZGdlZF90aHJlYWQodGhyZWFkKToKLSAgICAiIiJMb2cgaW5mb3JtYXRpb24gYWJvdXQgdGhl
IGdpdmVuIHRocmVhZCBzdGF0ZS4iIiIKLSAgICBpZCA9IHRocmVhZC5pZCgpCi0gICAgc3RhY2sg
PSBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5maW5kX3RocmVhZF9zdGFjayhpZCkKLSAgICBhc3Nl
cnQoc3RhY2sgaXMgbm90IE5vbmUpCi0gICAgX2xvZy5lcnJvcigiIikKLSAgICBfbG9nLmVycm9y
KCJ0aHJlYWQgJXMgKCVkKSBpcyB3ZWRnZWQiICUgKHRocmVhZC5nZXROYW1lKCksIGlkKSkKLSAg
ICBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5sb2dfc3RhY2soc3RhY2spCi0gICAgX2xvZy5lcnJv
cigiIikKLQogCiBkZWYgbWFpbigpOgogICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9hcmdzKCkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IDU0ZTFkYzA1
ZGYwMWM3MDYwN2NlMzM2ZDVkOTAwMDQyNjE0NDU1NzAuLjBiZDFiM2EzNWNhOTEyOWMyYjdhYzg4
MjA2N2QzNzYyOTZhODhiYjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0
dGVzdC5weQpAQCAtNTIwLDExNCArNTIwLDUgQEAgY2xhc3MgRHJ5cnVuVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
cGl4ZWwtdGVzdHMnXSkpCiAKIAotY2xhc3MgVGVzdFRocmVhZChkdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZC5XYXRjaGFibGVUaHJlYWQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydGVkX3F1
ZXVlLCBzdG9wcGluZ19xdWV1ZSk6Ci0gICAgICAgIGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLldh
dGNoYWJsZVRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9zdGFydGVkX3F1ZXVl
ID0gc3RhcnRlZF9xdWV1ZQotICAgICAgICBzZWxmLl9zdG9wcGluZ19xdWV1ZSA9IHN0b3BwaW5n
X3F1ZXVlCi0gICAgICAgIHNlbGYuX3RpbWVvdXQgPSBGYWxzZQotICAgICAgICBzZWxmLl90aW1l
b3V0X3F1ZXVlID0gUXVldWUuUXVldWUoKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAg
c2VsZi5fY292ZXJlZF9ydW4oKQotCi0gICAgZGVmIF9jb3ZlcmVkX3J1bihzZWxmKToKLSAgICAg
ICAgIyBGSVhNRTogdGhpcyBpcyBhIHNlcGFyYXRlIHJvdXRpbmUgdG8gd29yayBhcm91bmQgYSBi
dWcKLSAgICAgICAgIyBpbiBjb3ZlcmFnZTogc2VlIGh0dHA6Ly9iaXRidWNrZXQub3JnL25lZC9j
b3ZlcmFnZXB5L2lzc3VlLzg1LgotICAgICAgICBzZWxmLl90aHJlYWRfaWQgPSB0aHJlYWQuZ2V0
X2lkZW50KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fc3RhcnRlZF9xdWV1ZS5w
dXQoJycpCi0gICAgICAgICAgICBtc2cgPSBzZWxmLl9zdG9wcGluZ19xdWV1ZS5nZXQoKQotICAg
ICAgICAgICAgaWYgbXNnID09ICdLZXlib2FyZEludGVycnVwdCc6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgIGVsaWYgbXNnID09ICdFeGNlcHRp
b24nOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQotICAgICAgICAgICAgZWxp
ZiBtc2cgPT0gJ1RpbWVvdXQnOgotICAgICAgICAgICAgICAgIHNlbGYuX3RpbWVvdXQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgc2VsZi5fdGltZW91dF9xdWV1ZS5nZXQoKQotICAgICAgICBleGNl
cHQ6Ci0gICAgICAgICAgICBzZWxmLl9leGNlcHRpb25faW5mbyA9IHN5cy5leGNfaW5mbygpCi0K
LSAgICBkZWYgbmV4dF90aW1lb3V0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLl90aW1lb3V0Ogot
ICAgICAgICAgICAgc2VsZi5fdGltZW91dF9xdWV1ZS5wdXQoJ2RvbmUnKQotICAgICAgICAgICAg
cmV0dXJuIHRpbWUudGltZSgpIC0gMTAKLSAgICAgICAgcmV0dXJuIHRpbWUudGltZSgpCi0KLQot
Y2xhc3MgVGVzdEhhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgYXN0cmVhbSk6Ci0gICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAg
ICAgICBzZWxmLl9zdHJlYW0gPSBhc3RyZWFtCi0KLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQp
OgotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGUoc2VsZi5mb3JtYXQocmVjb3JkKSkKLQotCi1j
bGFzcyBXYWl0Rm9yVGhyZWFkc1RvRmluaXNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
Y2xhc3MgTW9ja1Rlc3RSdW5uZXIocnVuX3dlYmtpdF90ZXN0cy5UZXN0UnVubmVyKToKLSAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGRlZiBf
X2RlbF9fKHNlbGYpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGRlZiB1cGRhdGVfc3Vt
bWFyeShzZWxmLCByZXN1bHRfc3VtbWFyeSk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYg
cnVuX29uZV90aHJlYWQoc2VsZiwgbXNnKToKLSAgICAgICAgcnVubmVyID0gc2VsZi5Nb2NrVGVz
dFJ1bm5lcigpCi0gICAgICAgIHN0YXJ0aW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAg
ICBzdG9wcGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgY2hpbGRfdGhyZWFkID0g
VGVzdFRocmVhZChzdGFydGluZ19xdWV1ZSwgc3RvcHBpbmdfcXVldWUpCi0gICAgICAgIGNoaWxk
X3RocmVhZC5zdGFydCgpCi0gICAgICAgIHN0YXJ0ZWRfbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0
KCkKLSAgICAgICAgc3RvcHBpbmdfcXVldWUucHV0KG1zZykKLSAgICAgICAgdGhyZWFkcyA9IFtj
aGlsZF90aHJlYWRdCi0gICAgICAgIHJldHVybiBydW5uZXIuX3dhaXRfZm9yX3RocmVhZHNfdG9f
ZmluaXNoKHRocmVhZHMsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAg
ICAgaW50ZXJydXB0ZWQgPSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCcnKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGludGVycnVwdGVkKQotCi0gICAgZGVmIHRlc3RfaW50ZXJydXB0KHNlbGYpOgot
ICAgICAgICBpbnRlcnJ1cHRlZCA9IHNlbGYucnVuX29uZV90aHJlYWQoJ0tleWJvYXJkSW50ZXJy
dXB0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGludGVycnVwdGVkKQotCi0gICAgZGVmIHRl
c3RfdGltZW91dChzZWxmKToKLSAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1
cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIGludGVycnVwdGVkID0g
c2VsZi5ydW5fb25lX3RocmVhZCgnVGltZW91dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
aW50ZXJydXB0ZWQpCi0gICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKLQotICAgIGRlZiB0ZXN0
X2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
c2VsZi5ydW5fb25lX3RocmVhZCwgJ0V4Y2VwdGlvbicpCi0KLQotY2xhc3MgU3RhbmRhbG9uZUZ1
bmN0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2xvZ193ZWRnZWRf
dGhyZWFkKHNlbGYpOgotICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgp
Ci0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgbG9nZ2VyID0gcnVuX3dlYmtp
dF90ZXN0cy5fbG9nCi0gICAgICAgIGFzdHJlYW0gPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0o
KQotICAgICAgICBoYW5kbGVyID0gVGVzdEhhbmRsZXIoYXN0cmVhbSkKLSAgICAgICAgbG9nZ2Vy
LmFkZEhhbmRsZXIoaGFuZGxlcikKLQotICAgICAgICBzdGFydGluZ19xdWV1ZSA9IFF1ZXVlLlF1
ZXVlKCkKLSAgICAgICAgc3RvcHBpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGNo
aWxkX3RocmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRpbmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKQot
ICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQoKQotICAgICAgICBtc2cgPSBzdGFydGluZ19xdWV1
ZS5nZXQoKQotCi0gICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX2xvZ193ZWRnZWRfdGhyZWFkKGNo
aWxkX3RocmVhZCkKLSAgICAgICAgc3RvcHBpbmdfcXVldWUucHV0KCcnKQotICAgICAgICBjaGls
ZF90aHJlYWQuam9pbih0aW1lb3V0PTEuMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFz
dHJlYW0uZW1wdHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF90aHJlYWQuaXNB
bGl2ZSgpKQotICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCi0KLQogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74297</attachid>
            <date>2010-11-18 15:09:21 -0800</date>
            <delta_ts>2010-11-18 15:23:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49707-20101118150919.patch</filename>
            <type>text/plain</type>
            <size>20764</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyOGU5NWIyMjY3MzFmYzM4YmViNjA0YTRiNTM2NDA1MTI0OTVlNTZkLi4wNTliMTIy
ODdmNjJhMjEzNWI1NjQ1MTNlYjE5OWE5MDMwYzQ1M2NhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTAtMTEtMTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNyZWF0ZSBmaXJzdCBwYXJ0IG9mICdtZXNzYWdlX2Jyb2tlcicgY2xhc3MgZm9yIG11
bHRpcHJvY2Vzc2luZyBmaXhlcworCisgICAgICAgIENyZWF0ZSB0aGUgZmlyc3QgdmVyc2lvbiBv
ZiB0aGUgJ21lc3NhZ2VfYnJva2VyJyBwYWNrYWdlLiBUaGlzCisgICAgICAgIGNsYXNzIHdpbGwg
ZW5jYXBzdWxhdGUgYWxsIG9mIHRoZSB0aHJlYWRpbmcvbXVsdGlwcm9jZXNzaW5nIGFuZAorICAg
ICAgICBtZXNzYWdlLXNlbmRpbmcgZGV0YWlscyBmb3IgdGhlIGNvbW11bmljYXRpb24gYmV0d2Vl
biB0aGUKKyAgICAgICAgJ21hbmFnZXInIG9iamVjdCBhbmQgdGhlICd3b3JrZXInIG9iamVjdHMu
IEZvciB0aGUgbW9tZW50LCBpdAorICAgICAgICBqdXN0IGhvbGRzIHNvbWUgcm91dGluZXMgYW5k
IHRlc3RzIGZvciBsb2dnaW5nIHRocmVhZCBzdGFja3MuCisKKyAgICAgICAgVGhlcmUgc2hvdWxk
IGJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLCBqdXN0IG1vdmluZyBzdHVm
ZgorICAgICAgICBhcm91bmQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ5NzA3CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRl
cl90cmVlX3RocmVhZF91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5weTogQWRk
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvbWVzc2FnZV9icm9rZXJfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KwogMjAxMC0xMS0xOCAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90
cmVlX3RocmVhZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CmluZGV4IDg4ZjQ5M2Qw
Zjk4YWRiMzQxMTUzOWRmOTIwOTA0MmU0NGI1NTM5M2MuLmRlOTdhZDRlOGE3MTdkNDNjYjQ3OTI5
NTk3YTVlMDZmZDY1ZTUwNDUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL2R1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLnB5CkBAIC00OCw3ICs0OCw2IEBAIGltcG9y
dCBzeXMKIGltcG9ydCB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCi1pbXBv
cnQgdHJhY2ViYWNrCiAKIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBpbXBvcnQgdGVzdF9vdXRwdXQK
QEAgLTU4LDIzICs1Nyw2IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5
b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiZHVt
cF9yZW5kZXJfdHJlZV90aHJlYWQiKQogCiAKLWRlZiBmaW5kX3RocmVhZF9zdGFjayhpZCk6Ci0g
ICAgIiIiUmV0dXJucyBhIHN0YWNrIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGR1bXAgYSBz
dGFjayB0cmFjZSBmb3IKLSAgICB0aGUgZ2l2ZW4gdGhyZWFkIGlkIChvciBOb25lIGlmIHRoZSBp
ZCBpcyBub3QgZm91bmQpLiIiIgotICAgIGZvciB0aHJlYWRfaWQsIHN0YWNrIGluIHN5cy5fY3Vy
cmVudF9mcmFtZXMoKS5pdGVtcygpOgotICAgICAgICBpZiB0aHJlYWRfaWQgPT0gaWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RhY2sKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBsb2dfc3RhY2so
c3RhY2spOgotICAgICIiIkxvZyBhIHN0YWNrIHRyYWNlIHRvIGxvZy5lcnJvcigpLiIiIgotICAg
IGZvciBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lIGluIHRyYWNlYmFjay5leHRyYWN0X3N0
YWNrKHN0YWNrKToKLSAgICAgICAgX2xvZy5lcnJvcignRmlsZTogIiVzIiwgbGluZSAlZCwgaW4g
JXMnICUgKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUpKQotICAgICAgICBpZiBsaW5lOgotICAgICAg
ICAgICAgX2xvZy5lcnJvcignICAlcycgJSBsaW5lLnN0cmlwKCkpCi0KLQogZGVmIF9leHBlY3Rl
ZF90ZXN0X291dHB1dChwb3J0LCBmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJucyBhbiBleHBlY3Rl
ZCBUZXN0T3V0cHV0IG9iamVjdC4iIiIKICAgICByZXR1cm4gdGVzdF9vdXRwdXQuVGVzdE91dHB1
dChwb3J0LmV4cGVjdGVkX3RleHQoZmlsZW5hbWUpLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvZHVtcF9yZW5kZXJf
dHJlZV90aHJlYWRfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZF91bml0dGVz
dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNmODZkOTNkODk0OTVlYTk3Yzlm
MDFhYTE3NDkxNjhlYjZhYWI4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9kdW1wX3JlbmRlcl90cmVlX3RocmVhZF91bml0dGVzdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiIiVGVzdHMgY29kZSBwYXRo
cyBub3QgY292ZXJlZCBieSB0aGUgcmVndWxhciB1bml0IHRlc3RzLiIiIgotCi1pbXBvcnQgc3lz
Ci1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkCi0KLQot
Y2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZmluZF90aHJlYWRf
c3RhY2tfZm91bmQoc2VsZik6Ci0gICAgICAgIGlkLCBzdGFjayA9IHN5cy5fY3VycmVudF9mcmFt
ZXMoKS5pdGVtcygpWzBdCi0gICAgICAgIGZvdW5kX3N0YWNrID0gZHVtcF9yZW5kZXJfdHJlZV90
aHJlYWQuZmluZF90aHJlYWRfc3RhY2soaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwo
Zm91bmRfc3RhY2ssIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9maW5kX3RocmVhZF9zdGFja19ub3Rf
Zm91bmQoc2VsZik6Ci0gICAgICAgIGZvdW5kX3N0YWNrID0gZHVtcF9yZW5kZXJfdHJlZV90aHJl
YWQuZmluZF90aHJlYWRfc3RhY2soMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZF9z
dGFjaywgTm9uZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0
Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tZXNzYWdlX2Jyb2tlci5w
eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMzk1MWMwMmVmM2QxNzJhMzllNzM2OWNlYjIxOTdmMWNiY2I5Yjk4Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXIucHkKQEAgLTAsMCArMSw2OCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyIiIk1vZHVsZSBmb3IgaGFuZGxpbmcgbWVzc2FnZXMsIHRocmVhZHMs
IHByb2Nlc3NlcywgYW5kIGNvbmN1cnJlbmN5IGZvciBydW4td2Via2l0LXRlc3RzLgorCitUaGUg
bW9kZWwgd2UgdXNlIGlzIHRoYXQgb2YgYSBtZXNzYWdlIGJyb2tlciAtIGl0IHByb3ZpZGVzIGEg
bWVzc2FnaW5nCithYnN0cmFjdGlvbiBhbmQgbWVzc2FnZSBsb29wcywgYW5kIGhhbmRsZXMgbGF1
bmNoaW5nIHRocmVhZHMgYW5kL29yIHByb2Nlc3NlcworZGVwZW5kaW5nIG9uIHRoZSByZXF1ZXN0
ZWQgY29uZmlndXJhdGlvbi4KKyIiIgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHN5cworaW1w
b3J0IHRyYWNlYmFjaworCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKwor
CitkZWYgbG9nX3dlZGdlZF90aHJlYWQoaWQpOgorICAgICIiIkxvZyBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgZ2l2ZW4gdGhyZWFkIHN0YXRlLiIiIgorICAgIHN0YWNrID0gX2ZpbmRfdGhyZWFkX3N0
YWNrKGlkKQorICAgIGFzc2VydChzdGFjayBpcyBub3QgTm9uZSkKKyAgICBfbG9nLmVycm9yKCIi
KQorICAgIF9sb2cuZXJyb3IoIlRocmVhZCAlZCBpcyB3ZWRnZWQiICUgaWQpCisgICAgX2xvZ19z
dGFjayhzdGFjaykKKyAgICBfbG9nLmVycm9yKCIiKQorCisKK2RlZiBfZmluZF90aHJlYWRfc3Rh
Y2soaWQpOgorICAgICIiIlJldHVybnMgYSBzdGFjayBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0
byBkdW1wIGEgc3RhY2sgdHJhY2UgZm9yCisgICAgdGhlIGdpdmVuIHRocmVhZCBpZCAob3IgTm9u
ZSBpZiB0aGUgaWQgaXMgbm90IGZvdW5kKS4iIiIKKyAgICBmb3IgdGhyZWFkX2lkLCBzdGFjayBp
biBzeXMuX2N1cnJlbnRfZnJhbWVzKCkuaXRlbXMoKToKKyAgICAgICAgaWYgdGhyZWFkX2lkID09
IGlkOgorICAgICAgICAgICAgcmV0dXJuIHN0YWNrCisgICAgcmV0dXJuIE5vbmUKKworCitkZWYg
X2xvZ19zdGFjayhzdGFjayk6CisgICAgIiIiTG9nIGEgc3RhY2sgdHJhY2UgdG8gbG9nLmVycm9y
KCkuIiIiCisgICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gdHJhY2ViYWNr
LmV4dHJhY3Rfc3RhY2soc3RhY2spOgorICAgICAgICBfbG9nLmVycm9yKCdGaWxlOiAiJXMiLCBs
aW5lICVkLCBpbiAlcycgJSAoZmlsZW5hbWUsIGxpbmVubywgbmFtZSkpCisgICAgICAgIGlmIGxp
bmU6CisgICAgICAgICAgICBfbG9nLmVycm9yKCcgICVzJyAlIGxpbmUuc3RyaXAoKSkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWVzc2FnZV9icm9rZXJfdW5pdHRl
c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDcwODc0NTViM2NjNTBlODJjN2MzMThjYjM4N2EyZGI5OGYyMTAx
NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL21lc3NhZ2VfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC0wLDAg
KzEsMTY0IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBRdWV1
ZQoraW1wb3J0IHN5cworaW1wb3J0IHRocmVhZAoraW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVz
dAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgYXJyYXlfc3RyZWFtCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKKworZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKKworaW1wb3J0IGR1bXBfcmVuZGVy
X3RyZWVfdGhyZWFkCitpbXBvcnQgbWVzc2FnZV9icm9rZXIKKworCitjbGFzcyBUZXN0VGhyZWFk
KGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLldhdGNoYWJsZVRocmVhZCk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHN0YXJ0ZWRfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKToKKyAgICAgICAgZHVtcF9y
ZW5kZXJfdHJlZV90aHJlYWQuV2F0Y2hhYmxlVGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAg
IHNlbGYuX3N0YXJ0ZWRfcXVldWUgPSBzdGFydGVkX3F1ZXVlCisgICAgICAgIHNlbGYuX3N0b3Bw
aW5nX3F1ZXVlID0gc3RvcHBpbmdfcXVldWUKKyAgICAgICAgc2VsZi5fdGltZW91dCA9IEZhbHNl
CisgICAgICAgIHNlbGYuX3RpbWVvdXRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisKKyAgICBkZWYg
cnVuKHNlbGYpOgorICAgICAgICBzZWxmLl9jb3ZlcmVkX3J1bigpCisKKyAgICBkZWYgX2NvdmVy
ZWRfcnVuKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIGEgc2VwYXJhdGUgcm91dGlu
ZSB0byB3b3JrIGFyb3VuZCBhIGJ1ZworICAgICAgICAjIGluIGNvdmVyYWdlOiBzZWUgaHR0cDov
L2JpdGJ1Y2tldC5vcmcvbmVkL2NvdmVyYWdlcHkvaXNzdWUvODUuCisgICAgICAgIHNlbGYuX3Ro
cmVhZF9pZCA9IHRocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBz
ZWxmLl9zdGFydGVkX3F1ZXVlLnB1dCgnJykKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0b3Bw
aW5nX3F1ZXVlLmdldCgpCisgICAgICAgICAgICBpZiBtc2cgPT0gJ0tleWJvYXJkSW50ZXJydXB0
JzoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAg
ZWxpZiBtc2cgPT0gJ0V4Y2VwdGlvbic6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigpCisgICAgICAgICAgICBlbGlmIG1zZyA9PSAnVGltZW91dCc6CisgICAgICAgICAgICAgICAg
c2VsZi5fdGltZW91dCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0X3F1ZXVl
LmdldCgpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbl9pbmZv
ID0gc3lzLmV4Y19pbmZvKCkKKworICAgIGRlZiBuZXh0X3RpbWVvdXQoc2VsZik6CisgICAgICAg
IGlmIHNlbGYuX3RpbWVvdXQ6CisgICAgICAgICAgICBzZWxmLl90aW1lb3V0X3F1ZXVlLnB1dCgn
ZG9uZScpCisgICAgICAgICAgICByZXR1cm4gdGltZS50aW1lKCkgLSAxMAorICAgICAgICByZXR1
cm4gdGltZS50aW1lKCkKKworCitjbGFzcyBUZXN0SGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhc3RyZWFtKToKKyAgICAgICAgbG9nZ2luZy5IYW5kbGVy
Ll9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX3N0cmVhbSA9IGFzdHJlYW0KKworICAgIGRl
ZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZShzZWxmLmZv
cm1hdChyZWNvcmQpKQorCisKK2NsYXNzIFdhaXRGb3JUaHJlYWRzVG9GaW5pc2hUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKyAgICBjbGFzcyBNb2NrVGVzdFJ1bm5lcihydW5fd2Via2l0X3Rlc3Rz
LlRlc3RSdW5uZXIpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBw
YXNzCisKKyAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICBwYXNzCisKKyAg
ICAgICAgZGVmIHVwZGF0ZV9zdW1tYXJ5KHNlbGYsIHJlc3VsdF9zdW1tYXJ5KToKKyAgICAgICAg
ICAgIHBhc3MKKworICAgIGRlZiBydW5fb25lX3RocmVhZChzZWxmLCBtc2cpOgorICAgICAgICBy
dW5uZXIgPSBzZWxmLk1vY2tUZXN0UnVubmVyKCkKKyAgICAgICAgc3RhcnRpbmdfcXVldWUgPSBR
dWV1ZS5RdWV1ZSgpCisgICAgICAgIHN0b3BwaW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQorICAg
ICAgICBjaGlsZF90aHJlYWQgPSBUZXN0VGhyZWFkKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19x
dWV1ZSkKKyAgICAgICAgY2hpbGRfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc3RhcnRlZF9tc2cg
PSBzdGFydGluZ19xdWV1ZS5nZXQoKQorICAgICAgICBzdG9wcGluZ19xdWV1ZS5wdXQobXNnKQor
ICAgICAgICB0aHJlYWRzID0gW2NoaWxkX3RocmVhZF0KKyAgICAgICAgcmV0dXJuIHJ1bm5lci5f
d2FpdF9mb3JfdGhyZWFkc190b19maW5pc2godGhyZWFkcywgTm9uZSkKKworICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgorICAgICAgICBpbnRlcnJ1cHRlZCA9IHNlbGYucnVuX29uZV90aHJlYWQo
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW50ZXJydXB0ZWQpCisKKyAgICBkZWYgdGVz
dF9pbnRlcnJ1cHQoc2VsZik6CisgICAgICAgIGludGVycnVwdGVkID0gc2VsZi5ydW5fb25lX3Ro
cmVhZCgnS2V5Ym9hcmRJbnRlcnJ1cHQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW50ZXJy
dXB0ZWQpCisKKyAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBvYyA9IG91dHB1
dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAg
ICAgICAgaW50ZXJydXB0ZWQgPSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCdUaW1lb3V0JykKKyAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShpbnRlcnJ1cHRlZCkKKyAgICAgICAgb2MucmVzdG9yZV9vdXRw
dXQoKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnJ1bl9vbmVfdGhyZWFkLCAnRXhjZXB0aW9uJykKKwor
CitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maW5kX3RocmVh
ZF9zdGFja19mb3VuZChzZWxmKToKKyAgICAgICAgaWQsIHN0YWNrID0gc3lzLl9jdXJyZW50X2Zy
YW1lcygpLml0ZW1zKClbMF0KKyAgICAgICAgZm91bmRfc3RhY2sgPSBtZXNzYWdlX2Jyb2tlci5f
ZmluZF90aHJlYWRfc3RhY2soaWQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZm91bmRf
c3RhY2ssIE5vbmUpCisKKyAgICBkZWYgdGVzdF9maW5kX3RocmVhZF9zdGFja19ub3RfZm91bmQo
c2VsZik6CisgICAgICAgIGZvdW5kX3N0YWNrID0gbWVzc2FnZV9icm9rZXIuX2ZpbmRfdGhyZWFk
X3N0YWNrKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmRfc3RhY2ssIE5vbmUpCisK
KyAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3RocmVhZChzZWxmKToKKyAgICAgICAgb2MgPSBvdXRw
dXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQorICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisg
ICAgICAgIGxvZ2dlciA9IG1lc3NhZ2VfYnJva2VyLl9sb2cKKyAgICAgICAgYXN0cmVhbSA9IGFy
cmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCisgICAgICAgIGhhbmRsZXIgPSBUZXN0SGFuZGxlcihh
c3RyZWFtKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgIHN0
YXJ0aW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQorICAgICAgICBzdG9wcGluZ19xdWV1ZSA9IFF1
ZXVlLlF1ZXVlKCkKKyAgICAgICAgY2hpbGRfdGhyZWFkID0gVGVzdFRocmVhZChzdGFydGluZ19x
dWV1ZSwgc3RvcHBpbmdfcXVldWUpCisgICAgICAgIGNoaWxkX3RocmVhZC5zdGFydCgpCisgICAg
ICAgIG1zZyA9IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCisKKyAgICAgICAgbWVzc2FnZV9icm9rZXIu
bG9nX3dlZGdlZF90aHJlYWQoY2hpbGRfdGhyZWFkLmlkKCkpCisgICAgICAgIHN0b3BwaW5nX3F1
ZXVlLnB1dCgnJykKKyAgICAgICAgY2hpbGRfdGhyZWFkLmpvaW4odGltZW91dD0xLjApCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3RyZWFtLmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoY2hpbGRfdGhyZWFkLmlzQWxpdmUoKSkKKyAgICAgICAgb2MucmVzdG9yZV9vdXRw
dXQoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCAxMTlkZThjZmVmZTk5OGUxMzA1YThjMWM3
OTY4YTcxNjNjYmI1NTQyLi5iMzgwNGY0NzBiYzYzZmIzZDViN2I2MGVhZjc2OTNhM2Q5OTg5YTcx
IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTY2LDYgKzY2LDcgQEAgaW1wb3J0IHRy
YWNlYmFjawogCiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCBkdW1wX3JlbmRlcl90cmVlX3Ro
cmVhZAogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQganNvbl9sYXlvdXRfcmVzdWx0c19nZW5l
cmF0b3IKK2Zyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IG1lc3NhZ2VfYnJva2VyCiBmcm9tIGxh
eW91dF9wYWNrYWdlIGltcG9ydCBwcmludGluZwogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQg
dGVzdF9leHBlY3RhdGlvbnMKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZmFpbHVy
ZXMKQEAgLTY2NCw3ICs2NjUsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgICAg
ICAgICAgICAgc29tZV90aHJlYWRfaXNfYWxpdmUgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0X3RpbWVvdXQgPSB0aHJlYWQubmV4dF90aW1lb3V0KCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChuZXh0X3RpbWVvdXQgYW5kIHQgPiBuZXh0X3RpbWVvdXQpOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9sb2dfd2VkZ2VkX3RocmVhZCh0aHJlYWQpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9icm9rZXIubG9nX3dlZGdlZF90aHJlYWQodGhy
ZWFkLmlkKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLmNsZWFyX25leHRf
dGltZW91dCgpCiAKICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHJlc3VsdF9z
dW1tYXJ5KQpAQCAtMTY2NywxNiArMTY2OCw2IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6
CiAgICAgcmV0dXJuIG9wdGlvbnMsIGFyZ3MKIAogCi1kZWYgX2xvZ193ZWRnZWRfdGhyZWFkKHRo
cmVhZCk6Ci0gICAgIiIiTG9nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnaXZlbiB0aHJlYWQgc3Rh
dGUuIiIiCi0gICAgaWQgPSB0aHJlYWQuaWQoKQotICAgIHN0YWNrID0gZHVtcF9yZW5kZXJfdHJl
ZV90aHJlYWQuZmluZF90aHJlYWRfc3RhY2soaWQpCi0gICAgYXNzZXJ0KHN0YWNrIGlzIG5vdCBO
b25lKQotICAgIF9sb2cuZXJyb3IoIiIpCi0gICAgX2xvZy5lcnJvcigidGhyZWFkICVzICglZCkg
aXMgd2VkZ2VkIiAlICh0aHJlYWQuZ2V0TmFtZSgpLCBpZCkpCi0gICAgZHVtcF9yZW5kZXJfdHJl
ZV90aHJlYWQubG9nX3N0YWNrKHN0YWNrKQotICAgIF9sb2cuZXJyb3IoIiIpCi0KIAogZGVmIG1h
aW4oKToKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VfYXJncygpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCA1NGUxZGMwNWRmMDFjNzA2MDdjZTMzNmQ1
ZDkwMDA0MjYxNDQ1NTcwLi4wYmQxYjNhMzVjYTkxMjljMmI3YWM4ODIwNjdkMzc2Mjk2YTg4YmIw
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTUyMCwx
MTQgKzUyMCw1IEBAIGNsYXNzIERyeXJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXBpeGVsLXRlc3RzJ10pKQog
CiAKLWNsYXNzIFRlc3RUaHJlYWQoZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuV2F0Y2hhYmxlVGhy
ZWFkKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnRlZF9xdWV1ZSwgc3RvcHBpbmdfcXVl
dWUpOgotICAgICAgICBkdW1wX3JlbmRlcl90cmVlX3RocmVhZC5XYXRjaGFibGVUaHJlYWQuX19p
bml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fc3RhcnRlZF9xdWV1ZSA9IHN0YXJ0ZWRfcXVldWUK
LSAgICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19xdWV1ZQotICAgICAgICBz
ZWxmLl90aW1lb3V0ID0gRmFsc2UKLSAgICAgICAgc2VsZi5fdGltZW91dF9xdWV1ZSA9IFF1ZXVl
LlF1ZXVlKCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvdmVyZWRfcnVu
KCkKLQotICAgIGRlZiBfY292ZXJlZF9ydW4oc2VsZik6Ci0gICAgICAgICMgRklYTUU6IHRoaXMg
aXMgYSBzZXBhcmF0ZSByb3V0aW5lIHRvIHdvcmsgYXJvdW5kIGEgYnVnCi0gICAgICAgICMgaW4g
Y292ZXJhZ2U6IHNlZSBodHRwOi8vYml0YnVja2V0Lm9yZy9uZWQvY292ZXJhZ2VweS9pc3N1ZS84
NS4KLSAgICAgICAgc2VsZi5fdGhyZWFkX2lkID0gdGhyZWFkLmdldF9pZGVudCgpCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHNlbGYuX3N0YXJ0ZWRfcXVldWUucHV0KCcnKQotICAgICAgICAg
ICAgbXNnID0gc2VsZi5fc3RvcHBpbmdfcXVldWUuZ2V0KCkKLSAgICAgICAgICAgIGlmIG1zZyA9
PSAnS2V5Ym9hcmRJbnRlcnJ1cHQnOgotICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50
ZXJydXB0Ci0gICAgICAgICAgICBlbGlmIG1zZyA9PSAnRXhjZXB0aW9uJzoKLSAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCkKLSAgICAgICAgICAgIGVsaWYgbXNnID09ICdUaW1lb3V0
JzoKLSAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0ID0gVHJ1ZQotICAgICAgICAgICAgICAg
IHNlbGYuX3RpbWVvdXRfcXVldWUuZ2V0KCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAg
c2VsZi5fZXhjZXB0aW9uX2luZm8gPSBzeXMuZXhjX2luZm8oKQotCi0gICAgZGVmIG5leHRfdGlt
ZW91dChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fdGltZW91dDoKLSAgICAgICAgICAgIHNlbGYu
X3RpbWVvdXRfcXVldWUucHV0KCdkb25lJykKLSAgICAgICAgICAgIHJldHVybiB0aW1lLnRpbWUo
KSAtIDEwCi0gICAgICAgIHJldHVybiB0aW1lLnRpbWUoKQotCi0KLWNsYXNzIFRlc3RIYW5kbGVy
KGxvZ2dpbmcuSGFuZGxlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzdHJlYW0pOgotICAg
ICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fc3RyZWFt
ID0gYXN0cmVhbQotCi0gICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgc2VsZi5f
c3RyZWFtLndyaXRlKHNlbGYuZm9ybWF0KHJlY29yZCkpCi0KLQotY2xhc3MgV2FpdEZvclRocmVh
ZHNUb0ZpbmlzaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNsYXNzIE1vY2tUZXN0UnVu
bmVyKHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lcik6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAg
ICAgICAgICAgIHBhc3MKLQotICAgICAgICBkZWYgdXBkYXRlX3N1bW1hcnkoc2VsZiwgcmVzdWx0
X3N1bW1hcnkpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHJ1bl9vbmVfdGhyZWFkKHNl
bGYsIG1zZyk6Ci0gICAgICAgIHJ1bm5lciA9IHNlbGYuTW9ja1Rlc3RSdW5uZXIoKQotICAgICAg
ICBzdGFydGluZ19xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc3RvcHBpbmdfcXVldWUg
PSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGNoaWxkX3RocmVhZCA9IFRlc3RUaHJlYWQoc3RhcnRp
bmdfcXVldWUsIHN0b3BwaW5nX3F1ZXVlKQotICAgICAgICBjaGlsZF90aHJlYWQuc3RhcnQoKQot
ICAgICAgICBzdGFydGVkX21zZyA9IHN0YXJ0aW5nX3F1ZXVlLmdldCgpCi0gICAgICAgIHN0b3Bw
aW5nX3F1ZXVlLnB1dChtc2cpCi0gICAgICAgIHRocmVhZHMgPSBbY2hpbGRfdGhyZWFkXQotICAg
ICAgICByZXR1cm4gcnVubmVyLl93YWl0X2Zvcl90aHJlYWRzX3RvX2ZpbmlzaCh0aHJlYWRzLCBO
b25lKQotCi0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgIGludGVycnVwdGVkID0g
c2VsZi5ydW5fb25lX3RocmVhZCgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnRlcnJ1
cHRlZCkKLQotICAgIGRlZiB0ZXN0X2ludGVycnVwdChzZWxmKToKLSAgICAgICAgaW50ZXJydXB0
ZWQgPSBzZWxmLnJ1bl9vbmVfdGhyZWFkKCdLZXlib2FyZEludGVycnVwdCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShpbnRlcnJ1cHRlZCkKLQotICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6
Ci0gICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBpbnRlcnJ1cHRlZCA9IHNlbGYucnVuX29uZV90aHJl
YWQoJ1RpbWVvdXQnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGludGVycnVwdGVkKQotICAg
ICAgICBvYy5yZXN0b3JlX291dHB1dCgpCi0KLSAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYucnVuX29uZV90aHJl
YWQsICdFeGNlcHRpb24nKQotCi0KLWNsYXNzIFN0YW5kYWxvbmVGdW5jdGlvbnNUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9sb2dfd2VkZ2VkX3RocmVhZChzZWxmKToKLSAg
ICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0
dXJlX291dHB1dCgpCi0gICAgICAgIGxvZ2dlciA9IHJ1bl93ZWJraXRfdGVzdHMuX2xvZwotICAg
ICAgICBhc3RyZWFtID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKLSAgICAgICAgaGFuZGxl
ciA9IFRlc3RIYW5kbGVyKGFzdHJlYW0pCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRs
ZXIpCi0KLSAgICAgICAgc3RhcnRpbmdfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHN0
b3BwaW5nX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBjaGlsZF90aHJlYWQgPSBUZXN0
VGhyZWFkKHN0YXJ0aW5nX3F1ZXVlLCBzdG9wcGluZ19xdWV1ZSkKLSAgICAgICAgY2hpbGRfdGhy
ZWFkLnN0YXJ0KCkKLSAgICAgICAgbXNnID0gc3RhcnRpbmdfcXVldWUuZ2V0KCkKLQotICAgICAg
ICBydW5fd2Via2l0X3Rlc3RzLl9sb2dfd2VkZ2VkX3RocmVhZChjaGlsZF90aHJlYWQpCi0gICAg
ICAgIHN0b3BwaW5nX3F1ZXVlLnB1dCgnJykKLSAgICAgICAgY2hpbGRfdGhyZWFkLmpvaW4odGlt
ZW91dD0xLjApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3RyZWFtLmVtcHR5KCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2hpbGRfdGhyZWFkLmlzQWxpdmUoKSkKLSAgICAgICAg
b2MucmVzdG9yZV9vdXRwdXQoKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAg
dW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>