<?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>46225</bug_id>
          
          <creation_ts>2010-09-21 15:43:30 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: add support for chromium gpu port, accelerated switches</short_desc>
          <delta_ts>2010-09-22 18:26:38 -0700</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>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tony</cc>
    
    <cc>vangelis</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282591</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 15:43:30 -0700</bug_when>
    <thetext>new-run-webkit-tests: add support for chromium gpu port, accelerated switches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282592</commentid>
    <comment_count>1</comment_count>
      <attachid>68295</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 15:46:34 -0700</bug_when>
    <thetext>Created attachment 68295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282595</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 15:51:03 -0700</bug_when>
    <thetext>(Details in the ChangeLogs for what is entailed here ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282598</commentid>
    <comment_count>3</comment_count>
      <attachid>68298</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 15:58:21 -0700</bug_when>
    <thetext>Created attachment 68298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282599</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 15:59:09 -0700</bug_when>
    <thetext>update with what is hopefully the correct set of tests to skip and to run in LayoutTests/chromium-gpu/test_expectations.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282600</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 15:59:52 -0700</bug_when>
    <thetext>Note that I have not yet modified the buildbots to run the tests in an additional step yet. I&apos;d like to land this patch and have people get at least a little experience running this and getting correct expectations in before we modify the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282663</commentid>
    <comment_count>6</comment_count>
      <attachid>68298</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-21 17:08:25 -0700</bug_when>
    <thetext>Comment on attachment 68298
Patch

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

&gt; LayoutTests/platform/chromium-gpu/test_expectations.txt:10
&gt; +WONTFIX SKIP : accessibility = PASS FAIL
&gt; +WONTFIX SKIP : animations = PASS FAIL
&gt; +WONTFIX SKIP : canvas = PASS FAIL

FWIW, I would not bother explicitly skipping these since developers can do that if they want.  Also, if there is a test outside of the compositing subdirectories below, it&apos;ll be hard to manually run it.

&gt; WebKitTools/ChangeLog:10
&gt; +        - support for the &apos;--accelerated-compositing&apos; and
&gt; +          &apos;accelerated-2d-canvas&apos; flags to new-run-webkit-tests (and the
&gt; +        &apos;no-&apos; flags)

Nit: indention is off

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:39
&gt; +    &quot;&quot;&quot;Some tests have slightly different results when compiled as Google
&gt; +    Chrome vs Chromium.  In those cases, we prepend an additional directory to
&gt; +    to the baseline paths.&quot;&quot;&quot;

This docstring seems incorrect.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:41
&gt; +    if port_name == &apos;chromium-gpu&apos;:
&gt; +        if sys.platform == &apos;win32&apos; or sys.platform == &apos;cygwin&apos;:

Nit: sys.platform in (&apos;win32&apos;, &apos;cygwin&apos;)

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:54
&gt; +    elif port_name.startswith(&apos;chromium-gpu-mac&apos;):
&gt; +        return ChromiumGpuMacPort(&apos;chromium-gpu-mac&apos;, options)

Why does mac pass in the port name but the other ports don&apos;t?  Also, I thought webkit style was to just use &apos;if&apos; in the case of an early return.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:71
&gt; +    try:
&gt; +        overrides_path = port.path_from_chromium_base(&apos;webkit&apos;, &apos;tools&apos;,
&gt; +            &apos;layout_tests&apos;, &apos;test_expectations_gpu.txt&apos;)

Do we plan on initially running with test_shell?  If we only support DRT, then we don&apos;t need to have an override file.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:99
&gt; +    def __init__(self, port_name=None, options=None, **kwargs):
&gt; +        _set_gpu_options(options)

Is it possible to make options a required param (and we wouldn&apos;t have to test for it in _set_gpu_options)?  Do we need **kwargs (you don&apos;t use them)?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/factory_unittest.py:138
&gt; +    def test_chromium_gpu_linux(self):
&gt; +        self.assert_port(&quot;chromium-gpu-linux&quot;, chromium_gpu.ChromiumGpuLinuxPort)

Can you add some tests that verify that the fallback works as expected?  What about testing to see if the test_expectations.txt override works?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1515
&gt; +        optparse.make_option(&quot;--no-accelerated-compositing&quot;,
&gt; +            action=&quot;store_false&quot;,
&gt; +            help=&quot;Don&apos;t use hardware-accelated compositing for rendering&quot;),

Don&apos;t you need dest=&apos;accelerated-compositing&apos; for the no- options?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1521
&gt; +        optparse.make_option(&quot;--no-accelerated-2d-canvas&quot;,
&gt; +            action=&quot;store_false&quot;,
&gt; +            help=&quot;Don&apos;t use hardware-accelated 2D Canvas calls&quot;),

dest=&apos;accelerated-2d-canvas&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282712</commentid>
    <comment_count>7</comment_count>
      <attachid>68298</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-09-21 18:09:20 -0700</bug_when>
    <thetext>Comment on attachment 68298
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1512
&gt; +            help=&quot;Use hardware-accelated compositing for rendering&quot;),

Nit:  accelated -&gt; accelerated.

&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1515
&gt;&gt; +            help=&quot;Don&apos;t use hardware-accelated compositing for rendering&quot;),
&gt; 
&gt; Don&apos;t you need dest=&apos;accelerated-compositing&apos; for the no- options?

And here.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1518
&gt; +            help=&quot;Use hardware-accelated 2D Canvas calls&quot;),

And here.

&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1521
&gt;&gt; +            help=&quot;Don&apos;t use hardware-accelated 2D Canvas calls&quot;),
&gt; 
&gt; dest=&apos;accelerated-2d-canvas&apos;

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282713</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 18:16:05 -0700</bug_when>
    <thetext>Thanks for the review ... you found some good things.

(In reply to comment #6)
&gt; (From update of attachment 68298 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68298&amp;action=review
&gt; 
&gt; &gt; LayoutTests/platform/chromium-gpu/test_expectations.txt:10
&gt; &gt; +WONTFIX SKIP : accessibility = PASS FAIL
&gt; &gt; +WONTFIX SKIP : animations = PASS FAIL
&gt; &gt; +WONTFIX SKIP : canvas = PASS FAIL
&gt; 
&gt; FWIW, I would not bother explicitly skipping these since developers can do that if they want.  Also, if there is a test outside of the compositing subdirectories below, it&apos;ll be hard to manually run it.
&gt; 

You can add specific files outside of the directories below to the expectations file, or you can specify them on the command line and add --force.

&gt; &gt; WebKitTools/ChangeLog:10
&gt; &gt; +        - support for the &apos;--accelerated-compositing&apos; and
&gt; &gt; +          &apos;accelerated-2d-canvas&apos; flags to new-run-webkit-tests (and the
&gt; &gt; +        &apos;no-&apos; flags)
&gt; 
&gt; Nit: indention is off
&gt; 

fixed.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:39
&gt; &gt; +    &quot;&quot;&quot;Some tests have slightly different results when compiled as Google
&gt; &gt; +    Chrome vs Chromium.  In those cases, we prepend an additional directory to
&gt; &gt; +    to the baseline paths.&quot;&quot;&quot;
&gt; 
&gt; This docstring seems incorrect.
&gt; 

fixed

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:41
&gt; &gt; +    if port_name == &apos;chromium-gpu&apos;:
&gt; &gt; +        if sys.platform == &apos;win32&apos; or sys.platform == &apos;cygwin&apos;:
&gt; 
&gt; Nit: sys.platform in (&apos;win32&apos;, &apos;cygwin&apos;)
&gt; 

fixed.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:54
&gt; &gt; +    elif port_name.startswith(&apos;chromium-gpu-mac&apos;):
&gt; &gt; +        return ChromiumGpuMacPort(&apos;chromium-gpu-mac&apos;, options)
&gt; 
&gt; Why does mac pass in the port name but the other ports don&apos;t?

Whoops. Fixed (they shouldn&apos;t pass the port names).

&gt;  Also, I thought webkit style was to just use &apos;if&apos; in the case of an early return.
&gt;

It is, but I&apos;ll never get used to it :) Fixed.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:71
&gt; &gt; +    try:
&gt; &gt; +        overrides_path = port.path_from_chromium_base(&apos;webkit&apos;, &apos;tools&apos;,
&gt; &gt; +            &apos;layout_tests&apos;, &apos;test_expectations_gpu.txt&apos;)
&gt; 
&gt; Do we plan on initially running with test_shell?  If we only support DRT, then we don&apos;t need to have an override file.

We want to be able to test both test_shell and DRT.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:99
&gt; &gt; +    def __init__(self, port_name=None, options=None, **kwargs):
&gt; &gt; +        _set_gpu_options(options)
&gt; 
&gt; Is it possible to make options a required param (and we wouldn&apos;t have to test for it in _set_gpu_options)?

Yes, but I don&apos;t want to do this in this CL (there&apos;s a bunch of other CLs in flight cleaning this stuff up).

&gt;  Do we need **kwargs (you don&apos;t use them)?

Depending on when this patch lands, yes, we&apos;ll need them and they&apos;ll get passed to the base class. This patch was in a weird halfway-in-between state. I&apos;ll remove them for now and update the patch when the other patch lands, making them necessary.

&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/factory_unittest.py:138
&gt; &gt; +    def test_chromium_gpu_linux(self):
&gt; &gt; +        self.assert_port(&quot;chromium-gpu-linux&quot;, chromium_gpu.ChromiumGpuLinuxPort)
&gt; 
&gt; Can you add some tests that verify that the fallback works as expected?  What about testing to see if the test_expectations.txt override works?
&gt; 

Will do. My initial thinking was that the tests wouldn&apos;t be testing anything interesting (I&apos;d be just as likely to get the test wrong as get the code wrong), but I&quot;ll add them since you asked.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1515
&gt; &gt; +        optparse.make_option(&quot;--no-accelerated-compositing&quot;,
&gt; &gt; +            action=&quot;store_false&quot;,
&gt; &gt; +            help=&quot;Don&apos;t use hardware-accelated compositing for rendering&quot;),
&gt; 
&gt; Don&apos;t you need dest=&apos;accelerated-compositing&apos; for the no- options?
&gt; 

Yes. Good catch.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1521
&gt; &gt; +        optparse.make_option(&quot;--no-accelerated-2d-canvas&quot;,
&gt; &gt; +            action=&quot;store_false&quot;,
&gt; &gt; +            help=&quot;Don&apos;t use hardware-accelated 2D Canvas calls&quot;),
&gt; 
&gt; dest=&apos;accelerated-2d-canvas&apos;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282725</commentid>
    <comment_count>9</comment_count>
      <attachid>68323</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 18:47:21 -0700</bug_when>
    <thetext>Created attachment 68323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282744</commentid>
    <comment_count>10</comment_count>
      <attachid>68331</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 19:59:51 -0700</bug_when>
    <thetext>Created attachment 68331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282755</commentid>
    <comment_count>11</comment_count>
      <attachid>68335</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-21 20:28:49 -0700</bug_when>
    <thetext>Created attachment 68335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283062</commentid>
    <comment_count>12</comment_count>
      <attachid>68335</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-22 11:06:41 -0700</bug_when>
    <thetext>Comment on attachment 68335
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:45
&gt; +        if sys.platform in (&apos;cygwin&apos;, &apos;win32&apos;):
&gt; +            port_name = &apos;chromium-gpu-win&apos;
&gt; +        elif sys.platform == &apos;linux2&apos;:
&gt; +            port_name = &apos;chromium-gpu-linux&apos;

python pro-tip: this could be rewritten as:
plaforms = {
  &apos;cygwin&apos;: &apos;-win&apos;,
  &apos;win32&apos;: &apos;-win&apos;,
  &apos;linux2&apos;: &apos;-linux&apos;,
  &apos;darwin&apos;: &apos;-mac&apos;,
}
if sys.platform not in platforms:
    raise NotImplementedError(&apos;...&apos;)
port_name += platforms[sys.platform]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283113</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-22 11:57:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 68335 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68335&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_gpu.py:45
&gt; &gt; +        if sys.platform in (&apos;cygwin&apos;, &apos;win32&apos;):
&gt; &gt; +            port_name = &apos;chromium-gpu-win&apos;
&gt; &gt; +        elif sys.platform == &apos;linux2&apos;:
&gt; &gt; +            port_name = &apos;chromium-gpu-linux&apos;
&gt; 
&gt; python pro-tip: this could be rewritten as:
&gt; plaforms = {
&gt;   &apos;cygwin&apos;: &apos;-win&apos;,
&gt;   &apos;win32&apos;: &apos;-win&apos;,
&gt;   &apos;linux2&apos;: &apos;-linux&apos;,
&gt;   &apos;darwin&apos;: &apos;-mac&apos;,
&gt; }
&gt; if sys.platform not in platforms:
&gt;     raise NotImplementedError(&apos;...&apos;)
&gt; port_name += platforms[sys.platform]

Thanks! Yeah, I was going to add something like this as part of the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283130</commentid>
    <comment_count>14</comment_count>
      <attachid>68335</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-22 12:07:03 -0700</bug_when>
    <thetext>Comment on attachment 68335
Patch

Clearing flags on attachment: 68335

Committed r68063: &lt;http://trac.webkit.org/changeset/68063&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283131</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-22 12:07:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283297</commentid>
    <comment_count>16</comment_count>
      <attachid>68335</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-09-22 15:32:22 -0700</bug_when>
    <thetext>Comment on attachment 68335
Patch

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

Belated drive-by comment...

&gt; LayoutTests/platform/chromium-gpu/test_expectations.txt:10
&gt; +WONTFIX SKIP : canvas = PASS FAIL

Based off the comment above, I&apos;d expect we would run these tests. Is the comment wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283434</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-09-22 18:26:38 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 68335 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68335&amp;action=review
&gt; 
&gt; Belated drive-by comment...
&gt; 
&gt; &gt; LayoutTests/platform/chromium-gpu/test_expectations.txt:10
&gt; &gt; +WONTFIX SKIP : canvas = PASS FAIL
&gt; 
&gt; Based off the comment above, I&apos;d expect we would run these tests. Is the comment wrong?

Yeah, I wrote the comment before I realized we only want to run some of the canvas bugs. I&apos;ll update it; good catch!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68295</attachid>
            <date>2010-09-21 15:46:34 -0700</date>
            <delta_ts>2010-09-21 15:58:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46225-20100921154632.patch</filename>
            <type>text/plain</type>
            <size>17876</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NzlhNGU3MjE0ODMzNWRlMWE4OGMwY2JjMDc2YjQ2NmNmOTkzYmZkLi44YjYwYWQ0
MjRiZDEwNzBiZjdkYmEyZmYwYzA3ZWViMWUwZGRlYjcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBwbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtKiBkaXJlY3RvcmllcyBmb3IgaG9sZGluZyB0aGUKKyAgICAgICAgR1BVLWFj
Y2VsZXJhdGVkIGJhc2VsaW5lcyBhbmQgZXhwZWN0YXRpb25zIGZvciBDaHJvbWl1bS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjUKKworICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dDogQWRkZWQu
CisKIDIwMTAtMDktMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2EzYzYx
NzFjNDM0MDQ2ODZhOWE4ZTE0MmRhNTFkMDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQKQEAgLTAsMCAr
MSwyIEBACitUaGlzIGRpcmVjdG9yeSBpcyBhIHBsYWNlaG9sZGVyIHNvIHRoYXQgR2l0IHdpbGwg
Y3JlYXRlIGl0OyBpdCBzaG91bGQgaG9sZAordGhlIGJhc2VsaW5lcyBmb3IgdGhlIEdQVSBhY2Nl
bGVyYXRlZCB0ZXN0cyBmb3IgQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdhM2M2MTcxYzQzNDA0Njg2
YTlhOGUxNDJkYTUxZDA1ZjY1OGYxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMg
ZGlyZWN0b3J5IGlzIGEgcGxhY2Vob2xkZXIgc28gdGhhdCBHaXQgd2lsbCBjcmVhdGUgaXQ7IGl0
IHNob3VsZCBob2xkCit0aGUgYmFzZWxpbmVzIGZvciB0aGUgR1BVIGFjY2VsZXJhdGVkIHRlc3Rz
IGZvciBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWdwdS13aW4vUkVBRE1FLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS13
aW4vUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2EzYzYxNzFjNDM0MDQ2ODZhOWE4ZTE0MmRhNTFk
MDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tZ3B1LXdpbi9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBkaXJlY3RvcnkgaXMg
YSBwbGFjZWhvbGRlciBzbyB0aGF0IEdpdCB3aWxsIGNyZWF0ZSBpdDsgaXQgc2hvdWxkIGhvbGQK
K3RoZSBiYXNlbGluZXMgZm9yIHRoZSBHUFUgYWNjZWxlcmF0ZWQgdGVzdHMgZm9yIENocm9taXVt
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NlMzg0MmNmOGMzNDY2YWIzY2Q4MWZlMmYzYzYx
OTBiM2M4M2RiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTAsMCArMSw0NiBAQAorLy8gVGhpcyBm
aWxlIGluZGljYXRlcyB0aGUgZXhwZWN0YXRpb25zIGZvciBydW5uaW5nIENocm9taXVtIHVuZGVy
CisvLyB0aGUgR1BVLWFjY2VsZXJhdGVkIGNvZGVwYXRocyBhcyBkZWZpbmVkIGluIAorLy8gV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUu
cHkKKy8vCisvLyBXZSBza2lwIG1vc3Qgb2YgdGhlIHRlc3RzIGluIHRoZSByZXBvc2l0b3J5IGJl
Y2F1c2UgdGhleSBkb24ndCB0cmlnZ2VyCisvLyB0aGUgYWNjZWxlcmF0ZWQgY29kZSBwYXRocy4g
V2UgYWN0dWFsbHkgb25seSBydW4gdGhlIGNhbnZhcyBhbmQKKy8vIGNvbXBvc2l0aW5nIHRlc3Rz
LgorV09OVEZJWCBTS0lQIDogYWNjZXNzaWJpbGl0eSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQ
IDogYW5pbWF0aW9ucyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogY3NzMSA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIDogY3NzMi4xID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBjc3Mz
ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBkb20gPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IGVkaXRpbmcgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGZhc3QgPSBQQVNTIEZBSUwK
K1dPTlRGSVggU0tJUCA6IGZvbnRzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBmdWxsc2Ny
ZWVuID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBodG1sNWxpYiA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIDogaHR0cCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogaWV0ZXN0Y2VudGVy
ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBpbnNwZWN0b3IgPSBQQVNTIEZBSUwKK1dPTlRG
SVggU0tJUCA6IGphdmEgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGxvYWRlciA9IFBBU1Mg
RkFJTAorV09OVEZJWCBTS0lQIDogbWF0aG1sID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBt
ZWRpYSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogcGVyZiA9IFBBU1MgRkFJTAorV09OVEZJ
WCBTS0lQIDogcGxhdGZvcm0gPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHBsdWdpbnMgPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHByaW50aW5nID0gUEFTUyBGQUlMCitXT05URklYIFNL
SVAgOiByZXNvdXJjZXMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHNjcm9sbGJhcnMgPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHNlY3VyaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNL
SVAgOiBzdG9yYWdlID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzdmcgPSBQQVNTIEZBSUwK
K1dPTlRGSVggU0tJUCA6IHRhYmxlcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdHJhbnNm
b3JtcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdHJhbnNpdGlvbnMgPSBQQVNTIEZBSUwK
K1dPTlRGSVggU0tJUCA6IHRyYXZlcnNhbCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdXNl
cnNjcmlwdHMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHdlYmFyY2hpdmUgPSBQQVNTIEZB
SUwKK1dPTlRGSVggU0tJUCA6IHdlYnNvY2tldCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDog
d21sID0gUEFTUyBGQUlMCisKKy8vCisvLyBBY3R1YWwgZmFpbHVyZSBzdXBwcmVzc2lvbnMgc2hv
dWxkIGdvIGJlbG93IHRoaXMgbGluZQorLy8KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBhYWRhMDQ1NWY1YmYwOTA3OWViNDk2
Y2Q0Zjg4ZmUzNjVhZmM4OWIxLi5lNTkxMThmNDE4YTQwZTdhZmFkNzNiZjg2NzMwZDE1NzYzOTI5
MzJlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHBy
YW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgJ2Nocm9taXVtLWdwdScgc2V0IG9mIHBvcnRzIHRoYXQgd2lsbCB0
ZXN0IHRoZSBhY2NlbGVyYXRlZAorICAgICAgICBHUFUgcGF0aHMuIFRoaXMgcGF0Y2ggYWRkczoK
KworICAgICAgICAtIHN1cHBvcnQgZm9yIHRoZSAnLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZycg
YW5kCisgICAgICAgICAgJ2FjY2VsZXJhdGVkLTJkLWNhbnZhcycgZmxhZ3MgdG8gbmV3LXJ1bi13
ZWJraXQtdGVzdHMgKGFuZCB0aGUKKyAgICAgICAgJ25vLScgZmxhZ3MpCisgICAgICAgIC0gYWRk
cyBhIG5ldyBzZXQgb2YgUG9ydHMgdGhhdCB3aWxsIGxvb2sgdW5kZXIKKyAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS1ncHUtJE9TLyBmb3IgYmFzZWxpbmVzIGJlZm9yZSBsb29raW5nIGluIHRo
ZQorICAgICAgICAgIHJlZ3VsYXIgY2hyb21pdW0gc2VhcmNoIHBhdGgKKyAgICAgICAgLSBhZGRz
IGEgbmV3IHRlc3RfZXhwZWN0YXRpb25zLnR4dCBmaWxlIGluIHBsYXRmb3JtL2Nocm9taXVtLWdw
dQorICAgICAgICAgIHRoYXQgc2tpcHMgYWxsIGJ1dCB0aGUgdGVzdHMgd2UgYWN0dWFsbHkgd2Fu
dCB0byBydW4gd2l0aAorICAgICAgICAgIGFjY2VsZXJhdGlvbi4KKworICAgICAgICBUaGlzIHBh
dGNoIHdpbGwgYWxsb3cgdXMgdG8gcnVuIGJvdGggd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRp
b24KKyAgICAgICAgYW5kIHRvIGNoYW5nZSB0aGUgZGVmYXVsdHMgZm9yIGJvdGggdGhlIHJlZ3Vs
YXIgYW5kIC1ncHUgb3B0aW9ucworICAgICAgICBhcyB0aGUgY29kZSBldm9sdmVzLgorCisgICAg
ICAgIFdlIHBsYW4gdG8gYWRkIGJvdGggLS1jaHJvbWl1bS0kT1MgYW5kIC0tY2hyb21pdW0tZ3B1
LSRPUyBydW5zIHRvCisgICAgICAgIGVhY2ggdGVzdCBib3QuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjI1CisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKworMjAxMC0w
OS0yMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJl
dmlld2VkLCBidWlsZCBmaXguCiAKICAgICAgICAgQWRkIG1pc3NpbmcgaW1wb3J0IG9mICd0ZW1w
ZmlsZScuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBkYjNkYzM0ZTJmZGNjY2QyMmVlZjEyZmVm
ZDJmM2ZkZWZhMTk1ZWM4Li4zM2M4NDlhY2JkOTMxMmY2ZGU4OTNhZDNhYTU1MWM0YTI0YWY2NGNh
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBDaHJvbWl1
bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBkcnRfb3ZlcnJpZGVzIGhh
bmRsaW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNoCiAgICAgICAgICMgZnJvbSB0
ZXNfc2hlbGwgdG8gRFJULgogICAgICAgICBkcnRfb3ZlcnJpZGVzID0gJycKLSAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zIGFuZCBzZWxm
Ll9vcHRpb25zLnVzZV9kcnQ6CiAgICAgICAgICAgICBkcnRfb3ZlcnJpZGVzX3BhdGggPSBzZWxm
LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLAogICAgICAgICAgICAgICAgICdw
bGF0Zm9ybScsICdjaHJvbWl1bScsICdkcnRfZXhwZWN0YXRpb25zLnR4dCcpCiAgICAgICAgICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyhkcnRfb3ZlcnJpZGVzX3BhdGgpOgpAQCAtMzYwLDYgKzM2MCwx
MiBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAKICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5ncF9mYXVsdF9lcnJvcl9ib3g6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5h
cHBlbmQoJy0tZ3AtZmF1bHQtZXJyb3ItYm94JykKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nOgorICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5k
KCctLWVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZycpCisKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXM6CisgICAgICAgICAgICBkcml2ZXJfYXJncy5h
cHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZhcycpCiAgICAgICAgIHJldHVybiBk
cml2ZXJfYXJncwogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dw
dS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zYThmMzkzNmQ5NWIyNDI0YzMyNTJjYmFmODY5ODRhZjFjM2RhNWZk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKQEAgLTAsMCArMSwxMjggQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitpbXBvcnQgY2hy
b21pdW1fbGludXgKK2ltcG9ydCBjaHJvbWl1bV9tYWMKK2ltcG9ydCBjaHJvbWl1bV93aW4KKwor
CitkZWYgZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucyk6CisgICAgIiIiU29tZSB0ZXN0cyBoYXZlIHNs
aWdodGx5IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gY29tcGlsZWQgYXMgR29vZ2xlCisgICAgQ2hy
b21lIHZzIENocm9taXVtLiAgSW4gdGhvc2UgY2FzZXMsIHdlIHByZXBlbmQgYW4gYWRkaXRpb25h
bCBkaXJlY3RvcnkgdG8KKyAgICB0byB0aGUgYmFzZWxpbmUgcGF0aHMuIiIiCisgICAgaWYgcG9y
dF9uYW1lID09ICdjaHJvbWl1bS1ncHUnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dp
bjMyJyBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6CisgICAgICAgICAgICBwb3J0X25hbWUg
PSAnY2hyb21pdW0tZ3B1LXdpbicKKyAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4
Mic6CisgICAgICAgICAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0tZ3B1LWxpbnV4JworICAgICAg
ICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHBvcnRfbmFtZSA9
ICdjaHJvbWl1bS1ncHUtbWFjJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigndW5zdXBwb3J0ZWQgcGxhdGZvcm06ICVzJyAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5wbGF0Zm9ybSkKKworICAgIGlmIHBvcnRf
bmFtZSA9PSAnY2hyb21pdW0tZ3B1LWxpbnV4JzoKKyAgICAgICAgcmV0dXJuIENocm9taXVtR3B1
TGludXhQb3J0KE5vbmUsIG9wdGlvbnMpCisgICAgZWxpZiBwb3J0X25hbWUuc3RhcnRzd2l0aCgn
Y2hyb21pdW0tZ3B1LW1hYycpOgorICAgICAgICByZXR1cm4gQ2hyb21pdW1HcHVNYWNQb3J0KCdj
aHJvbWl1bS1ncHUtbWFjJywgb3B0aW9ucykKKyAgICBlbGlmIHBvcnRfbmFtZS5zdGFydHN3aXRo
KCdjaHJvbWl1bS1ncHUtd2luJyk6CisgICAgICAgIHJldHVybiBDaHJvbWl1bUdwdVdpblBvcnQo
Tm9uZSwgb3B0aW9ucykKKyAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bnN1cHBvcnRl
ZCBwb3J0OiAlcycgJSBwb3J0X25hbWUpCisKKworZGVmIF9zZXRfZ3B1X29wdGlvbnMob3B0aW9u
cyk6CisgICAgaWYgb3B0aW9uczoKKyAgICAgICAgaWYgb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21w
b3NpdGluZyBpcyBOb25lOgorICAgICAgICAgICAgb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3N0
aW5nID0gVHJ1ZQorICAgICAgICBpZiBvcHRpb25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhcyBpcyBO
b25lOgorICAgICAgICAgICAgb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXMgPSBUcnVlCisK
KworZGVmIF9ncHVfb3ZlcnJpZGVzKHBvcnQpOgorICAgIHRyeToKKyAgICAgICAgb3ZlcnJpZGVz
X3BhdGggPSBwb3J0LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCAndG9vbHMnLAor
ICAgICAgICAgICAgJ2xheW91dF90ZXN0cycsICd0ZXN0X2V4cGVjdGF0aW9uc19ncHUudHh0JykK
KyAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgIHJldHVybiBOb25lCisgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKG92ZXJyaWRlc19wYXRoKToKKyAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICB3aXRoIGNvZGVjcy5vcGVuKG92ZXJyaWRlc19wYXRoLCAiciIsICJ1dGYtOCIpIGFzIGZp
bGU6CisgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQorCisKK2NsYXNzIENocm9taXVtR3B1TGlu
dXhQb3J0KGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydF9uYW1lPU5vbmUsIG9wdGlvbnM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAg
ICBfc2V0X2dwdV9vcHRpb25zKG9wdGlvbnMpCisgICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9t
aXVtTGludXhQb3J0Ll9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZSwgb3B0aW9ucykKKworICAgIGRl
ZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuIChbc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS1saW51eCcpXSArCisgICAgICAgICAgICAg
ICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgo
c2VsZikpCisKKyAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywg
J3BsYXRmb3JtJywKKyAgICAgICAgICAgICdjaHJvbWl1bS1ncHUnLCAndGVzdF9leHBlY3RhdGlv
bnMudHh0JykKKworICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6Cisg
ICAgICAgIHJldHVybiBfZ3B1X292ZXJyaWRlcyhzZWxmKQorCisKK2NsYXNzIENocm9taXVtR3B1
TWFjUG9ydChjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcG9ydF9uYW1lPU5vbmUsIG9wdGlvbnM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBf
c2V0X2dwdV9vcHRpb25zKG9wdGlvbnMpCisgICAgICAgIGNocm9taXVtX21hYy5DaHJvbWl1bU1h
Y1BvcnQuX19pbml0X18oc2VsZiwgcG9ydF9uYW1lLCBvcHRpb25zKQorCisgICAgZGVmIGJhc2Vs
aW5lX3NlYXJjaF9wYXRoKHNlbGYpOgorICAgICAgICByZXR1cm4gKFtzZWxmLl93ZWJraXRfYmFz
ZWxpbmVfcGF0aCgnY2hyb21pdW0tZ3B1LW1hYycpXSArCisgICAgICAgICAgICAgICAgY2hyb21p
dW1fbWFjLkNocm9taXVtTWFjUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKSkKKworICAg
IGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLAor
ICAgICAgICAgICAgJ2Nocm9taXVtLWdwdScsICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQorCisg
ICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJu
IF9ncHVfb3ZlcnJpZGVzKHNlbGYpCisKKworY2xhc3MgQ2hyb21pdW1HcHVXaW5Qb3J0KGNocm9t
aXVtX3dpbi5DaHJvbWl1bVdpblBvcnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25h
bWU9Tm9uZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIF9zZXRfZ3B1X29wdGlv
bnMob3B0aW9ucykKKyAgICAgICAgY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydC5fX2luaXRf
XyhzZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMpCisKKyAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3Bh
dGgoc2VsZik6CisgICAgICAgIHJldHVybiAoW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdj
aHJvbWl1bS1ncHUtd2luJyldICsKKyAgICAgICAgICAgICAgICBjaHJvbWl1bV93aW4uQ2hyb21p
dW1XaW5Qb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQorCisgICAgZGVmIHBhdGhfdG9f
dGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9m
cm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCisgICAgICAgICAgICAn
Y2hyb21pdW0tZ3B1JywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCisKKyAgICBkZWYgdGVzdF9l
eHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gX2dwdV9vdmVycmlk
ZXMoc2VsZikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZmFjdG9yeS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQppbmRleCA1NzA0ZjY1N2ZjMzAyMWM4MWY5MGExN2Y2
MDUyYjg1MmQ2NWNiMzg0Li4yMGFjNWE3ZmFmMGM2YzI0NGFjZWNjMDkyNWQwNGYzMTdlYTA4MjA5
IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2ZhY3RvcnkucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9mYWN0b3J5LnB5CkBAIC03OCw2ICs3OCw5IEBAIGRlZiBnZXQocG9ydF9uYW1l
PU5vbmUsIG9wdGlvbnM9Tm9uZSk6CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdx
dCcpOgogICAgICAgICBpbXBvcnQgcXQKICAgICAgICAgcmV0dXJuIHF0LlF0UG9ydChwb3J0X25h
bWUsIG9wdGlvbnMpCisgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1n
cHUnKToKKyAgICAgICAgaW1wb3J0IGNocm9taXVtX2dwdQorICAgICAgICByZXR1cm4gY2hyb21p
dW1fZ3B1LmdldChwb3J0X3RvX3VzZSwgb3B0aW9ucykKICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0
YXJ0c3dpdGgoJ2Nocm9taXVtLW1hYycpOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbWFjCiAg
ICAgICAgIHJldHVybiBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0KHBvcnRfbmFtZSwgb3B0
aW9ucykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRleCBjMGE0YzVlNWQ0
MDJmODVkZjA5MzUwYjgyMTBhNTRjZTkzMDgwMTA0Li44MWMzNzMyN2EyMDk5MmVlMGM0YzNjZDll
ODRkMzExZDZlYTQ1OThiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBA
IC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAoraW1wb3J0IGNo
cm9taXVtX2dwdQogaW1wb3J0IGNocm9taXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1fbWFjCiBp
bXBvcnQgY2hyb21pdW1fd2luCkBAIC0xMzMsNiArMTM0LDE1IEBAIGNsYXNzIEZhY3RvcnlUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9xdChzZWxmKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRfcG9ydCgicXQiLCBxdC5RdFBvcnQpCiAKKyAgICBkZWYgdGVzdF9jaHJvbWl1bV9n
cHVfbGludXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLWdwdS1s
aW51eCIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9ydCkKKworICAgIGRlZiB0ZXN0
X2Nocm9taXVtX2dwdV9tYWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9t
aXVtLWdwdS1tYWMiLCBjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQb3J0KQorCisgICAgZGVm
IHRlc3RfY2hyb21pdW1fZ3B1X3dpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgi
Y2hyb21pdW0tZ3B1LXdpbiIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQpCisKICAg
ICBkZWYgdGVzdF9jaHJvbWl1bV9tYWMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQo
ImNocm9taXVtLW1hYyIsIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQpCiAgICAgICAgIHNl
bGYuYXNzZXJ0X3BsYXRmb3JtX3BvcnQoImRhcndpbiIsIHNlbGYuY2hyb21pdW1fb3B0aW9ucywK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkKaW5kZXggZWI4ZWU1ZjVlOThjNzVmMGE2YTQwNjNlMTU5NWM4YTg5MGE3
N2RmYy4uZmQ3MDk1MmQ5NTkyNjI5ZjQ1YmQ2NjNmM2ExYTUyZTUwYTY5MGZiMSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKQEAgLTQxNiw2ICs0MTYsMTIgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJp
dmVyKToKICAgICAgICAgIyBUaGVzZSBhcmUgdXNlZCBieSB0aGUgQ2hyb21pdW0gRFJUIHBvcnQK
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgogICAgICAgICAgICAgZHJpdmVyX2Fy
Z3MuYXBwZW5kKCctLXRlc3Qtc2hlbGwnKQorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5h
Y2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBl
bmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJykKKworICAgICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXM6CisgICAgICAgICAgICAgICAgZHJp
dmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnKQorCiAgICAg
ICAgIHJldHVybiBkcml2ZXJfYXJncwogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkKaW5kZXggZmQ2M2RhOWM0NDk3YTY3NzE4YTM1ZWJhZTk4YTQ1MThjOGYx
NzNmZC4uZDdiZWNmZGFlMWVhNjAxZDk5YjM2OWI0ZDY4N2EzODY0ZjljMGQ4NiAxMDA3NTUKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0xNTA3LDYgKzE1MDcsMTggQEAgZGVmIHBhcnNlX2FyZ3Mo
YXJncz1Ob25lKToKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tdXNlLWRydCIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAg
ICAgaGVscD0iVXNlIER1bXBSZW5kZXJUcmVlIGluc3RlYWQgb2YgdGVzdF9zaGVsbCIpLAorICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyIsCisg
ICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgaGVscD0iVXNlIGhh
cmR3YXJlLWFjY2VsYXRlZCBjb21wb3NpdGluZyBmb3IgcmVuZGVyaW5nIiksCisgICAgICAgIG9w
dHBhcnNlLm1ha2Vfb3B0aW9uKCItLW5vLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nIiwKKyAgICAg
ICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAorICAgICAgICAgICAgaGVscD0iRG9uJ3QgdXNl
IGhhcmR3YXJlLWFjY2VsYXRlZCBjb21wb3NpdGluZyBmb3IgcmVuZGVyaW5nIiksCisgICAgICAg
IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWFjY2VsZXJhdGVkLTJkLWNhbnZhcyIsCisgICAgICAg
ICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgaGVscD0iVXNlIGhhcmR3YXJl
LWFjY2VsYXRlZCAyRCBDYW52YXMgY2FsbHMiKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRp
b24oIi0tbm8tYWNjZWxlcmF0ZWQtMmQtY2FudmFzIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLAorICAgICAgICAgICAgaGVscD0iRG9uJ3QgdXNlIGhhcmR3YXJlLWFjY2VsYXRl
ZCAyRCBDYW52YXMgY2FsbHMiKSwKICAgICBdCiAKICAgICAjIE1pc3NpbmcgTWFjLXNwZWNpZmlj
IG9sZC1ydW4td2Via2l0LXRlc3RzIG9wdGlvbnM6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c191bml0dGVzdC5weQppbmRleCBlMzkxNGU4NWI2M2Q0NDc5MmVmNTVjNzVkZTkzZDJmMzZh
YThjN2E1Li4xZDQ5MjQxM2FmYTZiYjc5Zjc5NjZkZjljODdjY2ZiNDNjMjIzNzBkIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTkxLDYgKzkxLDE2IEBA
IGRlZiBsb2dnaW5nX3J1bihhcmdzPVtdLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSk6CiAKIAogY2xh
c3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nKHNlbGYpOgorICAgICAgICAjIFRoaXMganVzdCB0ZXN0cyB0aGF0IHdlIHJl
Y29nbml6ZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBh
c3NpbmdfcnVuKFsnLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyddKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1uby1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyddKSkK
KworICAgIGRlZiB0ZXN0X2FjY2VsZXJhdGVkXzJkX2NhbnZhcyhzZWxmKToKKyAgICAgICAgIyBU
aGlzIGp1c3QgdGVzdHMgdGhhdCB3ZSByZWNvZ25pemUgdGhlIGNvbW1hbmQgbGluZSBhcmdzCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tYWNjZWxlcmF0ZWQtMmQtY2Fu
dmFzJ10pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLW5vLWFjY2Vs
ZXJhdGVkLTJkLWNhbnZhcyddKSkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oKSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68298</attachid>
            <date>2010-09-21 15:58:21 -0700</date>
            <delta_ts>2010-09-21 18:47:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46225-20100921155820.patch</filename>
            <type>text/plain</type>
            <size>18082</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NzlhNGU3MjE0ODMzNWRlMWE4OGMwY2JjMDc2YjQ2NmNmOTkzYmZkLi44YjYwYWQ0
MjRiZDEwNzBiZjdkYmEyZmYwYzA3ZWViMWUwZGRlYjcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBwbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtKiBkaXJlY3RvcmllcyBmb3IgaG9sZGluZyB0aGUKKyAgICAgICAgR1BVLWFj
Y2VsZXJhdGVkIGJhc2VsaW5lcyBhbmQgZXhwZWN0YXRpb25zIGZvciBDaHJvbWl1bS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjUKKworICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dDogQWRkZWQu
CisKIDIwMTAtMDktMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2EzYzYx
NzFjNDM0MDQ2ODZhOWE4ZTE0MmRhNTFkMDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQKQEAgLTAsMCAr
MSwyIEBACitUaGlzIGRpcmVjdG9yeSBpcyBhIHBsYWNlaG9sZGVyIHNvIHRoYXQgR2l0IHdpbGwg
Y3JlYXRlIGl0OyBpdCBzaG91bGQgaG9sZAordGhlIGJhc2VsaW5lcyBmb3IgdGhlIEdQVSBhY2Nl
bGVyYXRlZCB0ZXN0cyBmb3IgQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdhM2M2MTcxYzQzNDA0Njg2
YTlhOGUxNDJkYTUxZDA1ZjY1OGYxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMg
ZGlyZWN0b3J5IGlzIGEgcGxhY2Vob2xkZXIgc28gdGhhdCBHaXQgd2lsbCBjcmVhdGUgaXQ7IGl0
IHNob3VsZCBob2xkCit0aGUgYmFzZWxpbmVzIGZvciB0aGUgR1BVIGFjY2VsZXJhdGVkIHRlc3Rz
IGZvciBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWdwdS13aW4vUkVBRE1FLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS13
aW4vUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2EzYzYxNzFjNDM0MDQ2ODZhOWE4ZTE0MmRhNTFk
MDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tZ3B1LXdpbi9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBkaXJlY3RvcnkgaXMg
YSBwbGFjZWhvbGRlciBzbyB0aGF0IEdpdCB3aWxsIGNyZWF0ZSBpdDsgaXQgc2hvdWxkIGhvbGQK
K3RoZSBiYXNlbGluZXMgZm9yIHRoZSBHUFUgYWNjZWxlcmF0ZWQgdGVzdHMgZm9yIENocm9taXVt
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRkOTViMDgxOWI5YTQ5M2Q0N2Y2YjRmMDFhOTc2
MmNjNGIxMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTAsMCArMSw1MyBAQAorLy8gVGhpcyBm
aWxlIGluZGljYXRlcyB0aGUgZXhwZWN0YXRpb25zIGZvciBydW5uaW5nIENocm9taXVtIHVuZGVy
CisvLyB0aGUgR1BVLWFjY2VsZXJhdGVkIGNvZGVwYXRocyBhcyBkZWZpbmVkIGluCisvLyBXZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdS5w
eQorLy8KKy8vIFdlIHNraXAgbW9zdCBvZiB0aGUgdGVzdHMgaW4gdGhlIHJlcG9zaXRvcnkgYmVj
YXVzZSB0aGV5IGRvbid0IHRyaWdnZXIKKy8vIHRoZSBhY2NlbGVyYXRlZCBjb2RlIHBhdGhzLiBX
ZSBhY3R1YWxseSBvbmx5IHJ1biB0aGUgY2FudmFzIGFuZAorLy8gY29tcG9zaXRpbmcgdGVzdHMu
CitXT05URklYIFNLSVAgOiBhY2Nlc3NpYmlsaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAg
OiBhbmltYXRpb25zID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBjYW52YXMgPSBQQVNTIEZB
SUwKK1dPTlRGSVggU0tJUCA6IGNzczEgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGNzczIu
MSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogY3NzMyA9IFBBU1MgRkFJTAorV09OVEZJWCBT
S0lQIDogZG9tID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBlZGl0aW5nID0gUEFTUyBGQUlM
CitXT05URklYIFNLSVAgOiBmYXN0ID0gUEFTUyBGQUlMCisKK1dPTlRGSVggU0tJUCA6IGZvbnRz
ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBmdWxsc2NyZWVuID0gUEFTUyBGQUlMCitXT05U
RklYIFNLSVAgOiBodG1sNWxpYiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogaHR0cCA9IFBB
U1MgRkFJTAorV09OVEZJWCBTS0lQIDogaWV0ZXN0Y2VudGVyID0gUEFTUyBGQUlMCitXT05URklY
IFNLSVAgOiBpbnNwZWN0b3IgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGphdmEgPSBQQVNT
IEZBSUwKK1dPTlRGSVggU0tJUCA6IGxvYWRlciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDog
bWF0aG1sID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBtZWRpYSA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIDogcGVyZiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogcGxhdGZvcm0gPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHBsdWdpbnMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IHByaW50aW5nID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiByZXNvdXJjZXMgPSBQQVNT
IEZBSUwKK1dPTlRGSVggU0tJUCA6IHNjcm9sbGJhcnMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IHNlY3VyaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzdG9yYWdlID0gUEFTUyBG
QUlMCitXT05URklYIFNLSVAgOiBzdmcgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHRhYmxl
cyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdHJhbnNmb3JtcyA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIDogdHJhbnNpdGlvbnMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHRyYXZl
cnNhbCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdXNlcnNjcmlwdHMgPSBQQVNTIEZBSUwK
K1dPTlRGSVggU0tJUCA6IHdlYmFyY2hpdmUgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHdl
YnNvY2tldCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogd21sID0gUEFTUyBGQUlMCisKKy8v
IChUaGVzZSBhcmUgdGhlIHRlc3RzIHdlIGFjdHVhbGx5IHJ1biBhbmQgZXhwZWN0IHRvIHBhc3Mp
CitCVUdOT05FIDogY29tcG9zaXRpbmcgPSBQQVNTIEZBSUwKK0JVR05PTkUgOiBmYXN0L2NhbnZh
cyA9IFBBU1MgRkFJTAorQlVHTk9ORSA6IGNhbnZhcy9waGlsaXAgPSBQQVNTIEZBSUwKKworLy8K
Ky8vIEFjdHVhbCBmYWlsdXJlIHN1cHByZXNzaW9ucyBzaG91bGQgZ28gYmVsb3cgdGhpcyBsaW5l
CisvLwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGFhZGEwNDU1ZjViZjA5MDc5ZWI0OTZjZDRmODhmZTM2NWFmYzg5YjEuLmU1
OTExOGY0MThhNDBlN2FmYWQ3M2JmODY3MzBkMTU3NjM5MjkzMmUgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwz
NiBAQAogMjAxMC0wOS0yMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSAnY2hy
b21pdW0tZ3B1JyBzZXQgb2YgcG9ydHMgdGhhdCB3aWxsIHRlc3QgdGhlIGFjY2VsZXJhdGVkCisg
ICAgICAgIEdQVSBwYXRocy4gVGhpcyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gc3VwcG9ydCBm
b3IgdGhlICctLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJyBhbmQKKyAgICAgICAgICAnYWNjZWxl
cmF0ZWQtMmQtY2FudmFzJyBmbGFncyB0byBuZXctcnVuLXdlYmtpdC10ZXN0cyAoYW5kIHRoZQor
ICAgICAgICAnbm8tJyBmbGFncykKKyAgICAgICAgLSBhZGRzIGEgbmV3IHNldCBvZiBQb3J0cyB0
aGF0IHdpbGwgbG9vayB1bmRlcgorICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtLWdwdS0kT1Mv
IGZvciBiYXNlbGluZXMgYmVmb3JlIGxvb2tpbmcgaW4gdGhlCisgICAgICAgICAgcmVndWxhciBj
aHJvbWl1bSBzZWFyY2ggcGF0aAorICAgICAgICAtIGFkZHMgYSBuZXcgdGVzdF9leHBlY3RhdGlv
bnMudHh0IGZpbGUgaW4gcGxhdGZvcm0vY2hyb21pdW0tZ3B1CisgICAgICAgICAgdGhhdCBza2lw
cyBhbGwgYnV0IHRoZSB0ZXN0cyB3ZSBhY3R1YWxseSB3YW50IHRvIHJ1biB3aXRoCisgICAgICAg
ICAgYWNjZWxlcmF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggd2lsbCBhbGxvdyB1cyB0byBy
dW4gYm90aCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbgorICAgICAgICBhbmQgdG8gY2hh
bmdlIHRoZSBkZWZhdWx0cyBmb3IgYm90aCB0aGUgcmVndWxhciBhbmQgLWdwdSBvcHRpb25zCisg
ICAgICAgIGFzIHRoZSBjb2RlIGV2b2x2ZXMuCisKKyAgICAgICAgV2UgcGxhbiB0byBhZGQgYm90
aCAtLWNocm9taXVtLSRPUyBhbmQgLS1jaHJvbWl1bS1ncHUtJE9TIHJ1bnMgdG8KKyAgICAgICAg
ZWFjaCB0ZXN0IGJvdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYyMjUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9ncHUucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorCisyMDEwLTA5LTIxICBEaXJrIFByYW5rZSAgPGRw
cmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KIAog
ICAgICAgICBBZGQgbWlzc2luZyBpbXBvcnQgb2YgJ3RlbXBmaWxlJy4KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5CmluZGV4IGRiM2RjMzRlMmZkY2NjZDIyZWVmMTJmZWZkMmYzZmRlZmExOTVlYzguLjMzYzg0
OWFjYmQ5MzEyZjZkZTg5M2FkM2FhNTUxYzRhMjRhZjY0Y2EgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eQpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICAjIEZJWE1FOiBUaGlzIGRydF9vdmVycmlkZXMgaGFuZGxpbmcgc2hvdWxkIGJlIHJlbW92
ZWQgd2hlbiB3ZSBzd2l0Y2gKICAgICAgICAgIyBmcm9tIHRlc19zaGVsbCB0byBEUlQuCiAgICAg
ICAgIGRydF9vdmVycmlkZXMgPSAnJwotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6
CisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMgYW5kIHNlbGYuX29wdGlvbnMudXNlX2RydDoKICAg
ICAgICAgICAgIGRydF9vdmVycmlkZXNfcGF0aCA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNl
KCdMYXlvdXRUZXN0cycsCiAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtJywgJ2Nocm9taXVtJywg
J2RydF9leHBlY3RhdGlvbnMudHh0JykKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRy
dF9vdmVycmlkZXNfcGF0aCk6CkBAIC0zNjAsNiArMzYwLDEyIEBAIGNsYXNzIENocm9taXVtRHJp
dmVyKGJhc2UuRHJpdmVyKToKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdwX2ZhdWx0X2Vy
cm9yX2JveDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1ncC1mYXVsdC1lcnJv
ci1ib3gnKQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfY29tcG9zaXRp
bmc6CisgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVk
LWNvbXBvc2l0aW5nJykKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkXzJk
X2NhbnZhczoKKyAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxl
cmF0ZWQtMmQtY2FudmFzJykKICAgICAgICAgcmV0dXJuIGRyaXZlcl9hcmdzCiAKICAgICBkZWYg
c3RhcnQoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhOGYz
OTM2ZDk1YjI0MjRjMzI1MmNiYWY4Njk4NGFmMWMzZGE1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dw
dS5weQpAQCAtMCwwICsxLDEyOCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGNvZGVjcwor
aW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2ltcG9ydCBjaHJvbWl1bV9saW51eAoraW1wb3J0IGNo
cm9taXVtX21hYworaW1wb3J0IGNocm9taXVtX3dpbgorCisKK2RlZiBnZXQocG9ydF9uYW1lLCBv
cHRpb25zKToKKyAgICAiIiJTb21lIHRlc3RzIGhhdmUgc2xpZ2h0bHkgZGlmZmVyZW50IHJlc3Vs
dHMgd2hlbiBjb21waWxlZCBhcyBHb29nbGUKKyAgICBDaHJvbWUgdnMgQ2hyb21pdW0uICBJbiB0
aG9zZSBjYXNlcywgd2UgcHJlcGVuZCBhbiBhZGRpdGlvbmFsIGRpcmVjdG9yeSB0bworICAgIHRv
IHRoZSBiYXNlbGluZSBwYXRocy4iIiIKKyAgICBpZiBwb3J0X25hbWUgPT0gJ2Nocm9taXVtLWdw
dSc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIHN5cy5wbGF0Zm9ybSA9
PSAnY3lnd2luJzoKKyAgICAgICAgICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1ncHUtd2luJwor
ICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnbGludXgyJzoKKyAgICAgICAgICAgIHBvcnRf
bmFtZSA9ICdjaHJvbWl1bS1ncHUtbGludXgnCisgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09
ICdkYXJ3aW4nOgorICAgICAgICAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWdwdS1tYWMnCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCd1bnN1
cHBvcnRlZCBwbGF0Zm9ybTogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3lzLnBsYXRmb3JtKQorCisgICAgaWYgcG9ydF9uYW1lID09ICdjaHJvbWl1bS1ncHUt
bGludXgnOgorICAgICAgICByZXR1cm4gQ2hyb21pdW1HcHVMaW51eFBvcnQoTm9uZSwgb3B0aW9u
cykKKyAgICBlbGlmIHBvcnRfbmFtZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtbWFjJyk6Cisg
ICAgICAgIHJldHVybiBDaHJvbWl1bUdwdU1hY1BvcnQoJ2Nocm9taXVtLWdwdS1tYWMnLCBvcHRp
b25zKQorICAgIGVsaWYgcG9ydF9uYW1lLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLWdwdS13aW4nKToK
KyAgICAgICAgcmV0dXJuIENocm9taXVtR3B1V2luUG9ydChOb25lLCBvcHRpb25zKQorICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vuc3VwcG9ydGVkIHBvcnQ6ICVzJyAlIHBvcnRfbmFt
ZSkKKworCitkZWYgX3NldF9ncHVfb3B0aW9ucyhvcHRpb25zKToKKyAgICBpZiBvcHRpb25zOgor
ICAgICAgICBpZiBvcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIGlzIE5vbmU6CisgICAg
ICAgICAgICBvcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc3RpbmcgPSBUcnVlCisgICAgICAgIGlm
IG9wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzIGlzIE5vbmU6CisgICAgICAgICAgICBvcHRp
b25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhcyA9IFRydWUKKworCitkZWYgX2dwdV9vdmVycmlkZXMo
cG9ydCk6CisgICAgdHJ5OgorICAgICAgICBvdmVycmlkZXNfcGF0aCA9IHBvcnQucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsICd0b29scycsCisgICAgICAgICAgICAnbGF5b3V0X3Rl
c3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25zX2dwdS50eHQnKQorICAgIGV4Y2VwdCBBc3NlcnRpb25F
cnJvcjoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3Zl
cnJpZGVzX3BhdGgpOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHdpdGggY29kZWNzLm9wZW4o
b3ZlcnJpZGVzX3BhdGgsICJyIiwgInV0Zi04IikgYXMgZmlsZToKKyAgICAgICAgcmV0dXJuIGZp
bGUucmVhZCgpCisKKworY2xhc3MgQ2hyb21pdW1HcHVMaW51eFBvcnQoY2hyb21pdW1fbGludXgu
Q2hyb21pdW1MaW51eFBvcnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9u
ZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIF9zZXRfZ3B1X29wdGlvbnMob3B0
aW9ucykKKyAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQuX19pbml0X18o
c2VsZiwgcG9ydF9uYW1lLCBvcHRpb25zKQorCisgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRo
KHNlbGYpOgorICAgICAgICByZXR1cm4gKFtzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hy
b21pdW0tZ3B1LWxpbnV4JyldICsKKyAgICAgICAgICAgICAgICBjaHJvbWl1bV9saW51eC5DaHJv
bWl1bUxpbnV4UG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKSkKKworICAgIGRlZiBwYXRo
X3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLAorICAgICAgICAg
ICAgJ2Nocm9taXVtLWdwdScsICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQorCisgICAgZGVmIHRl
c3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIF9ncHVfb3Zl
cnJpZGVzKHNlbGYpCisKKworY2xhc3MgQ2hyb21pdW1HcHVNYWNQb3J0KGNocm9taXVtX21hYy5D
aHJvbWl1bU1hY1BvcnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwg
b3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIF9zZXRfZ3B1X29wdGlvbnMob3B0aW9u
cykKKyAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5fX2luaXRfXyhzZWxmLCBw
b3J0X25hbWUsIG9wdGlvbnMpCisKKyAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6
CisgICAgICAgIHJldHVybiAoW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS1n
cHUtbWFjJyldICsKKyAgICAgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0
LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQorCisgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBl
Y3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCisgICAgICAgICAgICAnY2hyb21pdW0t
Z3B1JywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCisKKyAgICBkZWYgdGVzdF9leHBlY3RhdGlv
bnNfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gX2dwdV9vdmVycmlkZXMoc2VsZikK
KworCitjbGFzcyBDaHJvbWl1bUdwdVdpblBvcnQoY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9y
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZT1Ob25lLCBvcHRpb25zPU5vbmUs
ICoqa3dhcmdzKToKKyAgICAgICAgX3NldF9ncHVfb3B0aW9ucyhvcHRpb25zKQorICAgICAgICBj
aHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0Ll9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZSwgb3B0
aW9ucykKKworICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKKyAgICAgICAgcmV0
dXJuIChbc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS13aW4nKV0gKwor
ICAgICAgICAgICAgICAgIGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuYmFzZWxpbmVfc2Vh
cmNoX3BhdGgoc2VsZikpCisKKyAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxl
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91
dFRlc3RzJywgJ3BsYXRmb3JtJywKKyAgICAgICAgICAgICdjaHJvbWl1bS1ncHUnLCAndGVzdF9l
eHBlY3RhdGlvbnMudHh0JykKKworICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMo
c2VsZik6CisgICAgICAgIHJldHVybiBfZ3B1X292ZXJyaWRlcyhzZWxmKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
LnB5CmluZGV4IDU3MDRmNjU3ZmMzMDIxYzgxZjkwYTE3ZjYwNTJiODUyZDY1Y2IzODQuLjIwYWM1
YTdmYWYwYzZjMjQ0YWNlY2MwOTI1ZDA0ZjMxN2VhMDgyMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkK
QEAgLTc4LDYgKzc4LDkgQEAgZGVmIGdldChwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lKToK
ICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ3F0Jyk6CiAgICAgICAgIGltcG9ydCBx
dAogICAgICAgICByZXR1cm4gcXQuUXRQb3J0KHBvcnRfbmFtZSwgb3B0aW9ucykKKyAgICBlbGlm
IHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLWdwdScpOgorICAgICAgICBpbXBvcnQg
Y2hyb21pdW1fZ3B1CisgICAgICAgIHJldHVybiBjaHJvbWl1bV9ncHUuZ2V0KHBvcnRfdG9fdXNl
LCBvcHRpb25zKQogICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnY2hyb21pdW0tbWFj
Jyk6CiAgICAgICAgIGltcG9ydCBjaHJvbWl1bV9tYWMKICAgICAgICAgcmV0dXJuIGNocm9taXVt
X21hYy5DaHJvbWl1bU1hY1BvcnQocG9ydF9uYW1lLCBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9m
YWN0b3J5X3VuaXR0ZXN0LnB5CmluZGV4IGMwYTRjNWU1ZDQwMmY4NWRmMDkzNTBiODIxMGE1NGNl
OTMwODAxMDQuLjgxYzM3MzI3YTIwOTkyZWUwYzRjM2NkOWU4NGQzMTFkNmVhNDU5OGIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9y
dCBzeXMKIGltcG9ydCB1bml0dGVzdAogCitpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hy
b21pdW1fbGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKIGltcG9ydCBjaHJvbWl1bV93aW4KQEAg
LTEzMyw2ICsxMzQsMTUgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgog
ICAgIGRlZiB0ZXN0X3F0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJxdCIsIHF0
LlF0UG9ydCkKIAorICAgIGRlZiB0ZXN0X2Nocm9taXVtX2dwdV9saW51eChzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1LWxpbnV4IiwgY2hyb21pdW1fZ3B1LkNo
cm9taXVtR3B1TGludXhQb3J0KQorCisgICAgZGVmIHRlc3RfY2hyb21pdW1fZ3B1X21hYyhzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1LW1hYyIsIGNocm9taXVt
X2dwdS5DaHJvbWl1bUdwdU1hY1BvcnQpCisKKyAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfd2lu
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJjaHJvbWl1bS1ncHUtd2luIiwgY2hy
b21pdW1fZ3B1LkNocm9taXVtR3B1V2luUG9ydCkKKwogICAgIGRlZiB0ZXN0X2Nocm9taXVtX21h
YyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tbWFjIiwgY2hyb21p
dW1fbWFjLkNocm9taXVtTWFjUG9ydCkKICAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9y
dCgiZGFyd2luIiwgc2VsZi5jaHJvbWl1bV9vcHRpb25zLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBl
YjhlZTVmNWU5OGM3NWYwYTZhNDA2M2UxNTk1YzhhODkwYTc3ZGZjLi5mZDcwOTUyZDk1OTI2Mjlm
NDViZDY2M2YzYTFhNTJlNTBhNjkwZmIxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDE2LDYgKzQx
NiwxMiBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICAjIFRoZXNl
IGFyZSB1c2VkIGJ5IHRoZSBDaHJvbWl1bSBEUlQgcG9ydAogICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnVzZV9kcnQ6CiAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tdGVzdC1zaGVs
bCcpCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5n
OgorICAgICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0
ZWQtY29tcG9zaXRpbmcnKQorCisgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJh
dGVkXzJkX2NhbnZhczoKKyAgICAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5h
YmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZhcycpCisKICAgICAgICAgcmV0dXJuIGRyaXZlcl9hcmdz
CiAKICAgICBkZWYgc3RhcnQoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBm
ZDYzZGE5YzQ0OTdhNjc3MThhMzVlYmFlOThhNDUxOGM4ZjE3M2ZkLi5kN2JlY2ZkYWUxZWE2MDFk
OTliMzY5YjRkNjg3YTM4NjRmOWMwZDg2IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAg
LTE1MDcsNiArMTUwNywxOCBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUpOgogICAgICAgICBv
cHRwYXJzZS5tYWtlX29wdGlvbigiLS11c2UtZHJ0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAg
ICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBoZWxwPSJVc2UgRHVtcFJlbmRl
clRyZWUgaW5zdGVhZCBvZiB0ZXN0X3NoZWxsIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsCisgICAgICAgICAgICBoZWxwPSJVc2UgaGFyZHdhcmUtYWNjZWxhdGVkIGNvbXBv
c2l0aW5nIGZvciByZW5kZXJpbmciKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
bm8tYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmciLAorICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9m
YWxzZSIsCisgICAgICAgICAgICBoZWxwPSJEb24ndCB1c2UgaGFyZHdhcmUtYWNjZWxhdGVkIGNv
bXBvc2l0aW5nIGZvciByZW5kZXJpbmciKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24o
Ii0tYWNjZWxlcmF0ZWQtMmQtY2FudmFzIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCisgICAgICAgICAgICBoZWxwPSJVc2UgaGFyZHdhcmUtYWNjZWxhdGVkIDJEIENhbnZhcyBj
YWxscyIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1uby1hY2NlbGVyYXRlZC0y
ZC1jYW52YXMiLAorICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAg
ICBoZWxwPSJEb24ndCB1c2UgaGFyZHdhcmUtYWNjZWxhdGVkIDJEIENhbnZhcyBjYWxscyIpLAog
ICAgIF0KIAogICAgICMgTWlzc2luZyBNYWMtc3BlY2lmaWMgb2xkLXJ1bi13ZWJraXQtdGVzdHMg
b3B0aW9uczoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4
IGUzOTE0ZTg1YjYzZDQ0NzkyZWY1NWM3NWRlOTNkMmYzNmFhOGM3YTUuLjFkNDkyNDEzYWZhNmJi
NzlmNzk2NmRmOWM4N2NjZmI0M2MyMjM3MGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c191bml0dGVzdC5weQpAQCAtOTEsNiArOTEsMTYgQEAgZGVmIGxvZ2dpbmdfcnVuKGFyZ3M9
W10sIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKIAogCiBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmcoc2VsZik6Cisg
ICAgICAgICMgVGhpcyBqdXN0IHRlc3RzIHRoYXQgd2UgcmVjb2duaXplIHRoZSBjb21tYW5kIGxp
bmUgYXJncworICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLWFjY2VsZXJh
dGVkLWNvbXBvc2l0aW5nJ10pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4o
WyctLW5vLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJ10pKQorCisgICAgZGVmIHRlc3RfYWNjZWxl
cmF0ZWRfMmRfY2FudmFzKHNlbGYpOgorICAgICAgICAjIFRoaXMganVzdCB0ZXN0cyB0aGF0IHdl
IHJlY29nbml6ZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBhc3NpbmdfcnVuKFsnLS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnXSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tbm8tYWNjZWxlcmF0ZWQtMmQtY2FudmFzJ10pKQor
CiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNz
aW5nX3J1bigpKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68323</attachid>
            <date>2010-09-21 18:47:21 -0700</date>
            <delta_ts>2010-09-21 19:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46225-20100921184720.patch</filename>
            <type>text/plain</type>
            <size>21230</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Njk1NDI0NjA3ZTdlYzA4ZThhMWE3NWFlNGU3ZWEzNDkyOGRjYzU0Li4yODQ5YzFh
ZGVhZDBhZmIxM2ZiODU1ZDcyNzQ3N2E3MzBhY2RmOTA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBwbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtKiBkaXJlY3RvcmllcyBmb3IgaG9sZGluZyB0aGUKKyAgICAgICAgR1BVLWFj
Y2VsZXJhdGVkIGJhc2VsaW5lcyBhbmQgZXhwZWN0YXRpb25zIGZvciBDaHJvbWl1bS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjUKKworICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dDogQWRkZWQu
CisKIDIwMTAtMDktMjEgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLWdwdS1saW51eC9SRUFETUUudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdhM2M2MTcxYzQzNDA0
Njg2YTlhOGUxNDJkYTUxZDA1ZjY1OGYxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLWdwdS1saW51eC9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAor
VGhpcyBkaXJlY3RvcnkgaXMgYSBwbGFjZWhvbGRlciBzbyB0aGF0IEdpdCB3aWxsIGNyZWF0ZSBp
dDsgaXQgc2hvdWxkIGhvbGQKK3RoZSBiYXNlbGluZXMgZm9yIHRoZSBHUFUgYWNjZWxlcmF0ZWQg
dGVzdHMgZm9yIENocm9taXVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tZ3B1LW1hYy9SRUFETUUudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
Z3B1LW1hYy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3YTNjNjE3MWM0MzQwNDY4NmE5YThlMTQy
ZGE1MWQwNWY2NThmMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQKQEAgLTAsMCArMSwyIEBACitUaGlzIGRpcmVjdG9y
eSBpcyBhIHBsYWNlaG9sZGVyIHNvIHRoYXQgR2l0IHdpbGwgY3JlYXRlIGl0OyBpdCBzaG91bGQg
aG9sZAordGhlIGJhc2VsaW5lcyBmb3IgdGhlIEdQVSBhY2NlbGVyYXRlZCB0ZXN0cyBmb3IgQ2hy
b21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUtd2lu
L1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUtd2luL1JFQURN
RS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzdhM2M2MTcxYzQzNDA0Njg2YTlhOGUxNDJkYTUxZDA1ZjY1OGYx
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS13
aW4vUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMgZGlyZWN0b3J5IGlzIGEgcGxhY2Vo
b2xkZXIgc28gdGhhdCBHaXQgd2lsbCBjcmVhdGUgaXQ7IGl0IHNob3VsZCBob2xkCit0aGUgYmFz
ZWxpbmVzIGZvciB0aGUgR1BVIGFjY2VsZXJhdGVkIHRlc3RzIGZvciBDaHJvbWl1bS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUvdGVzdF9leHBlY3RhdGlv
bnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZkZDk1YjA4MTliOWE0OTNkNDdmNmI0ZjAxYTk3NjJjYzRiMTJk
NGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUv
dGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0wLDAgKzEsNTMgQEAKKy8vIFRoaXMgZmlsZSBpbmRp
Y2F0ZXMgdGhlIGV4cGVjdGF0aW9ucyBmb3IgcnVubmluZyBDaHJvbWl1bSB1bmRlcgorLy8gdGhl
IEdQVS1hY2NlbGVyYXRlZCBjb2RlcGF0aHMgYXMgZGVmaW5lZCBpbgorLy8gV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKKy8vCisv
LyBXZSBza2lwIG1vc3Qgb2YgdGhlIHRlc3RzIGluIHRoZSByZXBvc2l0b3J5IGJlY2F1c2UgdGhl
eSBkb24ndCB0cmlnZ2VyCisvLyB0aGUgYWNjZWxlcmF0ZWQgY29kZSBwYXRocy4gV2UgYWN0dWFs
bHkgb25seSBydW4gdGhlIGNhbnZhcyBhbmQKKy8vIGNvbXBvc2l0aW5nIHRlc3RzLgorV09OVEZJ
WCBTS0lQIDogYWNjZXNzaWJpbGl0eSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogYW5pbWF0
aW9ucyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogY2FudmFzID0gUEFTUyBGQUlMCitXT05U
RklYIFNLSVAgOiBjc3MxID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBjc3MyLjEgPSBQQVNT
IEZBSUwKK1dPTlRGSVggU0tJUCA6IGNzczMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGRv
bSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogZWRpdGluZyA9IFBBU1MgRkFJTAorV09OVEZJ
WCBTS0lQIDogZmFzdCA9IFBBU1MgRkFJTAorCitXT05URklYIFNLSVAgOiBmb250cyA9IFBBU1Mg
RkFJTAorV09OVEZJWCBTS0lQIDogZnVsbHNjcmVlbiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQ
IDogaHRtbDVsaWIgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGh0dHAgPSBQQVNTIEZBSUwK
K1dPTlRGSVggU0tJUCA6IGlldGVzdGNlbnRlciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDog
aW5zcGVjdG9yID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBqYXZhID0gUEFTUyBGQUlMCitX
T05URklYIFNLSVAgOiBsb2FkZXIgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IG1hdGhtbCA9
IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogbWVkaWEgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IHBlcmYgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHBsYXRmb3JtID0gUEFTUyBGQUlM
CitXT05URklYIFNLSVAgOiBwbHVnaW5zID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBwcmlu
dGluZyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogcmVzb3VyY2VzID0gUEFTUyBGQUlMCitX
T05URklYIFNLSVAgOiBzY3JvbGxiYXJzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzZWN1
cml0eSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogc3RvcmFnZSA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIDogc3ZnID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiB0YWJsZXMgPSBQQVNT
IEZBSUwKK1dPTlRGSVggU0tJUCA6IHRyYW5zZm9ybXMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IHRyYW5zaXRpb25zID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiB0cmF2ZXJzYWwgPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHVzZXJzY3JpcHRzID0gUEFTUyBGQUlMCitXT05URklY
IFNLSVAgOiB3ZWJhcmNoaXZlID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiB3ZWJzb2NrZXQg
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHdtbCA9IFBBU1MgRkFJTAorCisvLyAoVGhlc2Ug
YXJlIHRoZSB0ZXN0cyB3ZSBhY3R1YWxseSBydW4gYW5kIGV4cGVjdCB0byBwYXNzKQorQlVHTk9O
RSA6IGNvbXBvc2l0aW5nID0gUEFTUyBGQUlMCitCVUdOT05FIDogZmFzdC9jYW52YXMgPSBQQVNT
IEZBSUwKK0JVR05PTkUgOiBjYW52YXMvcGhpbGlwID0gUEFTUyBGQUlMCisKKy8vCisvLyBBY3R1
YWwgZmFpbHVyZSBzdXBwcmVzc2lvbnMgc2hvdWxkIGdvIGJlbG93IHRoaXMgbGluZQorLy8KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpp
bmRleCA1MzhjZjMyMjJiYWQyYzMzMDExMzdhM2ZjYTU4NTg2NDQ1ZDY3ZWM4Li45ODNmMTFlMjNl
NmQ2ZTgxZGU4NmU2ZDI4MmMwNTJkNjcwYmQwZDdlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIw
MTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgJ2Nocm9taXVtLWdw
dScgc2V0IG9mIHBvcnRzIHRoYXQgd2lsbCB0ZXN0IHRoZSBhY2NlbGVyYXRlZAorICAgICAgICBH
UFUgcGF0aHMuIFRoaXMgcGF0Y2ggYWRkczoKKworICAgICAgICAtIHN1cHBvcnQgZm9yIHRoZSAn
LS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZycgYW5kCisgICAgICAgICAgJ2FjY2VsZXJhdGVkLTJk
LWNhbnZhcycgZmxhZ3MgdG8gbmV3LXJ1bi13ZWJraXQtdGVzdHMgKGFuZCB0aGUKKyAgICAgICAg
ICAnbm8tJyBmbGFncykKKyAgICAgICAgLSBhZGRzIGEgbmV3IHNldCBvZiBQb3J0cyB0aGF0IHdp
bGwgbG9vayB1bmRlcgorICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtLWdwdS0kT1MvIGZvciBi
YXNlbGluZXMgYmVmb3JlIGxvb2tpbmcgaW4gdGhlCisgICAgICAgICAgcmVndWxhciBjaHJvbWl1
bSBzZWFyY2ggcGF0aAorICAgICAgICAtIGFkZHMgYSBuZXcgdGVzdF9leHBlY3RhdGlvbnMudHh0
IGZpbGUgaW4gcGxhdGZvcm0vY2hyb21pdW0tZ3B1CisgICAgICAgICAgdGhhdCBza2lwcyBhbGwg
YnV0IHRoZSB0ZXN0cyB3ZSBhY3R1YWxseSB3YW50IHRvIHJ1biB3aXRoCisgICAgICAgICAgYWNj
ZWxlcmF0aW9uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggd2lsbCBhbGxvdyB1cyB0byBydW4gYm90
aCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbgorICAgICAgICBhbmQgdG8gY2hhbmdlIHRo
ZSBkZWZhdWx0cyBmb3IgYm90aCB0aGUgcmVndWxhciBhbmQgLWdwdSBvcHRpb25zCisgICAgICAg
IGFzIHRoZSBjb2RlIGV2b2x2ZXMuCisKKyAgICAgICAgV2UgcGxhbiB0byBhZGQgYm90aCAtLWNo
cm9taXVtLSRPUyBhbmQgLS1jaHJvbWl1bS1ncHUtJE9TIHJ1bnMgdG8KKyAgICAgICAgZWFjaCB0
ZXN0IGJvdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDYyMjUKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9ncHUucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9mYWN0b3J5LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5OgorCisyMDEwLTA5LTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VA
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KIAogICAgICAg
ICBEb24ndCBwYXNzIHRoZSAtLXRlc3Qtc2hlbGwgYXJnIHRvIHRoZSBDaHJvbWl1bSBNYWMgcG9y
dCBvZiBEUlQ7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBkYjNkYzM0ZTJmZGNjY2QyMmVlZjEy
ZmVmZDJmM2ZkZWZhMTk1ZWM4Li4zM2M4NDlhY2JkOTMxMmY2ZGU4OTNhZDNhYTU1MWM0YTI0YWY2
NGNhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBDaHJv
bWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgIyBGSVhNRTogVGhpcyBkcnRfb3ZlcnJpZGVz
IGhhbmRsaW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNoCiAgICAgICAgICMgZnJv
bSB0ZXNfc2hlbGwgdG8gRFJULgogICAgICAgICBkcnRfb3ZlcnJpZGVzID0gJycKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zIGFuZCBz
ZWxmLl9vcHRpb25zLnVzZV9kcnQ6CiAgICAgICAgICAgICBkcnRfb3ZlcnJpZGVzX3BhdGggPSBz
ZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLAogICAgICAgICAgICAgICAg
ICdwbGF0Zm9ybScsICdjaHJvbWl1bScsICdkcnRfZXhwZWN0YXRpb25zLnR4dCcpCiAgICAgICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkcnRfb3ZlcnJpZGVzX3BhdGgpOgpAQCAtMzYwLDYgKzM2
MCwxMiBAQCBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAKICAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucy5ncF9mYXVsdF9lcnJvcl9ib3g6CiAgICAgICAgICAgICBkcml2ZXJfYXJn
cy5hcHBlbmQoJy0tZ3AtZmF1bHQtZXJyb3ItYm94JykKKworICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nOgorICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBw
ZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZycpCisKKyAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52YXM6CisgICAgICAgICAgICBkcml2ZXJfYXJn
cy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZhcycpCiAgICAgICAgIHJldHVy
biBkcml2ZXJfYXJncwogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2dwdS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzBhMWEwYTcxZWVlNjljNGVkYzExMjdhMWQxOTExY2YxOWMz
MTExCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKQEAgLTAsMCArMSwxMzcgQEAKKyMhL3Vzci9i
aW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitpbXBvcnQg
Y2hyb21pdW1fbGludXgKK2ltcG9ydCBjaHJvbWl1bV9tYWMKK2ltcG9ydCBjaHJvbWl1bV93aW4K
KworCitkZWYgZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucyk6CisgICAgIiIiU29tZSB0ZXN0cyBoYXZl
IHNsaWdodGx5IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gcnVuIHdoaWxlIHVzaW5nCisgICAgaGFy
ZHdhcmUgYWNjZWxlcmF0aW9uLiAgSW4gdGhvc2UgY2FzZXMsIHdlIHByZXBlbmQgYW4gYWRkaXRp
b25hbCBkaXJlY3RvcnkKKyAgICB0byB0aGUgYmFzZWxpbmUgcGF0aHMuIiIiCisgICAgaWYgcG9y
dF9uYW1lID09ICdjaHJvbWl1bS1ncHUnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdj
eWd3aW4nLCAnd2luMzInKToKKyAgICAgICAgICAgIHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1ncHUt
d2luJworICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnbGludXgyJzoKKyAgICAgICAgICAg
IHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1ncHUtbGludXgnCisgICAgICAgIGVsaWYgc3lzLnBsYXRm
b3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWdwdS1t
YWMnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCd1bnN1cHBvcnRlZCBwbGF0Zm9ybTogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3lzLnBsYXRmb3JtKQorCisgICAgaWYgcG9ydF9uYW1lID09ICdjaHJvbWl1
bS1ncHUtbGludXgnOgorICAgICAgICByZXR1cm4gQ2hyb21pdW1HcHVMaW51eFBvcnQoTm9uZSwg
b3B0aW9ucykKKworICAgIGlmIHBvcnRfbmFtZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtbWFj
Jyk6CisgICAgICAgIHJldHVybiBDaHJvbWl1bUdwdU1hY1BvcnQoTm9uZSwgb3B0aW9ucykKKwor
ICAgIGlmIHBvcnRfbmFtZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtd2luJyk6CisgICAgICAg
IHJldHVybiBDaHJvbWl1bUdwdVdpblBvcnQoTm9uZSwgb3B0aW9ucykKKworICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoJ3Vuc3VwcG9ydGVkIHBvcnQ6ICVzJyAlIHBvcnRfbmFtZSkKKwor
CitkZWYgX3NldF9ncHVfb3B0aW9ucyhvcHRpb25zKToKKyAgICBpZiBvcHRpb25zOgorICAgICAg
ICBpZiBvcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIGlzIE5vbmU6CisgICAgICAgICAg
ICBvcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc3RpbmcgPSBUcnVlCisgICAgICAgIGlmIG9wdGlv
bnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzIGlzIE5vbmU6CisgICAgICAgICAgICBvcHRpb25zLmFj
Y2VsZXJhdGVkXzJkX2NhbnZhcyA9IFRydWUKKworCitkZWYgX2dwdV9vdmVycmlkZXMocG9ydCk6
CisgICAgdHJ5OgorICAgICAgICBvdmVycmlkZXNfcGF0aCA9IHBvcnQucGF0aF9mcm9tX2Nocm9t
aXVtX2Jhc2UoJ3dlYmtpdCcsICd0b29scycsCisgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzJywg
J3Rlc3RfZXhwZWN0YXRpb25zX2dwdS50eHQnKQorICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoK
KyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3ZlcnJpZGVz
X3BhdGgpOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHdpdGggY29kZWNzLm9wZW4ob3ZlcnJp
ZGVzX3BhdGgsICJyIiwgInV0Zi04IikgYXMgZmlsZToKKyAgICAgICAgcmV0dXJuIGZpbGUucmVh
ZCgpCisKKworY2xhc3MgQ2hyb21pdW1HcHVMaW51eFBvcnQoY2hyb21pdW1fbGludXguQ2hyb21p
dW1MaW51eFBvcnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X25hbWU9Tm9uZSwgb3B0
aW9ucz1Ob25lKToKKyAgICAgICAgaWYgcG9ydF9uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBw
b3J0X25hbWUgPSAnY2hyb21pdW0tZ3B1LWxpbnV4JworICAgICAgICBfc2V0X2dwdV9vcHRpb25z
KG9wdGlvbnMpCisgICAgICAgIGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0Ll9faW5p
dF9fKHNlbGYsIHBvcnRfbmFtZSwgb3B0aW9ucykKKworICAgIGRlZiBiYXNlbGluZV9zZWFyY2hf
cGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuIChbc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgo
J2Nocm9taXVtLWdwdS1saW51eCcpXSArCisgICAgICAgICAgICAgICAgY2hyb21pdW1fbGludXgu
Q2hyb21pdW1MaW51eFBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZikpCisKKyAgICBkZWYg
cGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKKyAgICAg
ICAgICAgICdjaHJvbWl1bS1ncHUnLCAndGVzdF9leHBlY3RhdGlvbnMudHh0JykKKworICAgIGRl
ZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAgIHJldHVybiBfZ3B1
X292ZXJyaWRlcyhzZWxmKQorCisKK2NsYXNzIENocm9taXVtR3B1TWFjUG9ydChjaHJvbWl1bV9t
YWMuQ2hyb21pdW1NYWNQb3J0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9uYW1lPU5v
bmUsIG9wdGlvbnM9Tm9uZSk6CisgICAgICAgIGlmIHBvcnRfbmFtZSBpcyBOb25lOgorICAgICAg
ICAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWdwdS1tYWMnCisgICAgICAgIF9zZXRfZ3B1X29w
dGlvbnMob3B0aW9ucykKKyAgICAgICAgY2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydC5fX2lu
aXRfXyhzZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMpCisKKyAgICBkZWYgYmFzZWxpbmVfc2VhcmNo
X3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiAoW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRo
KCdjaHJvbWl1bS1ncHUtbWFjJyldICsKKyAgICAgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hy
b21pdW1NYWNQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQorCisgICAgZGVmIHBhdGhf
dG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCisgICAgICAgICAg
ICAnY2hyb21pdW0tZ3B1JywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCisKKyAgICBkZWYgdGVz
dF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gX2dwdV9vdmVy
cmlkZXMoc2VsZikKKworCitjbGFzcyBDaHJvbWl1bUdwdVdpblBvcnQoY2hyb21pdW1fd2luLkNo
cm9taXVtV2luUG9ydCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfbmFtZT1Ob25lLCBv
cHRpb25zPU5vbmUpOgorICAgICAgICBpZiBwb3J0X25hbWUgaXMgTm9uZToKKyAgICAgICAgICAg
IHBvcnRfbmFtZSA9ICdjaHJvbWl1bS1ncHUtd2luJyArIHNlbGYudmVyc2lvbigpCisgICAgICAg
IF9zZXRfZ3B1X29wdGlvbnMob3B0aW9ucykKKyAgICAgICAgY2hyb21pdW1fd2luLkNocm9taXVt
V2luUG9ydC5fX2luaXRfXyhzZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMpCisKKyAgICBkZWYgYmFz
ZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiAoW3NlbGYuX3dlYmtpdF9i
YXNlbGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtd2luJyldICsKKyAgICAgICAgICAgICAgICBjaHJv
bWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQorCisg
ICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgcmV0
dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScs
CisgICAgICAgICAgICAnY2hyb21pdW0tZ3B1JywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCisK
KyAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgICByZXR1
cm4gX2dwdV9vdmVycmlkZXMoc2VsZikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVf
dW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBkMjBkMTY2N2Q4OWY0MjE3NGNjMWEwYTcwYjRiMDlm
OGFjZDg5MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTgg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQg
Y2hyb21pdW1fZ3B1CisKKworY2xhc3MgQ2hyb21pdW1HcHVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICBkZWYgdGVzdF9nZXRfY2hyb21pdW1fZ3B1X2xpbnV4KHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydE92ZXJyaWRlc1dvcmtlZCgnY2hyb21pdW0tZ3B1LWxpbnV4JykKKworICAgIGRl
ZiB0ZXN0X2dldF9jaHJvbWl1bV9ncHVfbWFjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE92
ZXJyaWRlc1dvcmtlZCgnY2hyb21pdW0tZ3B1LW1hYycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2hy
b21pdW1fZ3B1X3dpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRPdmVycmlkZXNXb3JrZWQo
J2Nocm9taXVtLWdwdS13aW4nKQorCisgICAgZGVmIGFzc2VydE92ZXJyaWRlc1dvcmtlZChzZWxm
LCBwb3J0X25hbWUpOgorICAgICAgICAjIHRlc3QgdGhhdCB3ZSBnb3QgdGhlIHJpZ2h0IHBvcnQK
KyAgICAgICAgcG9ydCA9IGNocm9taXVtX2dwdS5nZXQocG9ydF9uYW1lLCBOb25lKQorCisgICAg
ICAgICMgd2UgdXNlIHN0YXJ0c3dpdGgoKSBpbnN0ZWFkIG9mIEVxdWFsIHRvIGdsb3NzIG92ZXIg
cGxhdGZvcm0gdmVyc2lvbnMuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Lm5hbWUoKS5z
dGFydHN3aXRoKHBvcnRfbmFtZSkpCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXQgaGFzIHRoZSBy
aWdodCBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgdGhlIHNlYXJjaCBwYXRoLgorICAgICAgICBwYXRo
ID0gcG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCgpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgocG9ydF9uYW1lKSwgcGF0aCkKKworICAgICAg
ICAjIHRlc3QgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBleHBlY3RhdGlvbnMgZmlsZS4KKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCdjaHJvbWl1bS1ncHUnIGluCisgICAgICAgICAgICAgICAgICAg
ICAgICBwb3J0LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpKQorCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5Cmlu
ZGV4IDU3MDRmNjU3ZmMzMDIxYzgxZjkwYTE3ZjYwNTJiODUyZDY1Y2IzODQuLjIwYWM1YTdmYWYw
YzZjMjQ0YWNlY2MwOTI1ZDA0ZjMxN2VhMDgyMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkKQEAgLTc4
LDYgKzc4LDkgQEAgZGVmIGdldChwb3J0X25hbWU9Tm9uZSwgb3B0aW9ucz1Ob25lKToKICAgICBl
bGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dpdGgoJ3F0Jyk6CiAgICAgICAgIGltcG9ydCBxdAogICAg
ICAgICByZXR1cm4gcXQuUXRQb3J0KHBvcnRfbmFtZSwgb3B0aW9ucykKKyAgICBlbGlmIHBvcnRf
dG9fdXNlLnN0YXJ0c3dpdGgoJ2Nocm9taXVtLWdwdScpOgorICAgICAgICBpbXBvcnQgY2hyb21p
dW1fZ3B1CisgICAgICAgIHJldHVybiBjaHJvbWl1bV9ncHUuZ2V0KHBvcnRfdG9fdXNlLCBvcHRp
b25zKQogICAgIGVsaWYgcG9ydF90b191c2Uuc3RhcnRzd2l0aCgnY2hyb21pdW0tbWFjJyk6CiAg
ICAgICAgIGltcG9ydCBjaHJvbWl1bV9tYWMKICAgICAgICAgcmV0dXJuIGNocm9taXVtX21hYy5D
aHJvbWl1bU1hY1BvcnQocG9ydF9uYW1lLCBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
X3VuaXR0ZXN0LnB5CmluZGV4IGMwYTRjNWU1ZDQwMmY4NWRmMDkzNTBiODIxMGE1NGNlOTMwODAx
MDQuLjgxYzM3MzI3YTIwOTkyZWUwYzRjM2NkOWU4NGQzMTFkNmVhNDU5OGIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91
bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9ydCBzeXMK
IGltcG9ydCB1bml0dGVzdAogCitpbXBvcnQgY2hyb21pdW1fZ3B1CiBpbXBvcnQgY2hyb21pdW1f
bGludXgKIGltcG9ydCBjaHJvbWl1bV9tYWMKIGltcG9ydCBjaHJvbWl1bV93aW4KQEAgLTEzMyw2
ICsxMzQsMTUgQEAgY2xhc3MgRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X3F0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJxdCIsIHF0LlF0UG9y
dCkKIAorICAgIGRlZiB0ZXN0X2Nocm9taXVtX2dwdV9saW51eChzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1LWxpbnV4IiwgY2hyb21pdW1fZ3B1LkNocm9taXVt
R3B1TGludXhQb3J0KQorCisgICAgZGVmIHRlc3RfY2hyb21pdW1fZ3B1X21hYyhzZWxmKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1LW1hYyIsIGNocm9taXVtX2dwdS5D
aHJvbWl1bUdwdU1hY1BvcnQpCisKKyAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfd2luKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9wb3J0KCJjaHJvbWl1bS1ncHUtd2luIiwgY2hyb21pdW1f
Z3B1LkNocm9taXVtR3B1V2luUG9ydCkKKwogICAgIGRlZiB0ZXN0X2Nocm9taXVtX21hYyhzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tbWFjIiwgY2hyb21pdW1fbWFj
LkNocm9taXVtTWFjUG9ydCkKICAgICAgICAgc2VsZi5hc3NlcnRfcGxhdGZvcm1fcG9ydCgiZGFy
d2luIiwgc2VsZi5jaHJvbWl1bV9vcHRpb25zLApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCAzNzRlZjQ0
NWIyZDQ5YWU1NGYxMTMxZmJkMjRmYjY4NWY5Yzk4NmY5Li45Y2Q1OGU5OTU4Mzk1OTk2MTAzN2I4
N2QxMjhlYTA3YmYwNDQxNmI1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDE0LDYgKzQxNCwxMyBA
QCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICAgICBpZiBzZWxmLl9pbWFn
ZV9wYXRoOgogICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLXBpeGVsLXRlc3RzJykK
IAorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kcnQ6CisgICAgICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmFjY2VsZXJhdGVkX2NvbXBvc2l0aW5nOgorICAgICAgICAgICAgICAgIGRyaXZl
cl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcnKQorCisgICAg
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmFjY2VsZXJhdGVkXzJkX2NhbnZhczoKKyAgICAgICAg
ICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLTJkLWNhbnZh
cycpCisKICAgICAgICAgcmV0dXJuIGRyaXZlcl9hcmdzCiAKICAgICBkZWYgc3RhcnQoc2VsZik6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBmZDYzZGE5YzQ0OTdhNjc3MThhMzVlYmFl
OThhNDUxOGM4ZjE3M2ZkLi5jMDhlYjQ4YzlmNDVkMWMzYmVhNGYzNmQ1ZjAyOThiNTIyNWJjZWUx
IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTE1MDcsNiArMTUwNywyMCBAQCBkZWYg
cGFyc2VfYXJncyhhcmdzPU5vbmUpOgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS11
c2UtZHJ0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2Us
CiAgICAgICAgICAgICBoZWxwPSJVc2UgRHVtcFJlbmRlclRyZWUgaW5zdGVhZCBvZiB0ZXN0X3No
ZWxsIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWFjY2VsZXJhdGVkLWNvbXBv
c2l0aW5nIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICBo
ZWxwPSJVc2UgaGFyZHdhcmUtYWNjZWxhdGVkIGNvbXBvc2l0aW5nIGZvciByZW5kZXJpbmciKSwK
KyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbm8tYWNjZWxlcmF0ZWQtY29tcG9zaXRp
bmciLAorICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICBkZXN0
PSJhY2NlbGVyYXRlZF9jb21wb3NpdGluZyIsCisgICAgICAgICAgICBoZWxwPSJEb24ndCB1c2Ug
aGFyZHdhcmUtYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIHJlbmRlcmluZyIpLAorICAgICAg
ICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1hY2NlbGVyYXRlZC0yZC1jYW52YXMiLAorICAgICAg
ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgIGhlbHA9IlVzZSBoYXJkd2Fy
ZS1hY2NlbGVyYXRlZCAyRCBDYW52YXMgY2FsbHMiKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9v
cHRpb24oIi0tbm8tYWNjZWxlcmF0ZWQtMmQtY2FudmFzIiwKKyAgICAgICAgICAgIGFjdGlvbj0i
c3RvcmVfZmFsc2UiLAorICAgICAgICAgICAgZGVzdD0iYWNjZWxlcmF0ZWRfMmRfY2FudmFzIiwK
KyAgICAgICAgICAgIGhlbHA9IkRvbid0IHVzZSBoYXJkd2FyZS1hY2NlbGVyYXRlZCAyRCBDYW52
YXMgY2FsbHMiKSwKICAgICBdCiAKICAgICAjIE1pc3NpbmcgTWFjLXNwZWNpZmljIG9sZC1ydW4t
d2Via2l0LXRlc3RzIG9wdGlvbnM6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0
dGVzdC5weQppbmRleCBlMzkxNGU4NWI2M2Q0NDc5MmVmNTVjNzVkZTkzZDJmMzZhYThjN2E1Li4x
ZDQ5MjQxM2FmYTZiYjc5Zjc5NjZkZjljODdjY2ZiNDNjMjIzNzBkIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTkxLDYgKzkxLDE2IEBAIGRlZiBsb2dn
aW5nX3J1bihhcmdzPVtdLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSk6CiAKIAogY2xhc3MgTWFpblRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2FjY2VsZXJhdGVkX2NvbXBvc2l0
aW5nKHNlbGYpOgorICAgICAgICAjIFRoaXMganVzdCB0ZXN0cyB0aGF0IHdlIHJlY29nbml6ZSB0
aGUgY29tbWFuZCBsaW5lIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVu
KFsnLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHBhc3NpbmdfcnVuKFsnLS1uby1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyddKSkKKworICAgIGRl
ZiB0ZXN0X2FjY2VsZXJhdGVkXzJkX2NhbnZhcyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGp1c3Qg
dGVzdHMgdGhhdCB3ZSByZWNvZ25pemUgdGhlIGNvbW1hbmQgbGluZSBhcmdzCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tYWNjZWxlcmF0ZWQtMmQtY2FudmFzJ10pKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLW5vLWFjY2VsZXJhdGVkLTJk
LWNhbnZhcyddKSkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLmFz
c2VydFRydWUocGFzc2luZ19ydW4oKSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68331</attachid>
            <date>2010-09-21 19:59:51 -0700</date>
            <delta_ts>2010-09-21 20:28:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46225-20100921195950.patch</filename>
            <type>text/plain</type>
            <size>22565</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZTNhOWJiMDVhMzg4ZjgyZDY0NDk0ZDI1MmU2ZGJmMmNhY2E2MjZjLi43YzY4OGE5
NjdmMjA0MjVmMWZmMTgzODBjODk3ZmUzYzhhNDJhZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBwbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtKiBkaXJlY3RvcmllcyBmb3IgaG9sZGluZyB0aGUKKyAgICAgICAgR1BVLWFj
Y2VsZXJhdGVkIGJhc2VsaW5lcyBhbmQgZXhwZWN0YXRpb25zIGZvciBDaHJvbWl1bS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjUKKworICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dDogQWRkZWQu
CisKIDIwMTAtMDktMjEgIEFuZHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY3OTgyLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
N2EzYzYxNzFjNDM0MDQ2ODZhOWE4ZTE0MmRhNTFkMDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQKQEAg
LTAsMCArMSwyIEBACitUaGlzIGRpcmVjdG9yeSBpcyBhIHBsYWNlaG9sZGVyIHNvIHRoYXQgR2l0
IHdpbGwgY3JlYXRlIGl0OyBpdCBzaG91bGQgaG9sZAordGhlIGJhc2VsaW5lcyBmb3IgdGhlIEdQ
VSBhY2NlbGVyYXRlZCB0ZXN0cyBmb3IgQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdhM2M2MTcxYzQz
NDA0Njg2YTlhOGUxNDJkYTUxZDA1ZjY1OGYxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAK
K1RoaXMgZGlyZWN0b3J5IGlzIGEgcGxhY2Vob2xkZXIgc28gdGhhdCBHaXQgd2lsbCBjcmVhdGUg
aXQ7IGl0IHNob3VsZCBob2xkCit0aGUgYmFzZWxpbmVzIGZvciB0aGUgR1BVIGFjY2VsZXJhdGVk
IHRlc3RzIGZvciBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWdwdS13aW4vUkVBRE1FLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWdwdS13aW4vUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2EzYzYxNzFjNDM0MDQ2ODZhOWE4ZTE0
MmRhNTFkMDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBkaXJlY3Rv
cnkgaXMgYSBwbGFjZWhvbGRlciBzbyB0aGF0IEdpdCB3aWxsIGNyZWF0ZSBpdDsgaXQgc2hvdWxk
IGhvbGQKK3RoZSBiYXNlbGluZXMgZm9yIHRoZSBHUFUgYWNjZWxlcmF0ZWQgdGVzdHMgZm9yIENo
cm9taXVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRkOTViMDgxOWI5YTQ5M2Q0N2Y2YjRm
MDFhOTc2MmNjNGIxMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTAsMCArMSw1MyBAQAorLy8g
VGhpcyBmaWxlIGluZGljYXRlcyB0aGUgZXhwZWN0YXRpb25zIGZvciBydW5uaW5nIENocm9taXVt
IHVuZGVyCisvLyB0aGUgR1BVLWFjY2VsZXJhdGVkIGNvZGVwYXRocyBhcyBkZWZpbmVkIGluCisv
LyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2dwdS5weQorLy8KKy8vIFdlIHNraXAgbW9zdCBvZiB0aGUgdGVzdHMgaW4gdGhlIHJlcG9zaXRv
cnkgYmVjYXVzZSB0aGV5IGRvbid0IHRyaWdnZXIKKy8vIHRoZSBhY2NlbGVyYXRlZCBjb2RlIHBh
dGhzLiBXZSBhY3R1YWxseSBvbmx5IHJ1biB0aGUgY2FudmFzIGFuZAorLy8gY29tcG9zaXRpbmcg
dGVzdHMuCitXT05URklYIFNLSVAgOiBhY2Nlc3NpYmlsaXR5ID0gUEFTUyBGQUlMCitXT05URklY
IFNLSVAgOiBhbmltYXRpb25zID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBjYW52YXMgPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGNzczEgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6
IGNzczIuMSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogY3NzMyA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIDogZG9tID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBlZGl0aW5nID0gUEFT
UyBGQUlMCitXT05URklYIFNLSVAgOiBmYXN0ID0gUEFTUyBGQUlMCisKK1dPTlRGSVggU0tJUCA6
IGZvbnRzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBmdWxsc2NyZWVuID0gUEFTUyBGQUlM
CitXT05URklYIFNLSVAgOiBodG1sNWxpYiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogaHR0
cCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogaWV0ZXN0Y2VudGVyID0gUEFTUyBGQUlMCitX
T05URklYIFNLSVAgOiBpbnNwZWN0b3IgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGphdmEg
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGxvYWRlciA9IFBBU1MgRkFJTAorV09OVEZJWCBT
S0lQIDogbWF0aG1sID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBtZWRpYSA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIDogcGVyZiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogcGxhdGZv
cm0gPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHBsdWdpbnMgPSBQQVNTIEZBSUwKK1dPTlRG
SVggU0tJUCA6IHByaW50aW5nID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiByZXNvdXJjZXMg
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHNjcm9sbGJhcnMgPSBQQVNTIEZBSUwKK1dPTlRG
SVggU0tJUCA6IHNlY3VyaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzdG9yYWdlID0g
UEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzdmcgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6
IHRhYmxlcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdHJhbnNmb3JtcyA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIDogdHJhbnNpdGlvbnMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6
IHRyYXZlcnNhbCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdXNlcnNjcmlwdHMgPSBQQVNT
IEZBSUwKK1dPTlRGSVggU0tJUCA6IHdlYmFyY2hpdmUgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IHdlYnNvY2tldCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogd21sID0gUEFTUyBGQUlM
CisKKy8vIChUaGVzZSBhcmUgdGhlIHRlc3RzIHdlIGFjdHVhbGx5IHJ1biBhbmQgZXhwZWN0IHRv
IHBhc3MpCitCVUdOT05FIDogY29tcG9zaXRpbmcgPSBQQVNTIEZBSUwKK0JVR05PTkUgOiBmYXN0
L2NhbnZhcyA9IFBBU1MgRkFJTAorQlVHTk9ORSA6IGNhbnZhcy9waGlsaXAgPSBQQVNTIEZBSUwK
KworLy8KKy8vIEFjdHVhbCBmYWlsdXJlIHN1cHByZXNzaW9ucyBzaG91bGQgZ28gYmVsb3cgdGhp
cyBsaW5lCisvLwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGUwNGY5YmZmMDIwOTg2MTFmMzI3OTJjNjdkNmRlNDI4YzZhZThh
Y2YuLjA3NjM4NzM1YTNmODY3ZTA3NDE2ZTliZDczOTdhNWEzZmRjMzQ0YjYgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzNiBAQAogMjAxMC0wOS0yMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSAnY2hyb21pdW0tZ3B1JyBzZXQgb2YgcG9ydHMgdGhhdCB3aWxsIHRlc3QgdGhlIGFjY2VsZXJh
dGVkCisgICAgICAgIEdQVSBwYXRocy4gVGhpcyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gc3Vw
cG9ydCBmb3IgdGhlICctLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJyBhbmQKKyAgICAgICAgICAn
YWNjZWxlcmF0ZWQtMmQtY2FudmFzJyBmbGFncyB0byBuZXctcnVuLXdlYmtpdC10ZXN0cyAoYW5k
IHRoZQorICAgICAgICAgICduby0nIGZsYWdzKQorICAgICAgICAtIGFkZHMgYSBuZXcgc2V0IG9m
IFBvcnRzIHRoYXQgd2lsbCBsb29rIHVuZGVyCisgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0t
Z3B1LSRPUy8gZm9yIGJhc2VsaW5lcyBiZWZvcmUgbG9va2luZyBpbiB0aGUKKyAgICAgICAgICBy
ZWd1bGFyIGNocm9taXVtIHNlYXJjaCBwYXRoCisgICAgICAgIC0gYWRkcyBhIG5ldyB0ZXN0X2V4
cGVjdGF0aW9ucy50eHQgZmlsZSBpbiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUKKyAgICAgICAgICB0
aGF0IHNraXBzIGFsbCBidXQgdGhlIHRlc3RzIHdlIGFjdHVhbGx5IHdhbnQgdG8gcnVuIHdpdGgK
KyAgICAgICAgICBhY2NlbGVyYXRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCB3aWxsIGFsbG93
IHVzIHRvIHJ1biBib3RoIHdpdGggYW5kIHdpdGhvdXQgYWNjZWxlcmF0aW9uCisgICAgICAgIGFu
ZCB0byBjaGFuZ2UgdGhlIGRlZmF1bHRzIGZvciBib3RoIHRoZSByZWd1bGFyIGFuZCAtZ3B1IG9w
dGlvbnMKKyAgICAgICAgYXMgdGhlIGNvZGUgZXZvbHZlcy4KKworICAgICAgICBXZSBwbGFuIHRv
IGFkZCBib3RoIC0tY2hyb21pdW0tJE9TIGFuZCAtLWNocm9taXVtLWdwdS0kT1MgcnVucyB0bwor
ICAgICAgICBlYWNoIHRlc3QgYm90LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NjIyNQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKKzIwMTAtMDktMjEgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KIAogICAgICAgICBNb2RpZnkgdGhlIFBvcnQgaW50ZXJmYWNlIHRvIHRha2Ugb25seSBh
IHNlcmllcyBvZiBrZXl3b3JkIGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggN2E3
NzMxYWJkYTVjN2VmNTc1OGYyZjkzNzkwZmYyNmQyYzBlYmI3Ni4uNGYzZDczNDVlNTM5OWExMmUy
ZjE4NzFiMjQxZmNjZTc3OTQ3Y2RlMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC0yMzksNyAr
MjM5LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICMgRklYTUU6
IFRoaXMgZHJ0X292ZXJyaWRlcyBoYW5kbGluZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHdlIHN3
aXRjaAogICAgICAgICAjIGZyb20gdGVzX3NoZWxsIHRvIERSVC4KICAgICAgICAgZHJ0X292ZXJy
aWRlcyA9ICcnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYg
c2VsZi5fb3B0aW9ucyBhbmQgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgogICAgICAgICAgICAgZHJ0
X292ZXJyaWRlc19wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3Rz
JywKICAgICAgICAgICAgICAgICAncGxhdGZvcm0nLCAnY2hyb21pdW0nLCAnZHJ0X2V4cGVjdGF0
aW9ucy50eHQnKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHJ0X292ZXJyaWRlc19w
YXRoKToKQEAgLTM1Niw2ICszNTYsMTIgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2
ZXIpOgogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ3BfZmF1bHRfZXJyb3JfYm94OgogICAg
ICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWdwLWZhdWx0LWVycm9yLWJveCcpCisKKyAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAgICAg
ICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcn
KQorCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzOgorICAg
ICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52
YXMnKQogICAgICAgICByZXR1cm4gZHJpdmVyX2FyZ3MKIAogICAgIGRlZiBzdGFydChzZWxmKToK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fZ3B1LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMzQ1NzZjZTBiYzA4MTk2
MDEzOTU5M2RlZGRhNmZhYzk0MWUwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5CkBAIC0wLDAg
KzEsMTM1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY29kZWNzCitpbXBvcnQgb3MKK2lt
cG9ydCBzeXMKKworaW1wb3J0IGNocm9taXVtX2xpbnV4CitpbXBvcnQgY2hyb21pdW1fbWFjCitp
bXBvcnQgY2hyb21pdW1fd2luCisKKworZGVmIGdldCgqKmt3YXJncyk6CisgICAgIiIiU29tZSB0
ZXN0cyBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gcnVuIHdoaWxlIHVzaW5n
CisgICAgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLiAgSW4gdGhvc2UgY2FzZXMsIHdlIHByZXBlbmQg
YW4gYWRkaXRpb25hbCBkaXJlY3RvcnkKKyAgICB0byB0aGUgYmFzZWxpbmUgcGF0aHMuIiIiCisg
ICAgcG9ydF9uYW1lID0ga3dhcmdzLmdldCgncG9ydF9uYW1lJywgTm9uZSkKKyAgICBpZiBwb3J0
X25hbWUgPT0gJ2Nocm9taXVtLWdwdSc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2N5
Z3dpbicsICd3aW4zMicpOgorICAgICAgICAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWdwdS13
aW4nCisgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eDInOgorICAgICAgICAgICAg
cG9ydF9uYW1lID0gJ2Nocm9taXVtLWdwdS1saW51eCcKKyAgICAgICAgZWxpZiBzeXMucGxhdGZv
cm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0tZ3B1LW1h
YycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Io
J3Vuc3VwcG9ydGVkIHBsYXRmb3JtOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzeXMucGxhdGZvcm0pCisKKyAgICBpZiBwb3J0X25hbWUgPT0gJ2Nocm9taXVt
LWdwdS1saW51eCc6CisgICAgICAgIHJldHVybiBDaHJvbWl1bUdwdUxpbnV4UG9ydCgqKmt3YXJn
cykKKworICAgIGlmIHBvcnRfbmFtZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtbWFjJyk6Cisg
ICAgICAgIHJldHVybiBDaHJvbWl1bUdwdU1hY1BvcnQoKiprd2FyZ3MpCisKKyAgICBpZiBwb3J0
X25hbWUuc3RhcnRzd2l0aCgnY2hyb21pdW0tZ3B1LXdpbicpOgorICAgICAgICByZXR1cm4gQ2hy
b21pdW1HcHVXaW5Qb3J0KCoqa3dhcmdzKQorCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cigndW5zdXBwb3J0ZWQgcG9ydDogJXMnICUgcG9ydF9uYW1lKQorCisKK2RlZiBfc2V0X2dwdV9v
cHRpb25zKG9wdGlvbnMpOgorICAgIGlmIG9wdGlvbnM6CisgICAgICAgIGlmIG9wdGlvbnMuYWNj
ZWxlcmF0ZWRfY29tcG9zaXRpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIG9wdGlvbnMuYWNjZWxl
cmF0ZWRfY29tcG9zdGluZyA9IFRydWUKKyAgICAgICAgaWYgb3B0aW9ucy5hY2NlbGVyYXRlZF8y
ZF9jYW52YXMgaXMgTm9uZToKKyAgICAgICAgICAgIG9wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2Fu
dmFzID0gVHJ1ZQorCisKK2RlZiBfZ3B1X292ZXJyaWRlcyhwb3J0KToKKyAgICB0cnk6CisgICAg
ICAgIG92ZXJyaWRlc19wYXRoID0gcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0
JywgJ3Rvb2xzJywKKyAgICAgICAgICAgICdsYXlvdXRfdGVzdHMnLCAndGVzdF9leHBlY3RhdGlv
bnNfZ3B1LnR4dCcpCisgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgorICAgICAgICByZXR1cm4g
Tm9uZQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CisgICAgICAg
IHJldHVybiBOb25lCisgICAgd2l0aCBjb2RlY3Mub3BlbihvdmVycmlkZXNfcGF0aCwgInIiLCAi
dXRmLTgiKSBhcyBmaWxlOgorICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworCitjbGFzcyBD
aHJvbWl1bUdwdUxpbnV4UG9ydChjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1
bHQoJ3BvcnRfbmFtZScsICdjaHJvbWl1bS1ncHUtbGludXgnKQorICAgICAgICBfc2V0X2dwdV9v
cHRpb25zKGt3YXJncy5nZXQoJ29wdGlvbnMnKSkKKyAgICAgICAgY2hyb21pdW1fbGludXguQ2hy
b21pdW1MaW51eFBvcnQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCisKKyAgICBkZWYgYmFzZWxp
bmVfc2VhcmNoX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiAoW3NlbGYuX3dlYmtpdF9iYXNl
bGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtbGludXgnKV0gKworICAgICAgICAgICAgICAgIGNocm9t
aXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQor
CisgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9y
bScsCisgICAgICAgICAgICAnY2hyb21pdW0tZ3B1JywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcp
CisKKyAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gX2dwdV9vdmVycmlkZXMoc2VsZikKKworCitjbGFzcyBDaHJvbWl1bUdwdU1hY1BvcnQo
Y2hyb21pdW1fbWFjLkNocm9taXVtTWFjUG9ydCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoq
a3dhcmdzKToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3BvcnRfbmFtZScsICdjaHJvbWl1
bS1ncHUtbWFjJykKKyAgICAgICAgX3NldF9ncHVfb3B0aW9ucyhrd2FyZ3MuZ2V0KCdvcHRpb25z
JykpCisgICAgICAgIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQuX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpCisKKyAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CisgICAgICAg
IHJldHVybiAoW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtbWFjJyld
ICsKKyAgICAgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0LmJhc2VsaW5l
X3NlYXJjaF9wYXRoKHNlbGYpKQorCisgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNf
ZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdM
YXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCisgICAgICAgICAgICAnY2hyb21pdW0tZ3B1JywgJ3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCcpCisKKyAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJp
ZGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gX2dwdV9vdmVycmlkZXMoc2VsZikKKworCitjbGFz
cyBDaHJvbWl1bUdwdVdpblBvcnQoY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQo
J3BvcnRfbmFtZScsICdjaHJvbWl1bS1ncHUtd2luJyArIHNlbGYudmVyc2lvbigpKQorICAgICAg
ICBfc2V0X2dwdV9vcHRpb25zKGt3YXJncy5nZXQoJ29wdGlvbnMnKSkKKyAgICAgICAgY2hyb21p
dW1fd2luLkNocm9taXVtV2luUG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKworICAgIGRl
ZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuIChbc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS13aW4nKV0gKworICAgICAgICAgICAgICAg
IGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZikp
CisKKyAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRm
b3JtJywKKyAgICAgICAgICAgICdjaHJvbWl1bS1ncHUnLCAndGVzdF9leHBlY3RhdGlvbnMudHh0
JykKKworICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAg
IHJldHVybiBfZ3B1X292ZXJyaWRlcyhzZWxmKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2dwdV91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzc5YTNmZWI4ZjBhMWIyOTI3YjExYmU2MGU2
NzRiMTE4MDEzMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKQEAgLTAsMCAr
MSw1OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2lt
cG9ydCBjaHJvbWl1bV9ncHUKKworCitjbGFzcyBDaHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiB0ZXN0X2dldF9jaHJvbWl1bV9ncHVfbGludXgoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0T3ZlcnJpZGVzV29ya2VkKCdjaHJvbWl1bS1ncHUtbGludXgnKQorCisg
ICAgZGVmIHRlc3RfZ2V0X2Nocm9taXVtX2dwdV9tYWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0T3ZlcnJpZGVzV29ya2VkKCdjaHJvbWl1bS1ncHUtbWFjJykKKworICAgIGRlZiB0ZXN0X2dl
dF9jaHJvbWl1bV9ncHVfd2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE92ZXJyaWRlc1dv
cmtlZCgnY2hyb21pdW0tZ3B1LXdpbicpCisKKyAgICBkZWYgYXNzZXJ0T3ZlcnJpZGVzV29ya2Vk
KHNlbGYsIHBvcnRfbmFtZSk6CisgICAgICAgICMgdGVzdCB0aGF0IHdlIGdvdCB0aGUgcmlnaHQg
cG9ydAorICAgICAgICBwb3J0ID0gY2hyb21pdW1fZ3B1LmdldChwb3J0X25hbWU9cG9ydF9uYW1l
LCBvcHRpb25zPU5vbmUpCisKKyAgICAgICAgIyB3ZSB1c2Ugc3RhcnRzd2l0aCgpIGluc3RlYWQg
b2YgRXF1YWwgdG8gZ2xvc3Mgb3ZlciBwbGF0Zm9ybSB2ZXJzaW9ucy4KKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHBvcnQubmFtZSgpLnN0YXJ0c3dpdGgocG9ydF9uYW1lKSkKKworICAgICAgICAj
IHRlc3QgdGhhdCBpdCBoYXMgdGhlIHJpZ2h0IGRpcmVjdG9yeSBpbiBmcm9udCBvZiB0aGUgc2Vh
cmNoIHBhdGguCisgICAgICAgIHBhdGggPSBwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKClbMF0K
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aChwb3J0
X25hbWUpLCBwYXRoKQorCisgICAgICAgICMgdGVzdCB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGV4
cGVjdGF0aW9ucyBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Nocm9taXVtLWdwdScg
aW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9u
c19maWxlKCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFp
bigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2ZhY3RvcnkucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2ZhY3RvcnkucHkKaW5kZXggYWZlMTdkZmY1MDM5NDBkOGNlOGNmZTAxNzI5NDkx
MmVkZTNhZWRmMy4uNjkzNTc0NDJhZWJlMzFlMGExNDVkM2M5YTNlMTU5MDc3YjEwNDU2MCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9m
YWN0b3J5LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZmFjdG9yeS5weQpAQCAtNzIsMzcgKzcyLDQwIEBAIGRlZiBfZ2V0X2t3YXJncygqKmt3
YXJncyk6CiAKICAgICBpZiBwb3J0X3RvX3VzZSA9PSAndGVzdCc6CiAgICAgICAgIGltcG9ydCB0
ZXN0Ci0gICAgICAgIGNscyA9IHRlc3QuVGVzdFBvcnQKKyAgICAgICAgbWFrZXIgPSB0ZXN0LlRl
c3RQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdkcnlydW4nKToKICAgICAg
ICAgaW1wb3J0IGRyeXJ1bgotICAgICAgICBjbHMgPSBkcnlydW4uRHJ5UnVuUG9ydAorICAgICAg
ICBtYWtlciA9IGRyeXJ1bi5EcnlSdW5Qb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3
aXRoKCdtYWMnKToKICAgICAgICAgaW1wb3J0IG1hYwotICAgICAgICBjbHMgPSBtYWMuTWFjUG9y
dAorICAgICAgICBtYWtlciA9IG1hYy5NYWNQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFy
dHN3aXRoKCd3aW4nKToKICAgICAgICAgaW1wb3J0IHdpbgotICAgICAgICBjbHMgPSB3aW4uV2lu
UG9ydAorICAgICAgICBtYWtlciA9IHdpbi5XaW5Qb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5z
dGFydHN3aXRoKCdndGsnKToKICAgICAgICAgaW1wb3J0IGd0awotICAgICAgICBjbHMgPSBndGsu
R3RrUG9ydAorICAgICAgICBtYWtlciA9IGd0ay5HdGtQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3Vz
ZS5zdGFydHN3aXRoKCdxdCcpOgogICAgICAgICBpbXBvcnQgcXQKLSAgICAgICAgY2xzID0gcXQu
UXRQb3J0CisgICAgICAgIG1ha2VyID0gcXQuUXRQb3J0CisgICAgZWxpZiBwb3J0X3RvX3VzZS5z
dGFydHN3aXRoKCdjaHJvbWl1bS1ncHUnKToKKyAgICAgICAgaW1wb3J0IGNocm9taXVtX2dwdQor
ICAgICAgICBtYWtlciA9IGNocm9taXVtX2dwdS5nZXQKICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0
YXJ0c3dpdGgoJ2Nocm9taXVtLW1hYycpOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbWFjCi0g
ICAgICAgIGNscyA9IGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQKKyAgICAgICAgbWFrZXIg
PSBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFy
dHN3aXRoKCdjaHJvbWl1bS1saW51eCcpOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbGludXgK
LSAgICAgICAgY2xzID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQKKyAgICAgICAg
bWFrZXIgPSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydAogICAgIGVsaWYgcG9ydF90
b191c2Uuc3RhcnRzd2l0aCgnY2hyb21pdW0td2luJyk6CiAgICAgICAgIGltcG9ydCBjaHJvbWl1
bV93aW4KLSAgICAgICAgY2xzID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydAorICAgICAg
ICBtYWtlciA9IGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQKICAgICBlbGlmIHBvcnRfdG9f
dXNlLnN0YXJ0c3dpdGgoJ2dvb2dsZS1jaHJvbWUnKToKICAgICAgICAgaW1wb3J0IGdvb2dsZV9j
aHJvbWUKLSAgICAgICAgY2xzID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0Cisg
ICAgICAgIG1ha2VyID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0CiAgICAgZWxz
ZToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5zdXBwb3J0ZWQgcG9ydDog
JXMnICUgcG9ydF90b191c2UpCi0gICAgcmV0dXJuIGNscygqKmt3YXJncykKKyAgICByZXR1cm4g
bWFrZXIoKiprd2FyZ3MpCiAKIGRlZiBnZXRfYWxsKG9wdGlvbnM9Tm9uZSk6CiAgICAgIiIiUmV0
dXJucyBhbGwgdGhlIG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSBQb3J0IGludGVyZmFjZS4iIiIK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZmFjdG9yeV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRleCBjMGE0YzVlNWQ0MDJmODVk
ZjA5MzUwYjgyMTBhNTRjZTkzMDgwMTA0Li44MWMzNzMyN2EyMDk5MmVlMGM0YzNjZDllODRkMzEx
ZDZlYTQ1OThiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0yOSw2
ICsyOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAoraW1wb3J0IGNocm9taXVt
X2dwdQogaW1wb3J0IGNocm9taXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1fbWFjCiBpbXBvcnQg
Y2hyb21pdW1fd2luCkBAIC0xMzMsNiArMTM0LDE1IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9xdChzZWxmKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfcG9ydCgicXQiLCBxdC5RdFBvcnQpCiAKKyAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfbGlu
dXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLWdwdS1saW51eCIs
IGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9ydCkKKworICAgIGRlZiB0ZXN0X2Nocm9t
aXVtX2dwdV9tYWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLWdw
dS1tYWMiLCBjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQb3J0KQorCisgICAgZGVmIHRlc3Rf
Y2hyb21pdW1fZ3B1X3dpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21p
dW0tZ3B1LXdpbiIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQpCisKICAgICBkZWYg
dGVzdF9jaHJvbWl1bV9tYWMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9t
aXVtLW1hYyIsIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0X3BsYXRmb3JtX3BvcnQoImRhcndpbiIsIHNlbGYuY2hyb21pdW1fb3B0aW9ucywKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKaW5kZXggMjdiNmMwNWFlODEyZTZmNjAwNWMwMGY2Y2IwMGVkZWJlMGYwMzk1MC4u
N2VjODE1YThlY2YwZDYwZGJkZDcxNGQ5ZGZhYWZmNWNlOGI5NDU1ZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKQEAgLTQxMCw2ICs0MTAsMTMgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToK
ICAgICAgICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFw
cGVuZCgnLS1waXhlbC10ZXN0cycpCiAKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0
OgorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoK
KyAgICAgICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVk
LWNvbXBvc2l0aW5nJykKKworICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRl
ZF8yZF9jYW52YXM6CisgICAgICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJs
ZS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnKQorCiAgICAgICAgIHJldHVybiBkcml2ZXJfYXJncwog
CiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNTE5
M2RiZGNmM2UzY2MzN2I2MzBiYmRiZDBmNDc3MDQ0YTllZWFiMi4uOWEwZDI0Yzg2NmFlMWNiOGEy
MzZjNDgwYjViNTNlNTU5OTlkZDE2NSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0x
NTA4LDYgKzE1MDgsMjAgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oIi0tdXNlLWRydCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAg
ICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVscD0iVXNlIER1bXBSZW5kZXJU
cmVlIGluc3RlYWQgb2YgdGVzdF9zaGVsbCIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlv
bigiLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyIsCisgICAgICAgICAgICBhY3Rpb249InN0b3Jl
X3RydWUiLAorICAgICAgICAgICAgaGVscD0iVXNlIGhhcmR3YXJlLWFjY2VsYXRlZCBjb21wb3Np
dGluZyBmb3IgcmVuZGVyaW5nIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW5v
LWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFs
c2UiLAorICAgICAgICAgICAgZGVzdD0iYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciLAorICAgICAg
ICAgICAgaGVscD0iRG9uJ3QgdXNlIGhhcmR3YXJlLWFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZv
ciByZW5kZXJpbmciKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYWNjZWxlcmF0
ZWQtMmQtY2FudmFzIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAg
ICAgICBoZWxwPSJVc2UgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgMkQgQ2FudmFzIGNhbGxzIiksCisg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW5vLWFjY2VsZXJhdGVkLTJkLWNhbnZhcyIs
CisgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgIGRlc3Q9ImFj
Y2VsZXJhdGVkXzJkX2NhbnZhcyIsCisgICAgICAgICAgICBoZWxwPSJEb24ndCB1c2UgaGFyZHdh
cmUtYWNjZWxlcmF0ZWQgMkQgQ2FudmFzIGNhbGxzIiksCiAgICAgXQogCiAgICAgIyBNaXNzaW5n
IE1hYy1zcGVjaWZpYyBvbGQtcnVuLXdlYmtpdC10ZXN0cyBvcHRpb25zOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggOWQ0ODYwNGRlODQ0Y2Q3ZDQ5MjI4
Nzg3MDdlNTdlMzI2NTYzMGE2YS4uNmZlOTlkNjI3MDEzNTg5ZmZjZDBhYTU2YmFkNmM4Mjc3YTFh
MWZjOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0x
MDIsNiArMTAyLDE2IEBAIGRlZiBsb2dnaW5nX3J1bihhcmdzPVtdLCB0ZXN0c19pbmNsdWRlZD1G
YWxzZSk6CiAKIAogY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0
ZXN0X2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nKHNlbGYpOgorICAgICAgICAjIFRoaXMganVzdCB0
ZXN0cyB0aGF0IHdlIHJlY29nbml6ZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3MKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyddKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1uby1hY2NlbGVyYXRlZC1j
b21wb3NpdGluZyddKSkKKworICAgIGRlZiB0ZXN0X2FjY2VsZXJhdGVkXzJkX2NhbnZhcyhzZWxm
KToKKyAgICAgICAgIyBUaGlzIGp1c3QgdGVzdHMgdGhhdCB3ZSByZWNvZ25pemUgdGhlIGNvbW1h
bmQgbGluZSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tYWNj
ZWxlcmF0ZWQtMmQtY2FudmFzJ10pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19y
dW4oWyctLW5vLWFjY2VsZXJhdGVkLTJkLWNhbnZhcyddKSkKKwogICAgIGRlZiB0ZXN0X2Jhc2lj
KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oKSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68335</attachid>
            <date>2010-09-21 20:28:49 -0700</date>
            <delta_ts>2010-09-22 15:32:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46225-20100921202847.patch</filename>
            <type>text/plain</type>
            <size>22559</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZTNhOWJiMDVhMzg4ZjgyZDY0NDk0ZDI1MmU2ZGJmMmNhY2E2MjZjLi43YzY4OGE5
NjdmMjA0MjVmMWZmMTgzODBjODk3ZmUzYzhhNDJhZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBwbGF0Zm9ybS9j
aHJvbWl1bS1ncHUtKiBkaXJlY3RvcmllcyBmb3IgaG9sZGluZyB0aGUKKyAgICAgICAgR1BVLWFj
Y2VsZXJhdGVkIGJhc2VsaW5lcyBhbmQgZXhwZWN0YXRpb25zIGZvciBDaHJvbWl1bS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyMjUKKworICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dDogQWRkZWQu
CisKIDIwMTAtMDktMjEgIEFuZHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY3OTgyLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbGludXgvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
N2EzYzYxNzFjNDM0MDQ2ODZhOWE4ZTE0MmRhNTFkMDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1LWxpbnV4L1JFQURNRS50eHQKQEAg
LTAsMCArMSwyIEBACitUaGlzIGRpcmVjdG9yeSBpcyBhIHBsYWNlaG9sZGVyIHNvIHRoYXQgR2l0
IHdpbGwgY3JlYXRlIGl0OyBpdCBzaG91bGQgaG9sZAordGhlIGJhc2VsaW5lcyBmb3IgdGhlIEdQ
VSBhY2NlbGVyYXRlZCB0ZXN0cyBmb3IgQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1ncHUtbWFjL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzdhM2M2MTcxYzQz
NDA0Njg2YTlhOGUxNDJkYTUxZDA1ZjY1OGYxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS1tYWMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAK
K1RoaXMgZGlyZWN0b3J5IGlzIGEgcGxhY2Vob2xkZXIgc28gdGhhdCBHaXQgd2lsbCBjcmVhdGUg
aXQ7IGl0IHNob3VsZCBob2xkCit0aGUgYmFzZWxpbmVzIGZvciB0aGUgR1BVIGFjY2VsZXJhdGVk
IHRlc3RzIGZvciBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWdwdS13aW4vUkVBRE1FLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LWdwdS13aW4vUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2EzYzYxNzFjNDM0MDQ2ODZhOWE4ZTE0
MmRhNTFkMDVmNjU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tZ3B1LXdpbi9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBkaXJlY3Rv
cnkgaXMgYSBwbGFjZWhvbGRlciBzbyB0aGF0IEdpdCB3aWxsIGNyZWF0ZSBpdDsgaXQgc2hvdWxk
IGhvbGQKK3RoZSBiYXNlbGluZXMgZm9yIHRoZSBHUFUgYWNjZWxlcmF0ZWQgdGVzdHMgZm9yIENo
cm9taXVtLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tZ3B1L3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWdwdS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRkOTViMDgxOWI5YTQ5M2Q0N2Y2YjRm
MDFhOTc2MmNjNGIxMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLWdwdS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTAsMCArMSw1MyBAQAorLy8g
VGhpcyBmaWxlIGluZGljYXRlcyB0aGUgZXhwZWN0YXRpb25zIGZvciBydW5uaW5nIENocm9taXVt
IHVuZGVyCisvLyB0aGUgR1BVLWFjY2VsZXJhdGVkIGNvZGVwYXRocyBhcyBkZWZpbmVkIGluCisv
LyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2dwdS5weQorLy8KKy8vIFdlIHNraXAgbW9zdCBvZiB0aGUgdGVzdHMgaW4gdGhlIHJlcG9zaXRv
cnkgYmVjYXVzZSB0aGV5IGRvbid0IHRyaWdnZXIKKy8vIHRoZSBhY2NlbGVyYXRlZCBjb2RlIHBh
dGhzLiBXZSBhY3R1YWxseSBvbmx5IHJ1biB0aGUgY2FudmFzIGFuZAorLy8gY29tcG9zaXRpbmcg
dGVzdHMuCitXT05URklYIFNLSVAgOiBhY2Nlc3NpYmlsaXR5ID0gUEFTUyBGQUlMCitXT05URklY
IFNLSVAgOiBhbmltYXRpb25zID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBjYW52YXMgPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGNzczEgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6
IGNzczIuMSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogY3NzMyA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIDogZG9tID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBlZGl0aW5nID0gUEFT
UyBGQUlMCitXT05URklYIFNLSVAgOiBmYXN0ID0gUEFTUyBGQUlMCisKK1dPTlRGSVggU0tJUCA6
IGZvbnRzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBmdWxsc2NyZWVuID0gUEFTUyBGQUlM
CitXT05URklYIFNLSVAgOiBodG1sNWxpYiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogaHR0
cCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogaWV0ZXN0Y2VudGVyID0gUEFTUyBGQUlMCitX
T05URklYIFNLSVAgOiBpbnNwZWN0b3IgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGphdmEg
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IGxvYWRlciA9IFBBU1MgRkFJTAorV09OVEZJWCBT
S0lQIDogbWF0aG1sID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBtZWRpYSA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIDogcGVyZiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogcGxhdGZv
cm0gPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHBsdWdpbnMgPSBQQVNTIEZBSUwKK1dPTlRG
SVggU0tJUCA6IHByaW50aW5nID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiByZXNvdXJjZXMg
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6IHNjcm9sbGJhcnMgPSBQQVNTIEZBSUwKK1dPTlRG
SVggU0tJUCA6IHNlY3VyaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzdG9yYWdlID0g
UEFTUyBGQUlMCitXT05URklYIFNLSVAgOiBzdmcgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6
IHRhYmxlcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdHJhbnNmb3JtcyA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIDogdHJhbnNpdGlvbnMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCA6
IHRyYXZlcnNhbCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogdXNlcnNjcmlwdHMgPSBQQVNT
IEZBSUwKK1dPTlRGSVggU0tJUCA6IHdlYmFyY2hpdmUgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCA6IHdlYnNvY2tldCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIDogd21sID0gUEFTUyBGQUlM
CisKKy8vIChUaGVzZSBhcmUgdGhlIHRlc3RzIHdlIGFjdHVhbGx5IHJ1biBhbmQgZXhwZWN0IHRv
IHBhc3MpCitCVUdOT05FIDogY29tcG9zaXRpbmcgPSBQQVNTIEZBSUwKK0JVR05PTkUgOiBmYXN0
L2NhbnZhcyA9IFBBU1MgRkFJTAorQlVHTk9ORSA6IGNhbnZhcy9waGlsaXAgPSBQQVNTIEZBSUwK
KworLy8KKy8vIEFjdHVhbCBmYWlsdXJlIHN1cHByZXNzaW9ucyBzaG91bGQgZ28gYmVsb3cgdGhp
cyBsaW5lCisvLwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDQzNjJlMjU2NWI0MWQxMDc0NDdhMDIxOTJjNWU3YjFhYWIwZGZk
MzAuLmRmOTY1NDVjNDA4MGJlYTUzMTg4MDIzYTY1M2MxZjUyNTFmM2QyNWMgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzNiBAQAogMjAxMC0wOS0yMSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9y
Zz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSAnY2hyb21pdW0tZ3B1JyBzZXQgb2YgcG9ydHMgdGhhdCB3aWxsIHRlc3QgdGhlIGFjY2VsZXJh
dGVkCisgICAgICAgIEdQVSBwYXRocy4gVGhpcyBwYXRjaCBhZGRzOgorCisgICAgICAgIC0gc3Vw
cG9ydCBmb3IgdGhlICctLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nJyBhbmQKKyAgICAgICAgICAn
YWNjZWxlcmF0ZWQtMmQtY2FudmFzJyBmbGFncyB0byBuZXctcnVuLXdlYmtpdC10ZXN0cyAoYW5k
IHRoZQorICAgICAgICAgICduby0nIGZsYWdzKQorICAgICAgICAtIGFkZHMgYSBuZXcgc2V0IG9m
IFBvcnRzIHRoYXQgd2lsbCBsb29rIHVuZGVyCisgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0t
Z3B1LSRPUy8gZm9yIGJhc2VsaW5lcyBiZWZvcmUgbG9va2luZyBpbiB0aGUKKyAgICAgICAgICBy
ZWd1bGFyIGNocm9taXVtIHNlYXJjaCBwYXRoCisgICAgICAgIC0gYWRkcyBhIG5ldyB0ZXN0X2V4
cGVjdGF0aW9ucy50eHQgZmlsZSBpbiBwbGF0Zm9ybS9jaHJvbWl1bS1ncHUKKyAgICAgICAgICB0
aGF0IHNraXBzIGFsbCBidXQgdGhlIHRlc3RzIHdlIGFjdHVhbGx5IHdhbnQgdG8gcnVuIHdpdGgK
KyAgICAgICAgICBhY2NlbGVyYXRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCB3aWxsIGFsbG93
IHVzIHRvIHJ1biBib3RoIHdpdGggYW5kIHdpdGhvdXQgYWNjZWxlcmF0aW9uCisgICAgICAgIGFu
ZCB0byBjaGFuZ2UgdGhlIGRlZmF1bHRzIGZvciBib3RoIHRoZSByZWd1bGFyIGFuZCAtZ3B1IG9w
dGlvbnMKKyAgICAgICAgYXMgdGhlIGNvZGUgZXZvbHZlcy4KKworICAgICAgICBXZSBwbGFuIHRv
IGFkZCBib3RoIC0tY2hyb21pdW0tJE9TIGFuZCAtLWNocm9taXVtLWdwdS0kT1MgcnVucyB0bwor
ICAgICAgICBlYWNoIHRlc3QgYm90LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NjIyNQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisKKzIwMTAtMDktMjEgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQg
Zml4LgogCiAgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzOiBmaXggYnVnIGludHJvZHVjZWQg
aW4gcjY4MDA4IHdoZXJlIGlmIHlvdQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggN2E3NzMxYWJk
YTVjN2VmNTc1OGYyZjkzNzkwZmYyNmQyYzBlYmI3Ni4uNGYzZDczNDVlNTM5OWExMmUyZjE4NzFi
MjQxZmNjZTc3OTQ3Y2RlMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC0yMzksNyArMjM5LDcg
QEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICMgRklYTUU6IFRoaXMg
ZHJ0X292ZXJyaWRlcyBoYW5kbGluZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHdlIHN3aXRjaAog
ICAgICAgICAjIGZyb20gdGVzX3NoZWxsIHRvIERSVC4KICAgICAgICAgZHJ0X292ZXJyaWRlcyA9
ICcnCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX2RydDoKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucyBhbmQgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgogICAgICAgICAgICAgZHJ0X292ZXJy
aWRlc19wYXRoID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywKICAg
ICAgICAgICAgICAgICAncGxhdGZvcm0nLCAnY2hyb21pdW0nLCAnZHJ0X2V4cGVjdGF0aW9ucy50
eHQnKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHJ0X292ZXJyaWRlc19wYXRoKToK
QEAgLTM1Niw2ICszNTYsMTIgQEAgY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgog
CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ3BfZmF1bHRfZXJyb3JfYm94OgogICAgICAgICAg
ICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWdwLWZhdWx0LWVycm9yLWJveCcpCisKKyAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAgICAgICAgIGRy
aXZlcl9hcmdzLmFwcGVuZCgnLS1lbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcnKQorCisg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzOgorICAgICAgICAg
ICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2NlbGVyYXRlZC0yZC1jYW52YXMnKQog
ICAgICAgICByZXR1cm4gZHJpdmVyX2FyZ3MKIAogICAgIGRlZiBzdGFydChzZWxmKToKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fZ3B1LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9ncHUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzAwMzQ1NzZjZTBiYzA4MTk2MDEzOTU5
M2RlZGRhNmZhYzk0MWUwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5CkBAIC0wLDAgKzEsMTM1
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY29kZWNzCitpbXBvcnQgb3MKK2ltcG9ydCBz
eXMKKworaW1wb3J0IGNocm9taXVtX2xpbnV4CitpbXBvcnQgY2hyb21pdW1fbWFjCitpbXBvcnQg
Y2hyb21pdW1fd2luCisKKworZGVmIGdldCgqKmt3YXJncyk6CisgICAgIiIiU29tZSB0ZXN0cyBo
YXZlIHNsaWdodGx5IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gcnVuIHdoaWxlIHVzaW5nCisgICAg
aGFyZHdhcmUgYWNjZWxlcmF0aW9uLiAgSW4gdGhvc2UgY2FzZXMsIHdlIHByZXBlbmQgYW4gYWRk
aXRpb25hbCBkaXJlY3RvcnkKKyAgICB0byB0aGUgYmFzZWxpbmUgcGF0aHMuIiIiCisgICAgcG9y
dF9uYW1lID0ga3dhcmdzLmdldCgncG9ydF9uYW1lJywgTm9uZSkKKyAgICBpZiBwb3J0X25hbWUg
PT0gJ2Nocm9taXVtLWdwdSc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2N5Z3dpbics
ICd3aW4zMicpOgorICAgICAgICAgICAgcG9ydF9uYW1lID0gJ2Nocm9taXVtLWdwdS13aW4nCisg
ICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eDInOgorICAgICAgICAgICAgcG9ydF9u
YW1lID0gJ2Nocm9taXVtLWdwdS1saW51eCcKKyAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0g
J2Rhcndpbic6CisgICAgICAgICAgICBwb3J0X25hbWUgPSAnY2hyb21pdW0tZ3B1LW1hYycKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vuc3Vw
cG9ydGVkIHBsYXRmb3JtOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeXMucGxhdGZvcm0pCisKKyAgICBpZiBwb3J0X25hbWUgPT0gJ2Nocm9taXVtLWdwdS1s
aW51eCc6CisgICAgICAgIHJldHVybiBDaHJvbWl1bUdwdUxpbnV4UG9ydCgqKmt3YXJncykKKwor
ICAgIGlmIHBvcnRfbmFtZS5zdGFydHN3aXRoKCdjaHJvbWl1bS1ncHUtbWFjJyk6CisgICAgICAg
IHJldHVybiBDaHJvbWl1bUdwdU1hY1BvcnQoKiprd2FyZ3MpCisKKyAgICBpZiBwb3J0X25hbWUu
c3RhcnRzd2l0aCgnY2hyb21pdW0tZ3B1LXdpbicpOgorICAgICAgICByZXR1cm4gQ2hyb21pdW1H
cHVXaW5Qb3J0KCoqa3dhcmdzKQorCisgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5z
dXBwb3J0ZWQgcG9ydDogJXMnICUgcG9ydF9uYW1lKQorCisKK2RlZiBfc2V0X2dwdV9vcHRpb25z
KG9wdGlvbnMpOgorICAgIGlmIG9wdGlvbnM6CisgICAgICAgIGlmIG9wdGlvbnMuYWNjZWxlcmF0
ZWRfY29tcG9zaXRpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIG9wdGlvbnMuYWNjZWxlcmF0ZWRf
Y29tcG9zdGluZyA9IFRydWUKKyAgICAgICAgaWYgb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9jYW52
YXMgaXMgTm9uZToKKyAgICAgICAgICAgIG9wdGlvbnMuYWNjZWxlcmF0ZWRfMmRfY2FudmFzID0g
VHJ1ZQorCisKK2RlZiBfZ3B1X292ZXJyaWRlcyhwb3J0KToKKyAgICB0cnk6CisgICAgICAgIG92
ZXJyaWRlc19wYXRoID0gcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywgJ3Rv
b2xzJywKKyAgICAgICAgICAgICdsYXlvdXRfdGVzdHMnLCAndGVzdF9leHBlY3RhdGlvbnNfZ3B1
LnR4dCcpCisgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgorICAgICAgICByZXR1cm4gTm9uZQor
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CisgICAgICAgIHJldHVy
biBOb25lCisgICAgd2l0aCBjb2RlY3Mub3BlbihvdmVycmlkZXNfcGF0aCwgInIiLCAidXRmLTgi
KSBhcyBmaWxlOgorICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworCitjbGFzcyBDaHJvbWl1
bUdwdUxpbnV4UG9ydChjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3Bv
cnRfbmFtZScsICdjaHJvbWl1bS1ncHUtbGludXgnKQorICAgICAgICBfc2V0X2dwdV9vcHRpb25z
KGt3YXJncy5nZXQoJ29wdGlvbnMnKSkKKyAgICAgICAgY2hyb21pdW1fbGludXguQ2hyb21pdW1M
aW51eFBvcnQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCisKKyAgICBkZWYgYmFzZWxpbmVfc2Vh
cmNoX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiAoW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9w
YXRoKCdjaHJvbWl1bS1ncHUtbGludXgnKV0gKworICAgICAgICAgICAgICAgIGNocm9taXVtX2xp
bnV4LkNocm9taXVtTGludXhQb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpKQorCisgICAg
ZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCisg
ICAgICAgICAgICAnY2hyb21pdW0tZ3B1JywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCisKKyAg
ICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgICByZXR1cm4g
X2dwdV9vdmVycmlkZXMoc2VsZikKKworCitjbGFzcyBDaHJvbWl1bUdwdU1hY1BvcnQoY2hyb21p
dW1fbWFjLkNocm9taXVtTWFjUG9ydCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdz
KToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3BvcnRfbmFtZScsICdjaHJvbWl1bS1ncHUt
bWFjJykKKyAgICAgICAgX3NldF9ncHVfb3B0aW9ucyhrd2FyZ3MuZ2V0KCdvcHRpb25zJykpCisg
ICAgICAgIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQuX19pbml0X18oc2VsZiwgKiprd2Fy
Z3MpCisKKyAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVy
biAoW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS1ncHUtbWFjJyldICsKKyAg
ICAgICAgICAgICAgICBjaHJvbWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0LmJhc2VsaW5lX3NlYXJj
aF9wYXRoKHNlbGYpKQorCisgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShz
ZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCdMYXlvdXRU
ZXN0cycsICdwbGF0Zm9ybScsCisgICAgICAgICAgICAnY2hyb21pdW0tZ3B1JywgJ3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCcpCisKKyAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNl
bGYpOgorICAgICAgICByZXR1cm4gX2dwdV9vdmVycmlkZXMoc2VsZikKKworCitjbGFzcyBDaHJv
bWl1bUdwdVdpblBvcnQoY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAga3dhcmdzLnNldGRlZmF1bHQoJ3BvcnRf
bmFtZScsICdjaHJvbWl1bS1ncHUtd2luJyArIHNlbGYudmVyc2lvbigpKQorICAgICAgICBfc2V0
X2dwdV9vcHRpb25zKGt3YXJncy5nZXQoJ29wdGlvbnMnKSkKKyAgICAgICAgY2hyb21pdW1fd2lu
LkNocm9taXVtV2luUG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKKworICAgIGRlZiBiYXNl
bGluZV9zZWFyY2hfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuIChbc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoJ2Nocm9taXVtLWdwdS13aW4nKV0gKworICAgICAgICAgICAgICAgIGNocm9t
aXVtX3dpbi5DaHJvbWl1bVdpblBvcnQuYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZikpCisKKyAg
ICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS1ncHUnLCAndGVzdF9leHBlY3RhdGlvbnMudHh0JykKKwor
ICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAgIHJldHVy
biBfZ3B1X292ZXJyaWRlcyhzZWxmKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2dwdV91
bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzc5YTNmZWI4ZjBhMWIyOTI3YjExYmU2MGU2NzRiMTE4
MDEzMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw1OCBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
IyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBj
aHJvbWl1bV9ncHUKKworCitjbGFzcyBDaHJvbWl1bUdwdVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgorICAgIGRlZiB0ZXN0X2dldF9jaHJvbWl1bV9ncHVfbGludXgoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0T3ZlcnJpZGVzV29ya2VkKCdjaHJvbWl1bS1ncHUtbGludXgnKQorCisgICAgZGVm
IHRlc3RfZ2V0X2Nocm9taXVtX2dwdV9tYWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0T3Zl
cnJpZGVzV29ya2VkKCdjaHJvbWl1bS1ncHUtbWFjJykKKworICAgIGRlZiB0ZXN0X2dldF9jaHJv
bWl1bV9ncHVfd2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE92ZXJyaWRlc1dvcmtlZCgn
Y2hyb21pdW0tZ3B1LXdpbicpCisKKyAgICBkZWYgYXNzZXJ0T3ZlcnJpZGVzV29ya2VkKHNlbGYs
IHBvcnRfbmFtZSk6CisgICAgICAgICMgdGVzdCB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgcG9ydAor
ICAgICAgICBwb3J0ID0gY2hyb21pdW1fZ3B1LmdldChwb3J0X25hbWU9cG9ydF9uYW1lLCBvcHRp
b25zPU5vbmUpCisKKyAgICAgICAgIyB3ZSB1c2Ugc3RhcnRzd2l0aCgpIGluc3RlYWQgb2YgRXF1
YWwgdG8gZ2xvc3Mgb3ZlciBwbGF0Zm9ybSB2ZXJzaW9ucy4KKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHBvcnQubmFtZSgpLnN0YXJ0c3dpdGgocG9ydF9uYW1lKSkKKworICAgICAgICAjIHRlc3Qg
dGhhdCBpdCBoYXMgdGhlIHJpZ2h0IGRpcmVjdG9yeSBpbiBmcm9udCBvZiB0aGUgc2VhcmNoIHBh
dGguCisgICAgICAgIHBhdGggPSBwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKClbMF0KKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll93ZWJraXRfYmFzZWxpbmVfcGF0aChwb3J0X25hbWUp
LCBwYXRoKQorCisgICAgICAgICMgdGVzdCB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGV4cGVjdGF0
aW9ucyBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Nocm9taXVtLWdwdScgaW4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxl
KCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2ZhY3RvcnkucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2ZhY3RvcnkucHkKaW5kZXggYWZlMTdkZmY1MDM5NDBkOGNlOGNmZTAxNzI5NDkxMmVkZTNh
ZWRmMy4uNjkzNTc0NDJhZWJlMzFlMGExNDVkM2M5YTNlMTU5MDc3YjEwNDU2MCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
ZmFjdG9yeS5weQpAQCAtNzIsMzcgKzcyLDQwIEBAIGRlZiBfZ2V0X2t3YXJncygqKmt3YXJncyk6
CiAKICAgICBpZiBwb3J0X3RvX3VzZSA9PSAndGVzdCc6CiAgICAgICAgIGltcG9ydCB0ZXN0Ci0g
ICAgICAgIGNscyA9IHRlc3QuVGVzdFBvcnQKKyAgICAgICAgbWFrZXIgPSB0ZXN0LlRlc3RQb3J0
CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdkcnlydW4nKToKICAgICAgICAgaW1w
b3J0IGRyeXJ1bgotICAgICAgICBjbHMgPSBkcnlydW4uRHJ5UnVuUG9ydAorICAgICAgICBtYWtl
ciA9IGRyeXJ1bi5EcnlSdW5Qb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRoKCdt
YWMnKToKICAgICAgICAgaW1wb3J0IG1hYwotICAgICAgICBjbHMgPSBtYWMuTWFjUG9ydAorICAg
ICAgICBtYWtlciA9IG1hYy5NYWNQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRo
KCd3aW4nKToKICAgICAgICAgaW1wb3J0IHdpbgotICAgICAgICBjbHMgPSB3aW4uV2luUG9ydAor
ICAgICAgICBtYWtlciA9IHdpbi5XaW5Qb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3
aXRoKCdndGsnKToKICAgICAgICAgaW1wb3J0IGd0awotICAgICAgICBjbHMgPSBndGsuR3RrUG9y
dAorICAgICAgICBtYWtlciA9IGd0ay5HdGtQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFy
dHN3aXRoKCdxdCcpOgogICAgICAgICBpbXBvcnQgcXQKLSAgICAgICAgY2xzID0gcXQuUXRQb3J0
CisgICAgICAgIG1ha2VyID0gcXQuUXRQb3J0CisgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3
aXRoKCdjaHJvbWl1bS1ncHUnKToKKyAgICAgICAgaW1wb3J0IGNocm9taXVtX2dwdQorICAgICAg
ICBtYWtlciA9IGNocm9taXVtX2dwdS5nZXQKICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0YXJ0c3dp
dGgoJ2Nocm9taXVtLW1hYycpOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbWFjCi0gICAgICAg
IGNscyA9IGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQKKyAgICAgICAgbWFrZXIgPSBjaHJv
bWl1bV9tYWMuQ2hyb21pdW1NYWNQb3J0CiAgICAgZWxpZiBwb3J0X3RvX3VzZS5zdGFydHN3aXRo
KCdjaHJvbWl1bS1saW51eCcpOgogICAgICAgICBpbXBvcnQgY2hyb21pdW1fbGludXgKLSAgICAg
ICAgY2xzID0gY2hyb21pdW1fbGludXguQ2hyb21pdW1MaW51eFBvcnQKKyAgICAgICAgbWFrZXIg
PSBjaHJvbWl1bV9saW51eC5DaHJvbWl1bUxpbnV4UG9ydAogICAgIGVsaWYgcG9ydF90b191c2Uu
c3RhcnRzd2l0aCgnY2hyb21pdW0td2luJyk6CiAgICAgICAgIGltcG9ydCBjaHJvbWl1bV93aW4K
LSAgICAgICAgY2xzID0gY2hyb21pdW1fd2luLkNocm9taXVtV2luUG9ydAorICAgICAgICBtYWtl
ciA9IGNocm9taXVtX3dpbi5DaHJvbWl1bVdpblBvcnQKICAgICBlbGlmIHBvcnRfdG9fdXNlLnN0
YXJ0c3dpdGgoJ2dvb2dsZS1jaHJvbWUnKToKICAgICAgICAgaW1wb3J0IGdvb2dsZV9jaHJvbWUK
LSAgICAgICAgY2xzID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0CisgICAgICAg
IG1ha2VyID0gZ29vZ2xlX2Nocm9tZS5HZXRHb29nbGVDaHJvbWVQb3J0CiAgICAgZWxzZToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5zdXBwb3J0ZWQgcG9ydDogJXMnICUg
cG9ydF90b191c2UpCi0gICAgcmV0dXJuIGNscygqKmt3YXJncykKKyAgICByZXR1cm4gbWFrZXIo
Kiprd2FyZ3MpCiAKIGRlZiBnZXRfYWxsKG9wdGlvbnM9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBh
bGwgdGhlIG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFj
dG9yeV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQppbmRleCBjMGE0YzVlNWQ0MDJmODVkZjA5MzUw
YjgyMTBhNTRjZTkzMDgwMTA0Li44MWMzNzMyN2EyMDk5MmVlMGM0YzNjZDllODRkMzExZDZlYTQ1
OThiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CkBAIC0yOSw2ICsyOSw3
IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAoraW1wb3J0IGNocm9taXVtX2dwdQog
aW1wb3J0IGNocm9taXVtX2xpbnV4CiBpbXBvcnQgY2hyb21pdW1fbWFjCiBpbXBvcnQgY2hyb21p
dW1fd2luCkBAIC0xMzMsNiArMTM0LDE1IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgdGVzdF9xdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfcG9y
dCgicXQiLCBxdC5RdFBvcnQpCiAKKyAgICBkZWYgdGVzdF9jaHJvbWl1bV9ncHVfbGludXgoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLWdwdS1saW51eCIsIGNocm9t
aXVtX2dwdS5DaHJvbWl1bUdwdUxpbnV4UG9ydCkKKworICAgIGRlZiB0ZXN0X2Nocm9taXVtX2dw
dV9tYWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLWdwdS1tYWMi
LCBjaHJvbWl1bV9ncHUuQ2hyb21pdW1HcHVNYWNQb3J0KQorCisgICAgZGVmIHRlc3RfY2hyb21p
dW1fZ3B1X3dpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfcG9ydCgiY2hyb21pdW0tZ3B1
LXdpbiIsIGNocm9taXVtX2dwdS5DaHJvbWl1bUdwdVdpblBvcnQpCisKICAgICBkZWYgdGVzdF9j
aHJvbWl1bV9tYWMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQoImNocm9taXVtLW1h
YyIsIGNocm9taXVtX21hYy5DaHJvbWl1bU1hY1BvcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0X3Bs
YXRmb3JtX3BvcnQoImRhcndpbiIsIHNlbGYuY2hyb21pdW1fb3B0aW9ucywKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQu
cHkKaW5kZXggMjdiNmMwNWFlODEyZTZmNjAwNWMwMGY2Y2IwMGVkZWJlMGYwMzk1MC4uN2VjODE1
YThlY2YwZDYwZGJkZDcxNGQ5ZGZhYWZmNWNlOGI5NDU1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAg
LTQxMCw2ICs0MTAsMTMgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKGJhc2UuRHJpdmVyKToKICAgICAg
ICAgaWYgc2VsZi5faW1hZ2VfcGF0aDoKICAgICAgICAgICAgIGRyaXZlcl9hcmdzLmFwcGVuZCgn
LS1waXhlbC10ZXN0cycpCiAKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfZHJ0OgorICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF9jb21wb3NpdGluZzoKKyAgICAg
ICAgICAgICAgICBkcml2ZXJfYXJncy5hcHBlbmQoJy0tZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBv
c2l0aW5nJykKKworICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5hY2NlbGVyYXRlZF8yZF9j
YW52YXM6CisgICAgICAgICAgICAgICAgZHJpdmVyX2FyZ3MuYXBwZW5kKCctLWVuYWJsZS1hY2Nl
bGVyYXRlZC0yZC1jYW52YXMnKQorCiAgICAgICAgIHJldHVybiBkcml2ZXJfYXJncwogCiAgICAg
ZGVmIHN0YXJ0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNTE5M2RiZGNm
M2UzY2MzN2I2MzBiYmRiZDBmNDc3MDQ0YTllZWFiMi4uOWEwZDI0Yzg2NmFlMWNiOGEyMzZjNDgw
YjViNTNlNTU5OTlkZDE2NSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0xNTA4LDYg
KzE1MDgsMjAgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgb3B0cGFyc2Uu
bWFrZV9vcHRpb24oIi0tdXNlLWRydCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAg
ICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVscD0iVXNlIER1bXBSZW5kZXJUcmVlIGlu
c3RlYWQgb2YgdGVzdF9zaGVsbCIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZyIsCisgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUi
LAorICAgICAgICAgICAgaGVscD0iVXNlIGhhcmR3YXJlLWFjY2VsYXRlZCBjb21wb3NpdGluZyBm
b3IgcmVuZGVyaW5nIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW5vLWFjY2Vs
ZXJhdGVkLWNvbXBvc2l0aW5nIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAor
ICAgICAgICAgICAgZGVzdD0iYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciLAorICAgICAgICAgICAg
aGVscD0iRG9uJ3QgdXNlIGhhcmR3YXJlLWFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciByZW5k
ZXJpbmciKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYWNjZWxlcmF0ZWQtMmQt
Y2FudmFzIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICBo
ZWxwPSJVc2UgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgMkQgQ2FudmFzIGNhbGxzIiksCisgICAgICAg
IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW5vLWFjY2VsZXJhdGVkLTJkLWNhbnZhcyIsCisgICAg
ICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwKKyAgICAgICAgICAgIGRlc3Q9ImFjY2VsZXJh
dGVkXzJkX2NhbnZhcyIsCisgICAgICAgICAgICBoZWxwPSJEb24ndCB1c2UgaGFyZHdhcmUtYWNj
ZWxlcmF0ZWQgMkQgQ2FudmFzIGNhbGxzIiksCiAgICAgXQogCiAgICAgIyBNaXNzaW5nIE1hYy1z
cGVjaWZpYyBvbGQtcnVuLXdlYmtpdC10ZXN0cyBvcHRpb25zOgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggOWQ0ODYwNGRlODQ0Y2Q3ZDQ5MjI4Nzg3MDdl
NTdlMzI2NTYzMGE2YS4uNmZlOTlkNjI3MDEzNTg5ZmZjZDBhYTU2YmFkNmM4Mjc3YTFhMWZjOCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0xMDIsNiAr
MTAyLDE2IEBAIGRlZiBsb2dnaW5nX3J1bihhcmdzPVtdLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSk6
CiAKIAogY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Fj
Y2VsZXJhdGVkX2NvbXBvc2l0aW5nKHNlbGYpOgorICAgICAgICAjIFRoaXMganVzdCB0ZXN0cyB0
aGF0IHdlIHJlY29nbml6ZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3MKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyddKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS1uby1hY2NlbGVyYXRlZC1jb21wb3Np
dGluZyddKSkKKworICAgIGRlZiB0ZXN0X2FjY2VsZXJhdGVkXzJkX2NhbnZhcyhzZWxmKToKKyAg
ICAgICAgIyBUaGlzIGp1c3QgdGVzdHMgdGhhdCB3ZSByZWNvZ25pemUgdGhlIGNvbW1hbmQgbGlu
ZSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0tYWNjZWxlcmF0
ZWQtMmQtY2FudmFzJ10pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyct
LW5vLWFjY2VsZXJhdGVkLTJkLWNhbnZhcyddKSkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYp
OgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oKSkKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>