<?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>78572</bug_id>
          
          <creation_ts>2012-02-13 21:01:29 -0800</creation_ts>
          <short_desc>webkitpy: add a worker_args concept to start_worker()</short_desc>
          <delta_ts>2012-02-15 18:43:01 -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>78171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555922</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-13 21:01:29 -0800</bug_when>
    <thetext>webkitpy: add a worker_args concept to start_worker()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555923</commentid>
    <comment_count>1</comment_count>
      <attachid>126902</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-13 21:05:49 -0800</bug_when>
    <thetext>Created attachment 126902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555928</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-13 21:17:43 -0800</bug_when>
    <thetext>Tony, please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556764</commentid>
    <comment_count>3</comment_count>
      <attachid>126902</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-14 16:41:23 -0800</bug_when>
    <thetext>Comment on attachment 126902
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:108
&gt; +        If the worker is being run in the same thread/process as the manager, it may be
&gt; +        passed an optional inline_arg from the manager. Use of this object is discouraged
&gt; +        as workers should be able to run in a shared-nothing environment in separate processes.&quot;&quot;&quot;

Rather than passing a separate param, why not make |port| an optional param for WorkerParameters.  Or add a setter method to WorkerParameters that adds port?  It&apos;s weird to have this param hang around for some callers.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:47
&gt; +class WorkerArgs(object):

WorkerArguments or WorkerParameters

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:55
&gt; +    def __init__(self, worker_connection, worker_arg_obj):

worker_arg_obj -&gt; worker_arguments or worker_parameters.  _obj doesn&apos;t add anything.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:56
&gt; +        super(Worker, self).__init__(worker_connection, worker_arg_obj)

Nit: Why not be explicit about which init we&apos;re calling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556772</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-14 16:51:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 126902 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126902&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:108
&gt; &gt; +        If the worker is being run in the same thread/process as the manager, it may be
&gt; &gt; +        passed an optional inline_arg from the manager. Use of this object is discouraged
&gt; &gt; +        as workers should be able to run in a shared-nothing environment in separate processes.&quot;&quot;&quot;
&gt; 
&gt; Rather than passing a separate param, why not make |port| an optional param for WorkerParameters.  Or add a setter method to WorkerParameters that adds port?  It&apos;s weird to have this param hang around for some callers.

We need to distinguish between parameters that are always passed and available to the Worker, and parameters that are only passed and available in the inline (same-process) case. The inline-only args can&apos;t be a part of WorkerArgs, because they are passed to the worker during the constructor and pickled and sent to the child process, and Ports are not expected to be Picklable.

I agree this is weird, but I haven&apos;t yet come up with a better way of segregating inline-only from the other parameters (and I&apos;ve tried a few different approaches). 

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:47
&gt; &gt; +class WorkerArgs(object):
&gt; 
&gt; WorkerArguments or WorkerParameters
&gt; 

Will change.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:55
&gt; &gt; +    def __init__(self, worker_connection, worker_arg_obj):
&gt; 
&gt; worker_arg_obj -&gt; worker_arguments or worker_parameters.  _obj doesn&apos;t add anything.
&gt;

Will change. I was trying to capture the concept that it was a single object rather than a list or a dict might be useful, but the type doesn&apos;t actually matter in practice as long as it&apos;s pickleable and I agree the name is awkward.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:56
&gt; &gt; +        super(Worker, self).__init__(worker_connection, worker_arg_obj)
&gt; 
&gt; Nit: Why not be explicit about which init we&apos;re calling?

No real reason. I will change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556829</commentid>
    <comment_count>5</comment_count>
      <attachid>127091</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-14 17:53:31 -0800</bug_when>
    <thetext>Created attachment 127091
update w/ review feedback, use set_inline_arguments()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557336</commentid>
    <comment_count>6</comment_count>
      <attachid>127091</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-15 09:54:38 -0800</bug_when>
    <thetext>Comment on attachment 127091
update w/ review feedback, use set_inline_arguments()

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:766
&gt; +            if self._options.worker_model == &apos;inline&apos;:
&gt; +                # Note that this only works because the worker hasn&apos;t really started yet
&gt; +                # and won&apos;t start running until we call run_message_loop(), below.

I would add a FIXME because we want to remove this hack in the long run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557339</commentid>
    <comment_count>7</comment_count>
      <attachid>127091</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-15 09:56:51 -0800</bug_when>
    <thetext>Comment on attachment 127091
update w/ review feedback, use set_inline_arguments()

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

&gt; Tools/ChangeLog:10
&gt; +        wrapper class and a separate set_inline_arguments() call that can

I would probably just have named it set_port because that&apos;s all we need it for (it&apos;s less confusing about what&apos;s being passed around). It&apos;s fine for the test to not actually receive a port but some mock object since it&apos;s just a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557807</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-15 18:41:25 -0800</bug_when>
    <thetext>Committed r107867: &lt;http://trac.webkit.org/changeset/107867&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557809</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-15 18:43:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 127091 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127091&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:766
&gt; &gt; +            if self._options.worker_model == &apos;inline&apos;:
&gt; &gt; +                # Note that this only works because the worker hasn&apos;t really started yet
&gt; &gt; +                # and won&apos;t start running until we call run_message_loop(), below.
&gt; 
&gt; I would add a FIXME because we want to remove this hack in the long run.

Done.

(In reply to comment #7)
&gt; &gt; Tools/ChangeLog:10
&gt; &gt; +        wrapper class and a separate set_inline_arguments() call that can
&gt; 
&gt; I would probably just have named it set_port because that&apos;s all we need it for (it&apos;s less confusing about what&apos;s being passed around). It&apos;s fine for the test to not actually receive a port but some mock object since it&apos;s just a test.

Ultimately all of these changes are so that we can reuse the broker logic for test-webkitpy (and possibly other python usages), and it&apos;s not yet 100% clear to me that we won&apos;t generically need this, so using a generic name seemed more appropriate.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126902</attachid>
            <date>2012-02-13 21:05:49 -0800</date>
            <delta_ts>2012-02-14 17:53:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78572-20120213210547.patch</filename>
            <type>text/plain</type>
            <size>15550</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGRhY2JmODE1NDE2OTdhZmEyNjNkNmNmMmQ4ZWIyYjE2
ZDg3YmMxOC4uZGEyZWExNjYwNjA1MmNjZWIzNGEyNjUxNGU2ODQ2YzVlY2Y4ZWQ5YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1
IEBACiAyMDEyLTAyLTEzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBhZGQgYSB3b3JrZXJfYXJncyBjb25jZXB0IHRvIHN0YXJ0X3dvcmtl
cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGNvbXBsZXRlcyB0aGUgZ2VuZXJpY2l6aW5nIG9mIG1hbmFnZXJfd29ya2VyX2Jyb2tl
cgorICAgICAgICBieSB0YWtpbmcgdGhlIHRocmVlIGFyZ3MgYWx3YXlzIHBhc3NlZCB0byB0aGUg
d29ya2VyIGFuZCB0aGUKKyAgICAgICAgZm91cnRoIGFyZyBzb21ldGltZXMgcGFzc2VkICh0aGUg
cG9ydCkgYW5kIHJlcGxhY2luZyB0aGVtIHdpdGgKKyAgICAgICAgdHdvIGdlbmVyaWMvb3BhcXVl
IG9iamVjdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyLnB5OgorICAgICAgICAoTWFuYWdlci5fcnVuX3Rlc3RzKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dv
cmtlcl9icm9rZXIucHk6CisgICAgICAgIChBYnN0cmFjdFdvcmtlci5fX2luaXRfXyk6CisgICAg
ICAgIChBYnN0cmFjdFdvcmtlci5ydW4pOgorICAgICAgICAoX01hbmFnZXJDb25uZWN0aW9uLnN0
YXJ0X3dvcmtlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5zdGFydF93b3JrZXIpOgorICAg
ICAgICAoX0lubGluZU1hbmFnZXIucnVuX21lc3NhZ2VfbG9vcCk6CisgICAgICAgIChfTXVsdGlQ
cm9jZXNzTWFuYWdlci5zdGFydF93b3JrZXIpOgorICAgICAgICAoX1dvcmtlckNvbm5lY3Rpb24u
X19pbml0X18pOgorICAgICAgICAoX0lubGluZVdvcmtlckNvbm5lY3Rpb24uX19pbml0X18pOgor
ICAgICAgICAoX0lubGluZVdvcmtlckNvbm5lY3Rpb24ucnVuKToKKyAgICAgICAgKF9Qcm9jZXNz
LnJ1bik6CisgICAgICAgIChfTXVsdGlQcm9jZXNzV29ya2VyQ29ubmVjdGlvbi5fX2luaXRfXyk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoX1Rlc3RXb3JrZXIuX19p
bml0X18pOgorICAgICAgICAoX1Rlc3RXb3JrZXIucnVuKToKKyAgICAgICAgKF9UZXN0c01peGlu
LnRlc3RfY2FuY2VsKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfZG9uZSk6CisgICAgICAg
IChfVGVzdHNNaXhpbi50ZXN0X3Vua25vd25fbWVzc2FnZSk6CisgICAgICAgIChJbnRlcmZhY2VU
ZXN0LnRlc3RfbWFuYWdlcmNvbm5lY3Rpb25faXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJm
YWNlVGVzdC50ZXN0X3dvcmtlcmNvbm5lY3Rpb25faXNfYWJzdHJhY3QpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weToKKyAgICAg
ICAgKFdvcmtlckFyZ3MpOgorICAgICAgICAoV29ya2VyQXJncy5fX2luaXRfXyk6CisgICAgICAg
IChXb3JrZXIuX19pbml0X18pOgorICAgICAgICAoV29ya2VyLnJ1bik6CisKKzIwMTItMDItMTMg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6
IGNsZWFuIHVwIG9wdGlvbnMsIHBvcnQgaGFuZGxpbmcgaW4gbWFuYWdlcl93b3JrZXJfYnJva2Vy
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU2OAog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlci5weQppbmRleCAwMzg2N2I2MTYwYTQxYmQwYTdhY2YzYzExMzgyODY2
ZTQzZDUyMTQ1Li43MTE5MmExYmQ0MTM1MTRkMjllMzZhOTNjMzJmY2I5ZTZiYmNjZDljIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL21hbmFnZXIucHkKQEAgLTc1OSw3ICs3NTksOCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVj
dCk6CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4u
LicgJSBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQogICAgICAgICBm
b3Igd29ya2VyX251bWJlciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgd29y
a2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9u
dW1iZXIsIHNlbGYuX3BvcnQsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgc2VsZi5fb3B0aW9u
cykKKyAgICAgICAgICAgIHdvcmtlcl9hcmcgPSB3b3JrZXIuV29ya2VyQXJncyh3b3JrZXJfbnVt
YmVyLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksIHNlbGYuX29wdGlvbnMpCisgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29y
a2VyX2FyZywgaW5saW5lX2FyZz1zZWxmLl9wb3J0KQogICAgICAgICAgICAgd29ya2VyX3N0YXRl
ID0gX1dvcmtlclN0YXRlKHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQogICAgICAg
ICAgICAgc2VsZi5fd29ya2VyX3N0YXRlc1t3b3JrZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtl
cl9zdGF0ZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkK
aW5kZXggZDUyZDM4YzljNDdkNzlkMDljZDljNGEwYzYwOGVjYTYzYmUyODdhYy4uOTM1OGJmM2Vh
OTllNzMxOGUzZjNmODQ2ZDQwNTkxYjg0NDI2YjQ1YyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2Vy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQpAQCAtODYsNyArODYsNyBAQCBkZWYgZ2V0KHdvcmtl
cl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogCiAKIGNsYXNzIEFic3RyYWN0V29ya2Vy
KG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHdv
cmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9u
cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfYXJn
PU5vbmUpOgogICAgICAgICAiIiJUaGUgY29uc3RydWN0b3Igc2hvdWxkIGJlIHVzZWQgdG8gZG8g
YW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgogICAgICAgICBuZWNlc3NhcnksIGJ1dCBzaG91bGQg
bm90IGRvIGFueXRoaW5nIHRoYXQgY3JlYXRlcyBkYXRhIHN0cnVjdHVyZXMKICAgICAgICAgdGhh
dCBjYW5ub3QgYmUgUGlja2xlZCBvciBzZW50IGFjcm9zcyBwcm9jZXNzZXMgKGxpa2Ugb3Blbmlu
ZwpAQCAtOTYsMTggKzk2LDE2IEBAIGNsYXNzIEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2Vy
LkJyb2tlckNsaWVudCk6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICB3b3JrZXJfY29ubmVj
dGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2VyQ29ubmVjdGlvbiBvYmplY3QgY3JlYXRpbmcKICAg
ICAgICAgICAgICAgICB0aGUgd29ya2VyIGFuZCB0aGF0IGNhbiBiZSB1c2VkIGZvciBtZXNzYWdp
bmcuCi0gICAgICAgICAgICB3b3JrZXJfbnVtYmVyIC0gaWRlbnRpZmllciBmb3IgdGhpcyBwYXJ0
aWN1bGFyIHdvcmtlcgotICAgICAgICAgICAgb3B0aW9ucyAtIGNvbW1hbmQtbGluZSBhcmd1bWVu
dCBvYmplY3QgZnJvbSBvcHRwYXJzZSIiIgorICAgICAgICAgICAgd29ya2VyX2FyZyAtIChvcHRp
b25hbCwgUGlja2xhYmxlKSBvYmplY3QgcGFzc2VkIHRvIHRoZSB3b3JrZXIgZnJvbSB0aGUgbWFu
YWdlciIiIgogICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQuX19pbml0X18oc2Vs
ZikKICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgot
ICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl93b3JrZXJfbnVt
YmVyID0gd29ya2VyX251bWJlcgotICAgICAgICBzZWxmLl9uYW1lID0gJ3dvcmtlci8lZCcgJSB3
b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19k
aXJlY3RvcnkKIAotICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAgZGVmIHJ1bihzZWxmLCBp
bmxpbmVfYXJnPU5vbmUpOgogICAgICAgICAiIiJDYWxsYmFjayBmb3IgdGhlIHdvcmtlciB0byBz
dGFydCBleGVjdXRpbmcuIFR5cGljYWxseSBkb2VzIGFueQotICAgICAgICByZW1haW5pbmcgaW5p
dGlhbGl6YXRpb24gYW5kIHRoZW4gY2FsbHMgYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2Vf
bG9vcCgpLiIiIgorICAgICAgICByZW1haW5pbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gY2Fs
bHMgYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21lc3NhZ2VfbG9vcCgpLgorICAgICAgICBJZiB0aGUg
d29ya2VyIGlzIGJlaW5nIHJ1biBpbiB0aGUgc2FtZSB0aHJlYWQvcHJvY2VzcyBhcyB0aGUgbWFu
YWdlciwgaXQgbWF5IGJlCisgICAgICAgIHBhc3NlZCBhbiBvcHRpb25hbCBpbmxpbmVfYXJnIGZy
b20gdGhlIG1hbmFnZXIuIFVzZSBvZiB0aGlzIG9iamVjdCBpcyBkaXNjb3VyYWdlZAorICAgICAg
ICBhcyB3b3JrZXJzIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBpbiBhIHNoYXJlZC1ub3RoaW5nIGVu
dmlyb25tZW50IGluIHNlcGFyYXRlIHByb2Nlc3Nlcy4iIiIKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTEzMCw3ICsxMjgsMTUg
QEAgY2xhc3MgX01hbmFnZXJDb25uZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rp
b24pOgogICAgICAgICAgICAgTUFOQUdFUl9UT1BJQywgQU5ZX1dPUktFUl9UT1BJQykKICAgICAg
ICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCiAKLSAgICBkZWYgc3RhcnRfd29y
a2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBvcnQsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25z
KToKKyAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9hcmc9Tm9uZSwgaW5saW5lX2Fy
Zz1Ob25lKToKKyAgICAgICAgIiIiU3RhcnRzIGEgbmV3IHdvcmtlci4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgICAgd29ya2VyX2FyZyAtIGFuIG9wdGlvbmFsIFBpY2tsYWJsZSBvYmplY3Qg
dGhhdCBpcyBwYXNzZWQgdG8gdGhlIHdvcmtlciBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgaW5s
aW5lX2FyZyAtIGFuIG9wdGlvbmFsIG9iamVjdCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgd29ya2Vy
J3MgcnVuKCkgbWV0aG9kIGlmCisgICAgICAgICAgICAgIHRoZSB3b3JrZXIgaXMgaW4gdGhlIHNh
bWUgcHJvY2VzcyBhcyB0aGUgbWFuYWdlci4KKyAgICAgICAgIiIiCisKICAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcgogCiAKQEAgLTEzOSwxNiArMTQ1LDE2IEBAIGNsYXNzIF9Jbmxp
bmVNYW5hZ2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6CiAgICAgICAgIF9NYW5hZ2VyQ29ubmVjdGlv
bi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKQogICAgICAgICBz
ZWxmLl9pbmxpbmVfd29ya2VyID0gTm9uZQogCi0gICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3
b3JrZXJfbnVtYmVyLCBwb3J0LCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucyk6CisgICAgZGVm
IHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfYXJnPU5vbmUsIGlubGluZV9hcmc9Tm9uZSk6CiAg
ICAgICAgIHNlbGYuX2lubGluZV93b3JrZXIgPSBfSW5saW5lV29ya2VyQ29ubmVjdGlvbihzZWxm
Ll9icm9rZXIsCi0gICAgICAgICAgICBzZWxmLl9jbGllbnQsIHNlbGYuX3dvcmtlcl9jbGFzcywg
d29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpCi0gICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0CisgICAgICAgICAgICBzZWxmLl9jbGllbnQsIHNlbGYuX3dvcmtlcl9jbGFz
cywgd29ya2VyX2FyZykKKyAgICAgICAgc2VsZi5faW5saW5lX2FyZyA9IGlubGluZV9hcmcKICAg
ICAgICAgcmV0dXJuIHNlbGYuX2lubGluZV93b3JrZXIKIAogICAgIGRlZiBydW5fbWVzc2FnZV9s
b29wKHNlbGYsIGRlbGF5X3NlY3M9Tm9uZSk6CiAgICAgICAgICMgTm90ZSB0aGF0IGRlbGF5X3Nl
Y3MgaXMgaWdub3JlZCBpbiB0aGlzIGNhc2Ugc2luY2Ugd2UgY2FuJ3QgZWFzaWx5CiAgICAgICAg
ICMgaW1wbGVtZW50IGl0LgotICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyLnJ1bihzZWxmLl9w
b3J0KQorICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyLnJ1bihzZWxmLl9pbmxpbmVfYXJnKQog
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX2FsbF9wZW5kaW5nKE1BTkFHRVJfVE9QSUMsIHNlbGYu
X2NsaWVudCkKIAogCkBAIC0xNTYsMTcgKzE2MiwxNyBAQCBjbGFzcyBfTXVsdGlQcm9jZXNzTWFu
YWdlcihfTWFuYWdlckNvbm5lY3Rpb24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIs
IGNsaWVudCwgd29ya2VyX2NsYXNzKToKICAgICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5p
dF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCiAKLSAgICBkZWYgc3RhcnRf
d29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBvcnQsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRp
b25zKToKLSAgICAgICAgIyBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZSBwb3J0IHNpbmNlIHdlIGNh
bid0IHBhc3MgaXQgdG8gdGhlIGNoaWxkIChpdCBpc24ndCBQaWNrbGFibGUpLgorICAgIGRlZiBz
dGFydF93b3JrZXIoc2VsZiwgd29ya2VyX2FyZz1Ob25lLCBpbmxpbmVfYXJnPU5vbmUpOgorICAg
ICAgICAjIE5vdGUgdGhhdCB3ZSBpZ25vcmUgdGhlIGlubGluZV9hcmcgc2luY2UgdGhlIHdvcmtl
cnMgYXJlbid0IGlubGluZS4KICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBfTXVsdGlQcm9j
ZXNzV29ya2VyQ29ubmVjdGlvbihzZWxmLl9icm9rZXIsCi0gICAgICAgICAgICBzZWxmLl93b3Jr
ZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAg
ICAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzLCB3b3JrZXJfYXJnKQogICAgICAgICB3b3JrZXJf
Y29ubmVjdGlvbi5zdGFydCgpCiAgICAgICAgIHJldHVybiB3b3JrZXJfY29ubmVjdGlvbgogCiAK
IGNsYXNzIF9Xb3JrZXJDb25uZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24p
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251
bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9jbGllbnQg
PSB3b3JrZXJfY2xhc3Moc2VsZiwgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9w
dGlvbnMpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3Jr
ZXJfYXJnPU5vbmUpOgorICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJfY2xhc3Moc2VsZiwg
d29ya2VyX2FyZykKICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5fY2xpZW50Lm5hbWUoKQogICAg
ICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tl
ciwgc2VsZi5fY2xpZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOWV9XT1JLRVJfVE9QSUMsIE1BTkFHRVJfVE9QSUMpCkBAIC0xODUsOCArMTkx
LDggQEAgY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVj
dGlvbik6CiAKIAogY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rp
b24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIG1hbmFnZXJfY2xpZW50LCB3b3Jr
ZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKLSAg
ICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xh
c3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBicm9rZXIsIG1hbmFnZXJfY2xpZW50LCB3b3JrZXJfY2xhc3MsIHdvcmtl
cl9hcmcpOgorICAgICAgICBfV29ya2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIs
IHdvcmtlcl9jbGFzcywgd29ya2VyX2FyZykKICAgICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQog
ICAgICAgICBzZWxmLl9tYW5hZ2VyX2NsaWVudCA9IG1hbmFnZXJfY2xpZW50CiAKQEAgLTE5OSw5
ICsyMDUsOSBAQCBjbGFzcyBfSW5saW5lV29ya2VyQ29ubmVjdGlvbihfV29ya2VyQ29ubmVjdGlv
bik6CiAgICAgZGVmIGpvaW4oc2VsZiwgdGltZW91dCk6CiAgICAgICAgIGFzc2VydCBub3Qgc2Vs
Zi5fYWxpdmUKIAotICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAgZGVmIHJ1bihzZWxmLCBp
bmxpbmVfYXJnPU5vbmUpOgogICAgICAgICBzZWxmLl9hbGl2ZSA9IFRydWUKLSAgICAgICAgc2Vs
Zi5fY2xpZW50LnJ1bihwb3J0KQorICAgICAgICBzZWxmLl9jbGllbnQucnVuKGlubGluZV9hcmcp
CiAgICAgICAgIHNlbGYuX2FsaXZlID0gRmFsc2UKIAogICAgIGRlZiB5aWVsZF90b19icm9rZXIo
c2VsZik6CkBAIC0yMjEsMTEgKzIyNywxMSBAQCBjbGFzcyBfUHJvY2VzcyhtdWx0aXByb2Nlc3Np
bmcuUHJvY2Vzcyk6CiAgICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAogCiAgICAgZGVmIHJ1
bihzZWxmKToKLSAgICAgICAgc2VsZi5fY2xpZW50LnJ1bihwb3J0PU5vbmUpCisgICAgICAgIHNl
bGYuX2NsaWVudC5ydW4oKQogCiBjbGFzcyBfTXVsdGlQcm9jZXNzV29ya2VyQ29ubmVjdGlvbihf
V29ya2VyQ29ubmVjdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2Vy
X2NsYXNzLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucyk6Ci0gICAg
ICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNz
LCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucykKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9hcmcpOgorICAgICAgICBf
V29ya2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29y
a2VyX2FyZykKICAgICAgICAgc2VsZi5fcHJvYyA9IF9Qcm9jZXNzKHNlbGYsIHNlbGYuX2NsaWVu
dCkKIAogICAgIGRlZiBjYW5jZWwoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKaW5kZXggYzkzODc1ODE4MjY2YTUw
NTU5OWRmZjU5M2QxODQwNDlkNTVmMzk5ZC4uNWJlNjM1YzBjMzI2M2IyMDU4YTIxNzA1NTE1NTJj
ODIxOGQ0YmM4OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29y
a2VyX2Jyb2tlcl91bml0dGVzdC5weQpAQCAtNTQsMTEgKzU0LDkgQEAgZGVmIG1ha2VfYnJva2Vy
KG1hbmFnZXIsIHdvcmtlcl9tb2RlbCwgc3RhcnRfcXVldWU9Tm9uZSwgc3RvcF9xdWV1ZT1Ob25l
KToKIAogCiBjbGFzcyBfVGVzdFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RX
b3JrZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXJfY29ubmVjdGlvbiwgd29ya2Vy
X251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBicm9rZXJfY29ubmVjdGlvbiwgd29ya2VyX29iaj1Ob25lKToKICAgICAgICAgc2VsZi5f
YnJva2VyX2Nvbm5lY3Rpb24gPSBicm9rZXJfY29ubmVjdGlvbgotICAgICAgICBzZWxmLl9vcHRp
b25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJl
cgotICAgICAgICBzZWxmLl9uYW1lID0gJ1Rlc3RXb3JrZXIvJWQnICUgd29ya2VyX251bWJlcgor
ICAgICAgICBzZWxmLl9uYW1lID0gJ1Rlc3RXb3JrZXInCiAgICAgICAgIHNlbGYuX3N0b3BwZWQg
PSBGYWxzZQogICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3N0
YXJ0aW5nX3F1ZXVlID0gc3RhcnRpbmdfcXVldWUKQEAgLTgxLDcgKzc5LDcgQEAgY2xhc3MgX1Rl
c3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICBkZWYg
Y2FuY2VsKHNlbGYpOgogICAgICAgICBzZWxmLl9jYW5jZWxlZCA9IFRydWUKIAotICAgIGRlZiBy
dW4oc2VsZiwgcG9ydCk6CisgICAgZGVmIHJ1bihzZWxmLCBpbmxpbmVfb2JqPU5vbmUpOgogICAg
ICAgICBpZiBzZWxmLl9zdGFydGluZ19xdWV1ZToKICAgICAgICAgICAgIHNlbGYuX3N0YXJ0aW5n
X3F1ZXVlLnB1dCgnJykKIApAQCAtMTQ0LDcgKzE0Miw3IEBAIGNsYXNzIF9UZXN0c01peGluKG9i
amVjdCk6CiAKICAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6CiAgICAgICAgIHNlbGYubWFrZV9i
cm9rZXIoKQotICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDAsIE5v
bmUsIE5vbmUsIE5vbmUpCisgICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3Jr
ZXIoKQogICAgICAgICB3b3JrZXIuY2FuY2VsKCkKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3Rf
bWVzc2FnZSgndGVzdCcsIDEsICdoZWxsbywgd29ybGQnKQogICAgICAgICB3b3JrZXIuam9pbigw
LjUpCkBAIC0xNTIsNyArMTUwLDcgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKIAogICAg
IGRlZiB0ZXN0X2RvbmUoc2VsZik6CiAgICAgICAgIHNlbGYubWFrZV9icm9rZXIoKQotICAgICAg
ICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDAsIE5vbmUsIE5vbmUsIE5vbmUp
CisgICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoKQogICAgICAgICBz
ZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3b3JsZCcpCiAgICAg
ICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQogICAgICAgICBzZWxmLl9icm9r
ZXIucnVuX21lc3NhZ2VfbG9vcCgpCkBAIC0xNjQsNyArMTYyLDcgQEAgY2xhc3MgX1Rlc3RzTWl4
aW4ob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fbWVzc2FnZShzZWxmKToKICAgICAg
ICAgc2VsZi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFy
dF93b3JrZXIoMCwgTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJv
a2VyLnN0YXJ0X3dvcmtlcigpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Vu
a25vd24nKQogICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCiAgICAgICAg
IHdvcmtlci5qb2luKDAuNSkKQEAgLTE3Myw3ICsxNzEsNyBAQCBjbGFzcyBfVGVzdHNNaXhpbihv
YmplY3QpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5pc19hbGl2ZSgpKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leGNlcHRpb25bMF0sIFZhbHVlRXJyb3IpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2V4Y2VwdGlvblsxXSwKLSAgICAgICAgICAg
ICJUZXN0V29ya2VyLzA6IHJlY2VpdmVkIG1lc3NhZ2UgJ3Vua25vd24nIGl0IGNvdWxkbid0IGhh
bmRsZSIpCisgICAgICAgICAgICAiVGVzdFdvcmtlcjogcmVjZWl2ZWQgbWVzc2FnZSAndW5rbm93
bicgaXQgY291bGRuJ3QgaGFuZGxlIikKIAogCiAjIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1MjAuCkBAIC0xOTUsMTMgKzE5MywxMyBAQCBjbGFzcyBJ
bnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBzaWduYXR1cmUgd2Ug
ZXhwZWN0LgogICAgICAgICBicm9rZXIgPSBtYWtlX2Jyb2tlcihzZWxmLCAnaW5saW5lJykKICAg
ICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJfYnJva2VyLl9NYW5hZ2VyQ29ubmVjdGlvbihicm9r
ZXIuX2Jyb2tlciwgc2VsZiwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1w
bGVtZW50ZWRFcnJvciwgb2JqLnN0YXJ0X3dvcmtlciwgMCwgTm9uZSwgTm9uZSwgTm9uZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLnN0YXJ0X3dv
cmtlcikKIAogICAgIGRlZiB0ZXN0X3dvcmtlcmNvbm5lY3Rpb25faXNfYWJzdHJhY3Qoc2VsZik6
CiAgICAgICAgICMgVGVzdCB0aGF0IGFsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2RzIGFyZSBhYnN0
cmFjdCBhbmQgaGF2ZSB0aGUKICAgICAgICAgIyBzaWduYXR1cmUgd2UgZXhwZWN0LgogICAgICAg
ICBicm9rZXIgPSBtYWtlX2Jyb2tlcihzZWxmLCAnaW5saW5lJykKLSAgICAgICAgb2JqID0gbWFu
YWdlcl93b3JrZXJfYnJva2VyLl9Xb3JrZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBfVGVz
dFdvcmtlciwgMCwgTm9uZSwgTm9uZSkKKyAgICAgICAgb2JqID0gbWFuYWdlcl93b3JrZXJfYnJv
a2VyLl9Xb3JrZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBfVGVzdFdvcmtlciwgTm9uZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmNhbmNl
bCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgb2JqLmlz
X2FsaXZlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBv
Ymouam9pbiwgTm9uZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQppbmRleCA0ZmU2NDIwYTkwODE1NTVhMmFh
NDIxMWE2MWJhZWNiYWVjZjVmYWFmLi5iN2E0MzZkMGVmY2Q2ZWI1MjYwZDc0NmUzNWZlOTNlMWI1
MDVkNzRiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy93b3JrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CkBAIC00NCw5ICs0NCwyMCBAQCBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKIAogCitjbGFzcyBXb3JrZXJBcmdzKG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25z
KToKKyAgICAgICAgc2VsZi53b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgorICAgICAgICBz
ZWxmLnJlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKKyAgICAgICAgc2VsZi5v
cHRpb25zID0gb3B0aW9ucworCisKIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
QWJzdHJhY3RXb3JrZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlv
biwgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBt
YW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIuX19pbml0X18oc2VsZiwgd29ya2Vy
X2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX2FyZ19vYmop
OgorICAgICAgICBzdXBlcihXb3JrZXIsIHNlbGYpLl9faW5pdF9fKHdvcmtlcl9jb25uZWN0aW9u
LCB3b3JrZXJfYXJnX29iaikKKyAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9h
cmdfb2JqLndvcmtlcl9udW1iZXIKKyAgICAgICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUg
c2VsZi5fd29ya2VyX251bWJlcgorICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHdv
cmtlcl9hcmdfb2JqLnJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSB3
b3JrZXJfYXJnX29iai5vcHRpb25zCiAgICAgICAgIHNlbGYuX2RvbmUgPSBGYWxzZQogICAgICAg
ICBzZWxmLl9jYW5jZWxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCkBAIC04
Myw5ICs5NCw5IEBAIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RX
b3JrZXIpOgogICAgIGRlZiBuYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQog
Ci0gICAgZGVmIHJ1bihzZWxmLCBwb3J0KToKLSAgICAgICAgaWYgcG9ydDoKLSAgICAgICAgICAg
IHNlbGYuX3BvcnQgPSBwb3J0CisgICAgZGVmIHJ1bihzZWxmLCBpbmxpbmVfYXJnX29iaj1Ob25l
KToKKyAgICAgICAgaWYgaW5saW5lX2FyZ19vYmo6CisgICAgICAgICAgICBzZWxmLl9wb3J0ID0g
aW5saW5lX2FyZ19vYmoKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgd2UgYXJlIHJ1bm5p
bmcgaW4gYSBjaGlsZCBwcm9jZXNzIGFuZCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBIb3N0LgogICAg
ICAgICAgICAgaWYgJ3Rlc3QnIGluIHNlbGYuX29wdGlvbnMucGxhdGZvcm06Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127091</attachid>
            <date>2012-02-14 17:53:31 -0800</date>
            <delta_ts>2012-02-15 09:56:51 -0800</delta_ts>
            <desc>update w/ review feedback, use set_inline_arguments()</desc>
            <filename>bug-78572-20120214175328.patch</filename>
            <type>text/plain</type>
            <size>18952</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzU2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDM4NTU3NjI3OGI1OTU2ZTczNWFkYmY5M2QxNTM4ZjAw
NmZhY2ZmOC4uMmI2ZDkzMTg5MzJjYTcwN2Y0ZmU1NjJiNmI5NDU3YTVhNTU0ZTYxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy
IEBACisyMDEyLTAyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBhZGQgYSB3b3JrZXJfYXJncyBjb25jZXB0IHRvIHN0YXJ0X3dvcmtl
cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIHJlcGxhY2VzIHRoZSB0aHJlZSBOUldULXNwZWNpZmljIGFyZ3VtZW50cyBwYXNzZWQK
KyAgICAgICAgdGhyb3VnaCB0aGUgYnJva2VyIHRvIHRoZSB3b3JrZXIgd2l0aCBhIGdlbmVyaWMg
V29ya2VyQXJndW1lbnRzCisgICAgICAgIHdyYXBwZXIgY2xhc3MgYW5kIGEgc2VwYXJhdGUgc2V0
X2lubGluZV9hcmd1bWVudHMoKSBjYWxsIHRoYXQgY2FuCisgICAgICAgIGJlIHVzZWQgdG8gcGFz
cyBhZGRpdGlvbmFsIGRhdGEgdG8gdGhlIHdvcmtlciB3aGVuIGl0IGlzIHJ1bm5pbmcKKyAgICAg
ICAgaW4gdGhlIHNhbWUgcHJvY2VzcyBhcyB0aGUgbWFuYWdlciAodGhpcyBpcyBuZWVkZWQgZm9y
IHRlc3RpbmcpLgorICAgICAgICBXaXRoIHRoZSBhZGRpdGlvbiBvZiBzZXRfaW5saW5lX2FyZ3Vt
ZW50cygpIHdlIGFsc28gbm8gbG9uZ2VyCisgICAgICAgIG5lZWQgdG8gcGFzcyBhbiBvcHRpb25h
bCBhcmd1bWVudCB0byB0aGUgd29ya2VyLnJ1bigpIGNhbGwuCisKKyAgICAgICAgTm90ZSB0aGF0
IHRoaXMgbWV0aG9kIGlzICpvbmx5KiBpbXBsZW1lbnRlZCBvbiBpbmxpbmUgd29ya2VycywKKyAg
ICAgICAgc28gY2FsbGluZyB0aGlzIG9uIGEgcmVndWxhciAoY2hpbGQgcHJvY2Vzcykgd29ya2Vy
IHdpbGwgcmVzdWx0CisgICAgICAgIGluIGEgcnVudGltZSBlcnJvci4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAg
ICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weToKKyAgICAgICAg
KEFic3RyYWN0V29ya2VyLl9faW5pdF9fKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLnJ1bik6
CisgICAgICAgIChfTWFuYWdlckNvbm5lY3Rpb24uc3RhcnRfd29ya2VyKToKKyAgICAgICAgKF9J
bmxpbmVNYW5hZ2VyLnN0YXJ0X3dvcmtlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5zZXRf
aW5saW5lX2FyZ3VtZW50cyk6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5ydW5fbWVzc2FnZV9s
b29wKToKKyAgICAgICAgKF9NdWx0aVByb2Nlc3NNYW5hZ2VyLnN0YXJ0X3dvcmtlcik6IFJld29y
a2VkIHNpZ25hdHVyZS4KKyAgICAgICAgKF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKToKKyAg
ICAgICAgKF9JbmxpbmVXb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9Jbmxp
bmVXb3JrZXJDb25uZWN0aW9uLnNldF9pbmxpbmVfYXJndW1lbnRzKTogTmV3IG1ldGhvZC4KKyAg
ICAgICAgKF9JbmxpbmVXb3JrZXJDb25uZWN0aW9uKToKKyAgICAgICAgKF9JbmxpbmVXb3JrZXJD
b25uZWN0aW9uLnJ1bik6CisgICAgICAgIChfUHJvY2Vzcy5ydW4pOgorICAgICAgICAoX011bHRp
UHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0
dGVzdC5weToKKyAgICAgICAgKF9UZXN0V29ya2VyLl9faW5pdF9fKToKKyAgICAgICAgKF9UZXN0
V29ya2VyLnNldF9pbmxpbmVfYXJndW1lbnRzKToKKyAgICAgICAgKF9UZXN0V29ya2VyLmhhbmRs
ZV90ZXN0KToKKyAgICAgICAgKF9UZXN0V29ya2VyLnJ1bik6CisgICAgICAgIChfVGVzdHNNaXhp
bi50ZXN0X2NhbmNlbCk6CisgICAgICAgIChfVGVzdHNNaXhpbi50ZXN0X2RvbmUpOgorICAgICAg
ICAoX1Rlc3RzTWl4aW4udGVzdF91bmtub3duX21lc3NhZ2UpOgorICAgICAgICAoSW5saW5lQnJv
a2VyVGVzdHMpOiBOZXcgY2xhc3MgZm9yIG1vcmUgdGVzdGluZy4KKyAgICAgICAgKElubGluZUJy
b2tlclRlc3RzLnNldFVwKToKKyAgICAgICAgKElubGluZUJyb2tlclRlc3RzLnRlc3RfaW5saW5l
X2FyZ3VtZW50cyk6IE5ldyB0ZXN0LgorICAgICAgICAoSW50ZXJmYWNlVGVzdC50ZXN0X21hbmFn
ZXJjb25uZWN0aW9uX2lzX2Fic3RyYWN0KToKKyAgICAgICAgKEludGVyZmFjZVRlc3QudGVzdF93
b3JrZXJjb25uZWN0aW9uX2lzX2Fic3RyYWN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHk6CisgICAgICAgIChXb3JrZXJBcmd1
bWVudHMpOgorICAgICAgICAoV29ya2VyQXJndW1lbnRzLl9faW5pdF9fKToKKyAgICAgICAgKFdv
cmtlci5fX2luaXRfXyk6CisgICAgICAgIChXb3JrZXIuc2V0X2lubGluZV9hcmd1bWVudHMpOgor
ICAgICAgICAoV29ya2VyKToKKyAgICAgICAgKFdvcmtlci5ydW4pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlcl91bml0dGVzdC5weToK
KyAgICAgICAgKFdvcmtlclRlc3QudGVzdF9kZWZhdWx0X3BsYXRmb3JtX2luX3dvcmtlcik6CisK
IDIwMTItMDItMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBJ
bXBsZW1lbnQgYW4gYWRiLWJhc2VkIGRyaXZlciBmb3IgdGhlIENocm9taXVtQW5kcm9pZFBvcnQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDAzODY3YjYxNjBhNDFiZDBhN2FjZjNjMTEzODI4NjZl
NDNkNTIxNDUuLjI4ZDkyNzFlOWY0ODFiMWRjZjlmNmQyNWM2MGQ0ZDEzZmQzZjZkZmEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvbWFuYWdlci5weQpAQCAtNzU5LDcgKzc1OSwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVj
dCk6CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4u
LicgJSBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQogICAgICAgICBm
b3Igd29ya2VyX251bWJlciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgd29y
a2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9u
dW1iZXIsIHNlbGYuX3BvcnQsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgc2VsZi5fb3B0aW9u
cykKKyAgICAgICAgICAgIHdvcmtlcl9hcmd1bWVudHMgPSB3b3JrZXIuV29ya2VyQXJndW1lbnRz
KHdvcmtlcl9udW1iZXIsIHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSwgc2VsZi5fb3B0aW9ucykK
KyAgICAgICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0gbWFuYWdlcl9jb25uZWN0aW9uLnN0YXJ0
X3dvcmtlcih3b3JrZXJfYXJndW1lbnRzKQorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy53
b3JrZXJfbW9kZWwgPT0gJ2lubGluZSc6CisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhp
cyBvbmx5IHdvcmtzIGJlY2F1c2UgdGhlIHdvcmtlciBoYXNuJ3QgcmVhbGx5IHN0YXJ0ZWQgeWV0
CisgICAgICAgICAgICAgICAgIyBhbmQgd29uJ3Qgc3RhcnQgcnVubmluZyB1bnRpbCB3ZSBjYWxs
IHJ1bl9tZXNzYWdlX2xvb3AoKSwgYmVsb3cuCisgICAgICAgICAgICAgICAgd29ya2VyX2Nvbm5l
Y3Rpb24uc2V0X2lubGluZV9hcmd1bWVudHMoc2VsZi5fcG9ydCkKKwogICAgICAgICAgICAgd29y
a2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdvcmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9u
KQogICAgICAgICAgICAgc2VsZi5fd29ya2VyX3N0YXRlc1t3b3JrZXJfY29ubmVjdGlvbi5uYW1l
XSA9IHdvcmtlcl9zdGF0ZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9i
cm9rZXIucHkKaW5kZXggZmI1NDJkZTM0OTQ4YTBiY2UxZjU2OTExZDljZTI5MzU4MTMxOTIxOS4u
YTY4MmNmNDU1OGJmYjFkOTUwZTE5Yzk1OGIzODMyMTgzOWQxNzRkMSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3Jr
ZXJfYnJva2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQpAQCAtODYsNyArODYsNyBAQCBkZWYg
Z2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgogCiAKIGNsYXNzIEFic3Ry
YWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9y
eSwgb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3
b3JrZXJfYXJndW1lbnRzPU5vbmUpOgogICAgICAgICAiIiJUaGUgY29uc3RydWN0b3Igc2hvdWxk
IGJlIHVzZWQgdG8gZG8gYW55IHNpbXBsZSBpbml0aWFsaXphdGlvbgogICAgICAgICBuZWNlc3Nh
cnksIGJ1dCBzaG91bGQgbm90IGRvIGFueXRoaW5nIHRoYXQgY3JlYXRlcyBkYXRhIHN0cnVjdHVy
ZXMKICAgICAgICAgdGhhdCBjYW5ub3QgYmUgUGlja2xlZCBvciBzZW50IGFjcm9zcyBwcm9jZXNz
ZXMgKGxpa2Ugb3BlbmluZwpAQCAtOTYsMTYgKzk2LDExIEBAIGNsYXNzIEFic3RyYWN0V29ya2Vy
KG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2VyQ29ubmVjdGlvbiBvYmpl
Y3QgY3JlYXRpbmcKICAgICAgICAgICAgICAgICB0aGUgd29ya2VyIGFuZCB0aGF0IGNhbiBiZSB1
c2VkIGZvciBtZXNzYWdpbmcuCi0gICAgICAgICAgICB3b3JrZXJfbnVtYmVyIC0gaWRlbnRpZmll
ciBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlcgotICAgICAgICAgICAgb3B0aW9ucyAtIGNvbW1h
bmQtbGluZSBhcmd1bWVudCBvYmplY3QgZnJvbSBvcHRwYXJzZSIiIgorICAgICAgICAgICAgd29y
a2VyX2FyZ3VtZW50cyAtIChvcHRpb25hbCwgUGlja2xhYmxlKSBvYmplY3QgcGFzc2VkIHRvIHRo
ZSB3b3JrZXIgZnJvbSB0aGUgbWFuYWdlciIiIgogICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9r
ZXJDbGllbnQuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24g
PSB3b3JrZXJfY29ubmVjdGlvbgotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAg
ICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgotICAgICAgICBzZWxmLl9u
YW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVyCi0gICAgICAgIHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKIAotICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6
CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgIiIiQ2FsbGJhY2sgZm9yIHRoZSB3b3JrZXIg
dG8gc3RhcnQgZXhlY3V0aW5nLiBUeXBpY2FsbHkgZG9lcyBhbnkKICAgICAgICAgcmVtYWluaW5n
IGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIGNhbGxzIGJyb2tlcl9jb25uZWN0aW9uLnJ1bl9tZXNz
YWdlX2xvb3AoKS4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgpAQCAtMTMw
LDcgKzEyNSwxMiBAQCBjbGFzcyBfTWFuYWdlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJv
a2VyQ29ubmVjdGlvbik6CiAgICAgICAgICAgICBNQU5BR0VSX1RPUElDLCBBTllfV09SS0VSX1RP
UElDKQogICAgICAgICBzZWxmLl93b3JrZXJfY2xhc3MgPSB3b3JrZXJfY2xhc3MKIAotICAgIGRl
ZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlciwgcG9ydCwgcmVzdWx0c19kaXJlY3Rv
cnksIG9wdGlvbnMpOgorICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX2FyZ3VtZW50
cz1Ob25lKToKKyAgICAgICAgIiIiU3RhcnRzIGEgbmV3IHdvcmtlci4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgICAgd29ya2VyX2FyZ3VtZW50cyAtIGFuIG9wdGlvbmFsIFBpY2tsYWJsZSBv
YmplY3QgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIHdvcmtlciBjb25zdHJ1Y3RvcgorICAgICAgICAi
IiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKQEAgLTEzOSwzMSArMTM5
LDM1IEBAIGNsYXNzIF9JbmxpbmVNYW5hZ2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6CiAgICAgICAg
IF9NYW5hZ2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgd29ya2Vy
X2NsYXNzKQogICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyID0gTm9uZQogCi0gICAgZGVmIHN0
YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyLCBwb3J0LCByZXN1bHRzX2RpcmVjdG9yeSwg
b3B0aW9ucyk6CisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfYXJndW1lbnRzPU5v
bmUpOgogICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyID0gX0lubGluZVdvcmtlckNvbm5lY3Rp
b24oc2VsZi5fYnJva2VyLAotICAgICAgICAgICAgc2VsZi5fY2xpZW50LCBzZWxmLl93b3JrZXJf
Y2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQotICAgICAg
ICBzZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICAgICAgc2VsZi5fY2xpZW50LCBzZWxmLl93b3Jr
ZXJfY2xhc3MsIHdvcmtlcl9hcmd1bWVudHMpCiAgICAgICAgIHJldHVybiBzZWxmLl9pbmxpbmVf
d29ya2VyCiAKKyAgICBkZWYgc2V0X2lubGluZV9hcmd1bWVudHMoc2VsZiwgYXJndW1lbnRzPU5v
bmUpOgorICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBvbmx5IGV4aXN0cyBoZXJlLCBh
bmQgbm90IG9uIGFsbAorICAgICAgICAjIE1hbmFnZXJDb25uZWN0aW9uczsgY2FsbGluZyB0aGlz
IG1ldGhvZCBvbiBhIE11bHRpUHJvY2Vzc01hbmFnZXIKKyAgICAgICAgIyB3aWxsIGRlbGliZXJh
dGVseSByZXN1bHQgaW4gYSBydW50aW1lIGVycm9yLgorICAgICAgICBzZWxmLl9pbmxpbmVfd29y
a2VyLnNldF9pbmxpbmVfYXJndW1lbnRzKGFyZ3VtZW50cykKKwogICAgIGRlZiBydW5fbWVzc2Fn
ZV9sb29wKHNlbGYsIGRlbGF5X3NlY3M9Tm9uZSk6CiAgICAgICAgICMgTm90ZSB0aGF0IGRlbGF5
X3NlY3MgaXMgaWdub3JlZCBpbiB0aGlzIGNhc2Ugc2luY2Ugd2UgY2FuJ3QgZWFzaWx5CiAgICAg
ICAgICMgaW1wbGVtZW50IGl0LgotICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyLnJ1bihzZWxm
Ll9wb3J0KQorICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyLnJ1bigpCiAgICAgICAgIHNlbGYu
X2Jyb2tlci5ydW5fYWxsX3BlbmRpbmcoTUFOQUdFUl9UT1BJQywgc2VsZi5fY2xpZW50KQogCiAK
IGNsYXNzIF9NdWx0aVByb2Nlc3NNYW5hZ2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6Ci0gICAgZGVm
IHN0YXJ0X3dvcmtlcihzZWxmLCB3b3JrZXJfbnVtYmVyLCBwb3J0LCByZXN1bHRzX2RpcmVjdG9y
eSwgb3B0aW9ucyk6Ci0gICAgICAgICMgTm90ZSB0aGF0IHdlIGlnbm9yZSB0aGUgcG9ydCBzaW5j
ZSB3ZSBjYW4ndCBwYXNzIGl0IHRvIHRoZSBjaGlsZCAoaXQgaXNuJ3QgUGlja2xhYmxlKS4KKyAg
ICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9hcmd1bWVudHM9Tm9uZSk6CiAgICAgICAg
IHdvcmtlcl9jb25uZWN0aW9uID0gX011bHRpUHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24oc2VsZi5f
YnJva2VyLAotICAgICAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCBy
ZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucykKKyAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9jbGFz
cywgd29ya2VyX2FyZ3VtZW50cykKICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24uc3RhcnQoKQog
ICAgICAgICByZXR1cm4gd29ya2VyX2Nvbm5lY3Rpb24KIAogCiBjbGFzcyBfV29ya2VyQ29ubmVj
dGlvbihtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgYnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0
b3J5LCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fY2xpZW50ID0gd29ya2VyX2NsYXNzKHNlbGYs
IHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX2FyZ3VtZW50cz1Ob25lKToK
KyAgICAgICAgc2VsZi5fY2xpZW50ID0gd29ya2VyX2NsYXNzKHNlbGYsIHdvcmtlcl9hcmd1bWVu
dHMpCiAgICAgICAgIHNlbGYubmFtZSA9IHNlbGYuX2NsaWVudC5uYW1lKCkKICAgICAgICAgbWVz
c2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHNlbGYu
X2NsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTllfV09SS0VSX1RPUElDLCBNQU5BR0VSX1RPUElDKQpAQCAtMTgyLDggKzE4Niw4IEBAIGNs
YXNzIF9Xb3JrZXJDb25uZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgog
CiAKIGNsYXNzIF9JbmxpbmVXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBtYW5hZ2VyX2NsaWVudCwgd29ya2VyX2NsYXNz
LCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucyk6Ci0gICAgICAgIF9X
b3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3Jr
ZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucykKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgYnJva2VyLCBtYW5hZ2VyX2NsaWVudCwgd29ya2VyX2NsYXNzLCB3b3JrZXJfYXJndW1l
bnRzKToKKyAgICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3
b3JrZXJfY2xhc3MsIHdvcmtlcl9hcmd1bWVudHMpCiAgICAgICAgIHNlbGYuX2FsaXZlID0gRmFs
c2UKICAgICAgICAgc2VsZi5fbWFuYWdlcl9jbGllbnQgPSBtYW5hZ2VyX2NsaWVudAogCkBAIC0x
OTYsOSArMjAwLDEyIEBAIGNsYXNzIF9JbmxpbmVXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25u
ZWN0aW9uKToKICAgICBkZWYgam9pbihzZWxmLCB0aW1lb3V0KToKICAgICAgICAgYXNzZXJ0IG5v
dCBzZWxmLl9hbGl2ZQogCi0gICAgZGVmIHJ1bihzZWxmLCBwb3J0KToKKyAgICBkZWYgc2V0X2lu
bGluZV9hcmd1bWVudHMoc2VsZiwgYXJndW1lbnRzKToKKyAgICAgICAgc2VsZi5fY2xpZW50LnNl
dF9pbmxpbmVfYXJndW1lbnRzKGFyZ3VtZW50cykKKworICAgIGRlZiBydW4oc2VsZik6CiAgICAg
ICAgIHNlbGYuX2FsaXZlID0gVHJ1ZQotICAgICAgICBzZWxmLl9jbGllbnQucnVuKHBvcnQpCisg
ICAgICAgIHNlbGYuX2NsaWVudC5ydW4oKQogICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCiAK
ICAgICBkZWYgeWllbGRfdG9fYnJva2VyKHNlbGYpOgpAQCAtMjE4LDExICsyMjUsMTIgQEAgY2xh
c3MgX1Byb2Nlc3MobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgogICAgICAgICBzZWxmLl9jbGll
bnQgPSBjbGllbnQKIAogICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NsaWVudC5y
dW4ocG9ydD1Ob25lKQorICAgICAgICBzZWxmLl9jbGllbnQucnVuKCkKKwogCiBjbGFzcyBfTXVs
dGlQcm9jZXNzV29ya2VyQ29ubmVjdGlvbihfV29ya2VyQ29ubmVjdGlvbik6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRz
X2RpcmVjdG9yeSwgb3B0aW9ucyk6Ci0gICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVj
dG9yeSwgb3B0aW9ucykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xh
c3MsIHdvcmtlcl9hcmd1bWVudHMpOgorICAgICAgICBfV29ya2VyQ29ubmVjdGlvbi5fX2luaXRf
XyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX2FyZ3VtZW50cykKICAgICAgICAg
c2VsZi5fcHJvYyA9IF9Qcm9jZXNzKHNlbGYsIHNlbGYuX2NsaWVudCkKIAogICAgIGRlZiBjYW5j
ZWwoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9i
cm9rZXJfdW5pdHRlc3QucHkKaW5kZXggYzkzODc1ODE4MjY2YTUwNTU5OWRmZjU5M2QxODQwNDlk
NTVmMzk5ZC4uMjRhNzNjMGUyZjZhMGQ5MDQ4YWIyOTA5OGUxNzIwZjBhMGIwNDRhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVz
dC5weQpAQCAtNTQsMjMgKzU0LDI1IEBAIGRlZiBtYWtlX2Jyb2tlcihtYW5hZ2VyLCB3b3JrZXJf
bW9kZWwsIHN0YXJ0X3F1ZXVlPU5vbmUsIHN0b3BfcXVldWU9Tm9uZSk6CiAKIAogY2xhc3MgX1Rl
c3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNf
ZGlyZWN0b3J5LCBvcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5l
Y3Rpb24sIHdvcmtlcl9vYmo9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9u
ID0gYnJva2VyX2Nvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAg
ICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKLSAgICAgICAgc2VsZi5f
bmFtZSA9ICdUZXN0V29ya2VyLyVkJyAlIHdvcmtlcl9udW1iZXIKKyAgICAgICAgc2VsZi5fbmFt
ZSA9ICdUZXN0V29ya2VyJwogICAgICAgICBzZWxmLl9zdG9wcGVkID0gRmFsc2UKICAgICAgICAg
c2VsZi5fY2FuY2VsZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl90aGluZ190b19ncmVldCA9ICdl
dmVyeWJvZHknCiAgICAgICAgIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlID0gc3RhcnRpbmdfcXVldWUK
ICAgICAgICAgc2VsZi5fc3RvcHBpbmdfcXVldWUgPSBzdG9wcGluZ19xdWV1ZQogCisgICAgZGVm
IHNldF9pbmxpbmVfYXJndW1lbnRzKHNlbGYsIHRoaW5nX3RvX2dyZWV0KToKKyAgICAgICAgc2Vs
Zi5fdGhpbmdfdG9fZ3JlZXQgPSB0aGluZ190b19ncmVldAorCiAgICAgZGVmIGhhbmRsZV9zdG9w
KHNlbGYsIHNyYyk6CiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBUcnVlCiAKICAgICBkZWYgaGFu
ZGxlX3Rlc3Qoc2VsZiwgc3JjLCBhbl9pbnQsIGFfc3RyKToKICAgICAgICAgYXNzZXJ0IGFuX2lu
dCA9PSAxCiAgICAgICAgIGFzc2VydCBhX3N0ciA9PSAiaGVsbG8sIHdvcmxkIgotICAgICAgICBz
ZWxmLl9icm9rZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAyLCAnaGksIGV2ZXJ5
Ym9keScpCisgICAgICAgIHNlbGYuX2Jyb2tlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgndGVz
dCcsIDIsICdoaSwgJyArIHNlbGYuX3RoaW5nX3RvX2dyZWV0KQogCiAgICAgZGVmIGlzX2RvbmUo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zdG9wcGVkIG9yIHNlbGYuX2NhbmNlbGVkCkBA
IC04MSw3ICs4Myw3IEBAIGNsYXNzIF9UZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5B
YnN0cmFjdFdvcmtlcik6CiAgICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAgc2VsZi5fY2Fu
Y2VsZWQgPSBUcnVlCiAKLSAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgorICAgIGRlZiBydW4oc2Vs
Zik6CiAgICAgICAgIGlmIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlOgogICAgICAgICAgICAgc2VsZi5f
c3RhcnRpbmdfcXVldWUucHV0KCcnKQogCkBAIC0xNDQsNyArMTQ2LDcgQEAgY2xhc3MgX1Rlc3Rz
TWl4aW4ob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKICAgICAgICAgc2Vs
Zi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3Jr
ZXIoMCwgTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0
YXJ0X3dvcmtlcigpCiAgICAgICAgIHdvcmtlci5jYW5jZWwoKQogICAgICAgICBzZWxmLl9icm9r
ZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3b3JsZCcpCiAgICAgICAgIHdvcmtl
ci5qb2luKDAuNSkKQEAgLTE1Miw3ICsxNTQsNyBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmplY3Qp
OgogCiAgICAgZGVmIHRlc3RfZG9uZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigp
Ci0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoMCwgTm9uZSwgTm9u
ZSwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigpCiAg
ICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAxLCAnaGVsbG8sIHdvcmxk
JykKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCiAgICAgICAgIHNl
bGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKQEAgLTE2NCw3ICsxNjYsNyBAQCBjbGFzcyBf
VGVzdHNNaXhpbihvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9tZXNzYWdlKHNlbGYp
OgogICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKLSAgICAgICAgd29ya2VyID0gc2VsZi5fYnJv
a2VyLnN0YXJ0X3dvcmtlcigwLCBOb25lLCBOb25lLCBOb25lKQorICAgICAgICB3b3JrZXIgPSBz
ZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKCkKICAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVz
c2FnZSgndW5rbm93bicpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkK
ICAgICAgICAgd29ya2VyLmpvaW4oMC41KQpAQCAtMTczLDcgKzE3NSwyMiBAQCBjbGFzcyBfVGVz
dHNNaXhpbihvYmplY3QpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdvcmtlci5pc19hbGl2
ZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leGNlcHRpb25bMF0sIFZhbHVl
RXJyb3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2V4Y2VwdGlvblsxXSwKLSAg
ICAgICAgICAgICJUZXN0V29ya2VyLzA6IHJlY2VpdmVkIG1lc3NhZ2UgJ3Vua25vd24nIGl0IGNv
dWxkbid0IGhhbmRsZSIpCisgICAgICAgICAgICAiVGVzdFdvcmtlcjogcmVjZWl2ZWQgbWVzc2Fn
ZSAndW5rbm93bicgaXQgY291bGRuJ3QgaGFuZGxlIikKKworCitjbGFzcyBJbmxpbmVCcm9rZXJU
ZXN0cyhfVGVzdHNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgX1Rlc3RzTWl4aW4uc2V0VXAoc2VsZikKKyAgICAgICAgc2VsZi5fd29ya2Vy
X21vZGVsID0gJ2lubGluZScKKworICAgIGRlZiB0ZXN0X2lubGluZV9hcmd1bWVudHMoc2VsZik6
CisgICAgICAgIHNlbGYubWFrZV9icm9rZXIoKQorICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9r
ZXIuc3RhcnRfd29ya2VyKCkKKyAgICAgICAgd29ya2VyLnNldF9pbmxpbmVfYXJndW1lbnRzKCdt
ZScpCisgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3Rlc3QnLCAxLCAnaGVsbG8s
IHdvcmxkJykKKyAgICAgICAgc2VsZi5fYnJva2VyLnBvc3RfbWVzc2FnZSgnc3RvcCcpCisgICAg
ICAgIHNlbGYuX2Jyb2tlci5ydW5fbWVzc2FnZV9sb29wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoc2VsZi5fYV9zdHIsICdoaSwgbWUnKQogCiAKICMgRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUyMC4KQEAgLTE5NSwxMyArMjEyLDEzIEBAIGNs
YXNzIEludGVyZmFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIHNpZ25hdHVy
ZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUn
KQogICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01hbmFnZXJDb25uZWN0aW9u
KGJyb2tlci5fYnJva2VyLCBzZWxmLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhO
b3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2VyLCAwLCBOb25lLCBOb25lLCBOb25l
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3Rh
cnRfd29ya2VyKQogCiAgICAgZGVmIHRlc3Rfd29ya2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdChz
ZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJl
IGFic3RyYWN0IGFuZCBoYXZlIHRoZQogICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAg
ICAgICAgIGJyb2tlciA9IG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmog
PSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIs
IF9UZXN0V29ya2VyLCAwLCBOb25lLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtl
cl9icm9rZXIuX1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2VyLCBO
b25lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmou
Y2FuY2VsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBv
YmouaXNfYWxpdmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJy
b3IsIG9iai5qb2luLCBOb25lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CmluZGV4IDQ0OTcyZWY0OTM4ODg3
OTljNzc5NTJlZjM0ZGI4MDQyNzBhZWIyMjAuLjk4MWI1YjZlMWE1YTA1YzNlZDcxZmVmMDUzMjI3
ZjdmZWVjN2I0ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKQEAgLTQ0LDkgKzQ0LDIwIEBAIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmludGluZwogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKK2NsYXNzIFdvcmtlckFyZ3VtZW50cyhvYmplY3Qp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9y
eSwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYud29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIK
KyAgICAgICAgc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CisgICAg
ICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKKworCiBjbGFzcyBXb3JrZXIobWFuYWdlcl93b3Jr
ZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgd29ya2Vy
X2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToK
LSAgICAgICAgbWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyLl9faW5pdF9fKHNl
bGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwg
b3B0aW9ucykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdvcmtl
cl9hcmd1bWVudHMpOgorICAgICAgICBzdXBlcihXb3JrZXIsIHNlbGYpLl9faW5pdF9fKHdvcmtl
cl9jb25uZWN0aW9uLCB3b3JrZXJfYXJndW1lbnRzKQorICAgICAgICBzZWxmLl93b3JrZXJfbnVt
YmVyID0gd29ya2VyX2FyZ3VtZW50cy53b3JrZXJfbnVtYmVyCisgICAgICAgIHNlbGYuX25hbWUg
PSAnd29ya2VyLyVkJyAlIHNlbGYuX3dvcmtlcl9udW1iZXIKKyAgICAgICAgc2VsZi5fcmVzdWx0
c19kaXJlY3RvcnkgPSB3b3JrZXJfYXJndW1lbnRzLnJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAg
IHNlbGYuX29wdGlvbnMgPSB3b3JrZXJfYXJndW1lbnRzLm9wdGlvbnMKICAgICAgICAgc2VsZi5f
ZG9uZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKICAgICAgICAgc2Vs
Zi5fcG9ydCA9IE5vbmUKQEAgLTgzLDEwICs5NCwxMSBAQCBjbGFzcyBXb3JrZXIobWFuYWdlcl93
b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX25hbWUKIAotICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6Ci0gICAgICAg
IGlmIHBvcnQ6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAotICAgICAgICBlbHNlOgor
ICAgIGRlZiBzZXRfaW5saW5lX2FyZ3VtZW50cyhzZWxmLCBwb3J0KToKKyAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9w
b3J0OgogICAgICAgICAgICAgIyBXZSBhcmUgcnVubmluZyBpbiBhIGNoaWxkIHByb2Nlc3MgYW5k
IG5lZWQgdG8gY3JlYXRlIGEgbmV3IEhvc3QuCiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnBsYXRmb3JtIGFuZCAndGVzdCcgaW4gc2VsZi5fb3B0aW9ucy5wbGF0Zm9ybToKICAgICAgICAg
ICAgICAgICAjIEl0IGlzIGxhbWUgdG8gaW1wb3J0IG1vY2tzIGludG8gcmVhbCBjb2RlLCBidXQg
dGhpcyBhbGxvd3MgdXMgdG8gdXNlIHRoZSB0ZXN0IHBvcnQgaW4gbXVsdGktcHJvY2VzcyB0ZXN0
cyBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvd29ya2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyX3VuaXR0ZXN0LnB5CmluZGV4IGY0OGJl
M2U5ZGM4MWRjNmEzMjQyZGQxOTIzZWI5MjYwZDMxOWY4NjQuLjZmZDUyMDJkOWM0MDA3ZjBlZTg0
ZDljMTM1NmFmY2ZhYTBkOWY1OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXJfdW5pdHRlc3Qu
cHkKQEAgLTI4LDcgKzI4LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLndvcmtlciBpbXBvcnQgV29ya2VyCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy53b3JrZXIgaW1wb3J0IFdvcmtlciwgV29ya2Vy
QXJndW1lbnRzCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25z
CiAKIApAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBXb3JrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgIyBUaGlzIGNoZWNrcyB0aGF0IHdlIGdvdCBhIHBvcnQgYW5kIGRpZG4ndCBy
YWlzZSBhbiBleGNlcHRpb24KICAgICAgICAgIyBpZiB3ZSBkaWRuJ3Qgc3BlY2lmeSBhIHBvcnQg
d2l0aCB0aGUgLS1wbGF0Zm9ybSBmbGFnLgogICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IEZh
a2VDb25uZWN0aW9uKCkKLSAgICAgICAgd29ya2VyID0gV29ya2VyKHdvcmtlcl9jb25uZWN0aW9u
LCAxLCAiL3RtcCIsIE1vY2tPcHRpb25zKHBsYXRmb3JtPU5vbmUsIHByaW50X29wdGlvbnM9Tm9u
ZSwgdmVyYm9zZT1GYWxzZSwgYmF0Y2hfc2l6ZT0wKSkKKyAgICAgICAgd29ya2VyID0gV29ya2Vy
KHdvcmtlcl9jb25uZWN0aW9uLCBXb3JrZXJBcmd1bWVudHMoMSwgJy90bXAnLCBNb2NrT3B0aW9u
cyhwbGF0Zm9ybT1Ob25lLCBwcmludF9vcHRpb25zPU5vbmUsIHZlcmJvc2U9RmFsc2UsIGJhdGNo
X3NpemU9MCkpKQogICAgICAgICB3b3JrZXIuX2RvbmUgPSBUcnVlCi0gICAgICAgIHdvcmtlci5y
dW4oTm9uZSkKKyAgICAgICAgd29ya2VyLnJ1bigpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1
YWxzKHdvcmtlci5fcG9ydCwgTm9uZSkKIAogCg==
</data>
<flag name="review"
          id="129123"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>