<?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>35062</bug_id>
          
          <creation_ts>2010-02-17 15:45:39 -0800</creation_ts>
          <short_desc>check sys deps better on chromium ports</short_desc>
          <delta_ts>2010-02-22 23:53:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>agl</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191265</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-17 15:45:39 -0800</bug_when>
    <thetext>check sys deps better on chromium ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191268</commentid>
    <comment_count>1</comment_count>
      <attachid>48943</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-17 15:48:08 -0800</bug_when>
    <thetext>Created attachment 48943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191709</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 13:14:48 -0800</bug_when>
    <thetext>David, Eric, can I get one of you two to review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191728</commentid>
    <comment_count>3</comment_count>
      <attachid>48943</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-18 14:10:54 -0800</bug_when>
    <thetext>Comment on attachment 48943
Patch

I plan to add PrettyPatch support (a ruby version of wdiff which is inluded in webkit.org&apos;s repository) to the base.Port at some point.  Then ChromiumMac can use that instead of wdiff if they so desire.

We eventually need to rename &quot;target&quot; to &quot;configuration&quot; to match webkit/mac terminology:
 188         return self._build_path(self._options.target, &apos;image_diff&apos;)

I&apos;m surprised that the _build_path function doesn&apos;t automatically include the target already:
 182         return self._build_path(self._options.target, &apos;test_shell&apos;)

seems silly to have to include it everywhere.  Maybe you just want a _current_build_path or _build_path when passed &quot;none&quot; for the &quot;target&quot; option should default to the current?

Why are both debug and release required?
 106     def _check_build_up_to_date(self, target):

We tend to avoid space-based indent alignment in webkit, because you always end up having to change it later:
 59         result = self._check_lighttpd_install() and result
 60         result = self._check_apache_install()   and result
 61         result = self._check_wdiff_install()    and result


Shouldn&apos;t this just be on the base port?
 45 def check_file_exists(path_to_file, str):

Otherwise looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191731</commentid>
    <comment_count>4</comment_count>
      <attachid>48943</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-02-18 14:13:17 -0800</bug_when>
    <thetext>Comment on attachment 48943
Patch

&gt;      def check_sys_deps(self):
&gt; -        # We have no platform-specific dependencies to check.
&gt; -        return True
&gt; +        result = chromium.ChromiumPort.check_sys_deps(self)
&gt; +        result = self._check_lighttpd_install() and result
&gt; +        result = self._check_apache_install()   and result
&gt; +        result = self._check_wdiff_install()    and result
&gt; +        result = self._check_build_up_to_date(self._options.target) and result
&gt; +        if not result:
&gt; +            logging.error(&apos;For complete Linux build requirements, please see:&apos;)
&gt; +            logging.error(&apos;&apos;)
&gt; +            logging.error(&apos;    http://code.google.com/p/chromium/wiki/&apos;
&gt; +                          &apos;LinuxBuildInstructions&apos;)
&gt; +        return result

Here and elsewhere, it would be nice if we only checked for these things if
they&apos;re actually going to be used. For example, only one of lighttpd or apache
is needed, and only if we&apos;re going to be running http tests. Also, wdiff is
only needed if the appropriate flag is turned on.

Can we pass that info into check_sys_deps? Most of that info is in the commandline options, so we should be able to just pass that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191732</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 14:15:51 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 48943 [details])
&gt; I plan to add PrettyPatch support (a ruby version of wdiff which is inluded in
&gt; webkit.org&apos;s repository) to the base.Port at some point.  Then ChromiumMac can
&gt; use that instead of wdiff if they so desire.
&gt;

Cool. I&apos;ll take a look at PrettyPatch.
 
&gt; We eventually need to rename &quot;target&quot; to &quot;configuration&quot; to match webkit/mac
&gt; terminology:

Okay.

&gt;  188         return self._build_path(self._options.target, &apos;image_diff&apos;)
&gt; 
&gt; I&apos;m surprised that the _build_path function doesn&apos;t automatically include the
&gt; target already:
&gt;  182         return self._build_path(self._options.target, &apos;test_shell&apos;)
&gt;

It did before, actually. I just changed it for this purpose.
 
&gt; seems silly to have to include it everywhere.  Maybe you just want a
&gt; _current_build_path or _build_path when passed &quot;none&quot; for the &quot;target&quot; option
&gt; should default to the current?
&gt;

Yeah, that might be better.
 
&gt; Why are both debug and release required?
&gt;  106     def _check_build_up_to_date(self, target):
&gt;

They aren&apos;t. If one doesn&apos;t exist, you get the OSError exception raised, and we fall out happily.
 
&gt; We tend to avoid space-based indent alignment in webkit, because you always end
&gt; up having to change it later:
&gt;  59         result = self._check_lighttpd_install() and result
&gt;  60         result = self._check_apache_install()   and result
&gt;  61         result = self._check_wdiff_install()    and result
&gt;

Yeah, I could see that.
 
&gt; 
&gt; Shouldn&apos;t this just be on the base port?
&gt;  45 def check_file_exists(path_to_file, str):
&gt;

It could be. I resisted putting it on the base port just b/c I wasn&apos;t sure if others would want it outside of Chromium. (And I would&apos;ve had to import another file).

-- Dirk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191763</commentid>
    <comment_count>6</comment_count>
      <attachid>49046</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 15:26:40 -0800</bug_when>
    <thetext>Created attachment 49046
patch updated w/ eric, ojan&apos;s feedback

adding revised patch w/ eric and ojan&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191781</commentid>
    <comment_count>7</comment_count>
      <attachid>49046</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-02-18 16:30:58 -0800</bug_when>
    <thetext>Comment on attachment 49046
patch updated w/ eric, ojan&apos;s feedback

&gt; +    def _check_build_up_to_date(self, target):
&gt; +        if target in (&apos;Debug&apos;, &apos;Release&apos;):
&gt; +            try:
&gt; +                debug_path = self._build_path(&apos;Debug&apos;, &apos;test_shell&apos;)
&gt; +                release_path = self._build_path(&apos;Release&apos;, &apos;test_shell&apos;)
&gt; +
&gt; +                debug_mtime = os.stat(debug_path).st_mtime
&gt; +                release_mtime = os.stat(release_path).st_mtime
&gt; +
&gt; +                if (debug_mtime &gt; release_mtime and target == &apos;Release&apos; or
&gt; +                    release_mtime &gt; debug_mtime and target == &apos;Debug&apos;):
&gt; +                    logging.warning(&apos;You are not running the most &apos;
&gt; +                                    &apos;recent test_shell binary. You need to &apos;
&gt; +                                    &apos;pass --debug or not to select between &apos;
&gt; +                                    &apos;Debug and Release.&apos;)
&gt; +                    logging.warning(&apos;&apos;)
&gt; +            # This will fail if we don&apos;t have both a debug and release binary.
&gt; +            # That&apos;s fine because, in this case, we must already be running the
&gt; +            # most up-to-date one.
&gt; +            except OSError:
&gt; +                pass
&gt; +        return True

Why do we check this? And why only on Linux? I can imagine cases where I&apos;d want to run a binary that&apos;s not the most recent (e.g. if I don&apos;t want to spend the time to rebuild just to test something quickly in a release or debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191787</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 17:25:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 49046 [details])
&gt; &gt; +    def _check_build_up_to_date(self, target):
&gt; &gt; +        if target in (&apos;Debug&apos;, &apos;Release&apos;):
&gt; &gt; +            try:
&gt; &gt; +                debug_path = self._build_path(&apos;Debug&apos;, &apos;test_shell&apos;)
&gt; &gt; +                release_path = self._build_path(&apos;Release&apos;, &apos;test_shell&apos;)
&gt; &gt; +
&gt; &gt; +                debug_mtime = os.stat(debug_path).st_mtime
&gt; &gt; +                release_mtime = os.stat(release_path).st_mtime
&gt; &gt; +
&gt; &gt; +                if (debug_mtime &gt; release_mtime and target == &apos;Release&apos; or
&gt; &gt; +                    release_mtime &gt; debug_mtime and target == &apos;Debug&apos;):
&gt; &gt; +                    logging.warning(&apos;You are not running the most &apos;
&gt; &gt; +                                    &apos;recent test_shell binary. You need to &apos;
&gt; &gt; +                                    &apos;pass --debug or not to select between &apos;
&gt; &gt; +                                    &apos;Debug and Release.&apos;)
&gt; &gt; +                    logging.warning(&apos;&apos;)
&gt; &gt; +            # This will fail if we don&apos;t have both a debug and release binary.
&gt; &gt; +            # That&apos;s fine because, in this case, we must already be running the
&gt; &gt; +            # most up-to-date one.
&gt; &gt; +            except OSError:
&gt; &gt; +                pass
&gt; &gt; +        return True
&gt; 
&gt; Why do we check this? And why only on Linux? I can imagine cases where I&apos;d want
&gt; to run a binary that&apos;s not the most recent (e.g. if I don&apos;t want to spend the
&gt; time to rebuild just to test something quickly in a release or debug build.

Agreed. Presumably that&apos;s why it&apos;s a warning and not an error. Here I am merely cloning over code that existed in platform_utils_linux.py (and which wasn&apos;t in the _mac or _win ports). I personally am indifferent to this feature.

It looks like agl@chromium.org added this back in september. Adam, any insight here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191789</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-02-18 17:31:57 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Agreed. Presumably that&apos;s why it&apos;s a warning and not an error. Here I am merely
&gt; cloning over code that existed in platform_utils_linux.py (and which wasn&apos;t in
&gt; the _mac or _win ports). I personally am indifferent to this feature.

Ah. Sorry, I missed that it&apos;s a warning. That&apos;s nice actually. That code looks cross-platform to me. Could this be moved into the cross-platform code?

In either case, this lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191792</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 17:43:59 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Agreed. Presumably that&apos;s why it&apos;s a warning and not an error. Here I am merely
&gt; &gt; cloning over code that existed in platform_utils_linux.py (and which wasn&apos;t in
&gt; &gt; the _mac or _win ports). I personally am indifferent to this feature.
&gt; 
&gt; Ah. Sorry, I missed that it&apos;s a warning. That&apos;s nice actually. That code looks
&gt; cross-platform to me. Could this be moved into the cross-platform code?
&gt; 
&gt; In either case, this lgtm.

Yes, there&apos;s no reason this couldn&apos;t be moved into the cross-platform code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191798</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 18:14:20 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Agreed. Presumably that&apos;s why it&apos;s a warning and not an error. Here I am merely
&gt; &gt; &gt; cloning over code that existed in platform_utils_linux.py (and which wasn&apos;t in
&gt; &gt; &gt; the _mac or _win ports). I personally am indifferent to this feature.
&gt; &gt; 
&gt; &gt; Ah. Sorry, I missed that it&apos;s a warning. That&apos;s nice actually. That code looks
&gt; &gt; cross-platform to me. Could this be moved into the cross-platform code?
&gt; &gt; 
&gt; &gt; In either case, this lgtm.
&gt; 
&gt; Yes, there&apos;s no reason this couldn&apos;t be moved into the cross-platform code.

I take that back (slightly). The code above assumes the names of the test_shell binary (and the path). You&apos;d have to make that generic, probably ideally by adding a target parameter to _path_to_driver().

I will do that and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191800</commentid>
    <comment_count>12</comment_count>
      <attachid>49052</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-18 18:15:03 -0800</bug_when>
    <thetext>Created attachment 49052
patch revised to make _check_build_up_to_date() shared by chromium ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191918</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-02-19 08:11:34 -0800</bug_when>
    <thetext>&gt; It looks like agl@chromium.org added this back in september. Adam, any insight
&gt; here?

It resulted from far too many times when the layout tests were running a different binary from the one that I thought they were. I only added it for Linux because I wasn&apos;t sure that it would be universally appreciated, but I could poll all the Linux people in a couple of seconds.

If you think it would be good on other platforms than that would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191934</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-02-19 09:06:48 -0800</bug_when>
    <thetext>Thanks for making all those changes. lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192090</commentid>
    <comment_count>15</comment_count>
      <attachid>48943</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-19 16:11:09 -0800</bug_when>
    <thetext>Comment on attachment 48943
Patch

Cleared Eric Seidel&apos;s review+ from obsolete attachment 48943 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192587</commentid>
    <comment_count>16</comment_count>
      <attachid>49052</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-22 13:17:30 -0800</bug_when>
    <thetext>Comment on attachment 49052
patch revised to make _check_build_up_to_date() shared by chromium ports

Looks prematurely wrapped:
 66         result = check_file_exists(test_shell_binary_path,
 67                                   &apos;test driver&apos;)

We&apos;ll eventually change this to match the rest of WebKit:
178                     logging.warning(&apos;You are not running the most &apos;
 179                                     &apos;recent test_shell binary. You need to &apos;
 180                                     &apos;pass --debug or not to select between &apos;
 181                                     &apos;Debug and Release.&apos;)

(webKit scripts respect set-webkit-configuration, and takes either --debug or --release on the command line.)

This is sorta confusing to not tell them why it failed:
58         result = self._check_wdiff_install() and result
 59         if not result:
 60             logging.error(&apos;For complete Mac build requirements, please see:&apos;)
 61             logging.error(&apos;&apos;)
 62             logging.error(&apos;    http://code.google.com/p/chromium/wiki/&apos;
 63                           &apos;MacBuildInstructions&apos;)

This seems like it could cause confusion with out of date binaries in webkit:
     def _build_path(self, *comps):
97          # FIXME(dpranke): allow for builds under &apos;chrome&apos; as well.
98          return self.path_from_chromium_base(&apos;webkit&apos;, self._options.target,
99                                              *comps)
 104         p = self.path_from_chromium_base(&apos;webkit&apos;, *comps)
 105         if os.path.exists(p):
 106             return p
 107         return self.path_from_chromium_base(&apos;chrome&apos;, *comps)

This looks no worse than current.  so rs=me.
Please consider the above comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192600</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-22 13:50:14 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 49052 [details])
&gt; Looks prematurely wrapped:
&gt;  66         result = check_file_exists(test_shell_binary_path,
&gt;  67                                   &apos;test driver&apos;)
&gt; 

Fixed. Not sure how I missed this.

&gt; We&apos;ll eventually change this to match the rest of WebKit:
&gt; 178                     logging.warning(&apos;You are not running the most &apos;
&gt;  179                                     &apos;recent test_shell binary. You need to
&gt; &apos;
&gt;  180                                     &apos;pass --debug or not to select between
&gt; &apos;
&gt;  181                                     &apos;Debug and Release.&apos;)
&gt; 
&gt; (webKit scripts respect set-webkit-configuration, and takes either --debug or
&gt; --release on the command line.)
&gt; 

That&apos;s up to you :)

&gt; This is sorta confusing to not tell them why it failed:
&gt; 58         result = self._check_wdiff_install() and result
&gt;  59         if not result:
&gt;  60             logging.error(&apos;For complete Mac build requirements, please
&gt; see:&apos;)
&gt;  61             logging.error(&apos;&apos;)
&gt;  62             logging.error(&apos;    http://code.google.com/p/chromium/wiki/&apos;
&gt;  63                           &apos;MacBuildInstructions&apos;)
&gt;

The error message is logged as part of _check_wdiff_install().
 
&gt; This seems like it could cause confusion with out of date binaries in webkit:
&gt;      def _build_path(self, *comps):
&gt; 97          # FIXME(dpranke): allow for builds under &apos;chrome&apos; as well.
&gt; 98          return self.path_from_chromium_base(&apos;webkit&apos;, self._options.target,
&gt; 99                                              *comps)
&gt;  104         p = self.path_from_chromium_base(&apos;webkit&apos;, *comps)
&gt;  105         if os.path.exists(p):
&gt;  106             return p
&gt;  107         return self.path_from_chromium_base(&apos;chrome&apos;, *comps)
&gt;

Agreed. It is what we currently do on windows. I wish we had a single build dir, but we don&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192602</commentid>
    <comment_count>18</comment_count>
      <attachid>49239</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-22 13:55:06 -0800</bug_when>
    <thetext>Created attachment 49239
update w/ typo fix, updated changelog date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192604</commentid>
    <comment_count>19</comment_count>
      <attachid>49239</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-22 13:57:04 -0800</bug_when>
    <thetext>Comment on attachment 49239
update w/ typo fix, updated changelog date.

Rejecting patch 49239 from review queue.

dpranke@chromium.org does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in WebKitTools/Scripts/webkitpy/committers.py by adding yourself to the file (no review needed).  Due to bug 30084 the commit-queue will require a restart after your change.  Please contact eseidel@chromium.org to request a commit-queue restart.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192606</commentid>
    <comment_count>20</comment_count>
      <attachid>49239</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-22 13:59:24 -0800</bug_when>
    <thetext>Comment on attachment 49239
update w/ typo fix, updated changelog date.

You don&apos;t have to set r+ for things to get committed.  The commit-queue will find this patch with just the cq+ and commit it.  It won&apos;t commit patches with r=? or r-, and if patches have OOPS in the reviewer line it won&apos;t fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192608</commentid>
    <comment_count>21</comment_count>
      <attachid>49239</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-02-22 14:01:02 -0800</bug_when>
    <thetext>Comment on attachment 49239
update w/ typo fix, updated changelog date.

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192612</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-22 14:05:16 -0800</bug_when>
    <thetext>I was demonstrating to Dirk that the commit-queue would work w/o an r+ :)  But OK.  The commit-queue (really svn-apply) won&apos;t really do anything with the r+ on this patch, since the reviewer line is already filled in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192615</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-02-22 14:07:40 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; I was demonstrating to Dirk that the commit-queue would work w/o an r+ :)  But
&gt; OK.  The commit-queue (really svn-apply) won&apos;t really do anything with the r+
&gt; on this patch, since the reviewer line is already filled in.

Good to know, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192802</commentid>
    <comment_count>24</comment_count>
      <attachid>49239</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-22 23:53:45 -0800</bug_when>
    <thetext>Comment on attachment 49239
update w/ typo fix, updated changelog date.

Clearing flags on attachment: 49239

Committed r55123: &lt;http://trac.webkit.org/changeset/55123&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192803</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-22 23:53:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48943</attachid>
            <date>2010-02-17 15:48:08 -0800</date>
            <delta_ts>2010-02-19 16:11:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35062-20100217154807.patch</filename>
            <type>text/plain</type>
            <size>13969</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlYTJkYTkyLi5lZmYxODVmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDIt
MTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgY2hlY2tpbmcgZm9yIG1p
c3NpbmcgYmluYXJpZXMgYW5kIHBhY2thZ2VzIHRvIGNoZWNrX3N5c19kZXBzKCkKKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjIKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X21hYy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX3dpbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorCiAyMDEwLTAyLTE3ICBEaWVnbyBHb256YWxl
eiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IGExNzUzNDMuLmJkYzRjNTIg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNDIsNiArNDIsMTQgQEAgaW1wb3J0IGh0dHBfc2Vy
dmVyCiBpbXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCiAKK2RlZiBjaGVja19maWxlX2V4aXN0cyhw
YXRoX3RvX2ZpbGUsIHN0cik6CisgICAgIiIiVmVyaWZ5IHRoZSBleGVjdXRhYmxlIGlzIHByZXNl
bnQgd2hlcmUgZXhwZWN0ZWQgb3IgbG9nIGFuIGVycm9yLiIiIgorICAgIGlmIG5vdCBvcy5wYXRo
LmV4aXN0cyhwYXRoX3RvX2ZpbGUpOgorICAgICAgICBsb2dnaW5nLmVycm9yKCdVbmFibGUgdG8g
ZmluZCAlcyBhdCAlcycgJSAoc3RyLCBwYXRoX3RvX2ZpbGUpKQorICAgICAgICByZXR1cm4gRmFs
c2UKKyAgICByZXR1cm4gVHJ1ZQorCisKIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgog
ICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIENocm9taXVtIGltcGxlbWVudGF0aW9ucyBv
ZiB0aGUgUG9ydCBjbGFzcy4iIiIKIApAQCAtNTUsMjUgKzYzLDI1IEBAIGNsYXNzIENocm9taXVt
UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAg
cmVzdWx0ID0gVHJ1ZQogICAgICAgICB0ZXN0X3NoZWxsX2JpbmFyeV9wYXRoID0gc2VsZi5fcGF0
aF90b19kcml2ZXIoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0ZXN0X3NoZWxsX2JpbmFy
eV9wYXRoKToKKyAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9leGlzdHModGVzdF9zaGVsbF9i
aW5hcnlfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBkcml2
ZXInKQorICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Q
b3BlbihbdGVzdF9zaGVsbF9iaW5hcnlfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1jaGVjay1sYXlvdXQtdGVzdC1zeXMtZGVwcyddKQogICAgICAgICAgICAg
aWYgcHJvYy53YWl0KCkgIT0gMDoKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJBYm9y
dGluZyBiZWNhdXNlIHN5c3RlbSBkZXBlbmRlbmNpZXMgY2hlY2sgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZhaWxlZC4iKQotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Io
IlRvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vY2hlY2stc3lzLWRlcHMiKQorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1N5c3RlbSBkZXBlbmRlbmNpZXMgY2hlY2sgZmFpbGVkLicp
CisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignVG8gb3ZlcnJpZGUsIGludm9rZSB3aXRo
IC0tbm9jaGVjay1zeXMtZGVwcycpCisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBGYWxzZQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgbG9nZ2luZy5lcnJvcigndGVzdCBkcml2ZXIgaXMgbm90IGZvdW5kIGF0ICVzJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfc2hlbGxfYmluYXJ5X3BhdGgpCi0gICAgICAgICAg
ICByZXN1bHQgPSBGYWxzZQotCi0gICAgICAgIGltYWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhf
dG9faW1hZ2VfZGlmZigpCi0gICAgICAgIGlmIChub3Qgb3MucGF0aC5leGlzdHMoaW1hZ2VfZGlm
Zl9wYXRoKSBhbmQgbm90Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm5vX3BpeGVsX3Rlc3Rz
KToKLSAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ2ltYWdlIGRpZmYgbm90IGZvdW5kIGF0ICVz
JyAlIGltYWdlX2RpZmZfcGF0aCkKLSAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIlRvIG92ZXJy
aWRlLCBpbnZva2Ugd2l0aCAtLW5vLXBpeGVsLXRlc3RzIikKLSAgICAgICAgICAgIHJlc3VsdCA9
IEZhbHNlCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorCisgICAgICAgIGlmIG5vdCBz
ZWxmLl9vcHRpb25zLm5vX3BpeGVsX3Rlc3RzOgorICAgICAgICAgICAgaW1hZ2VfZGlmZl9wYXRo
ID0gc2VsZi5fcGF0aF90b19pbWFnZV9kaWZmKCkKKyAgICAgICAgICAgIGlmIG5vdCBjaGVja19m
aWxlX2V4aXN0cyhpbWFnZV9kaWZmX3BhdGgsICdpbWFnZSBkaWZmIGV4ZScpOgorICAgICAgICAg
ICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1RvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vLXBpeGVs
LXRlc3RzJykKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IEZhbHNlCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9saW51eC5weQppbmRleCBiODE3MjUxLi4xNmQzNTcwIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xp
bnV4LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbGludXgucHkKQEAgLTI3LDggKzI3LDkgQEAKICMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKLSIiIkNocm9taXVtIE1hYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9y
dCBpbnRlcmZhY2UuIiIiCisiIiJDaHJvbWl1bSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
UG9ydCBpbnRlcmZhY2UuIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBw
bGF0Zm9ybQogaW1wb3J0IHNpZ25hbApAQCAtNTQsOCArNTUsMTcgQEAgY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAgICAgICBzZWxmLl93
ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJyldCiAKICAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2Vs
Zik6Ci0gICAgICAgICMgV2UgaGF2ZSBubyBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMg
dG8gY2hlY2suCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJlc3VsdCA9IGNocm9taXVt
LkNocm9taXVtUG9ydC5jaGVja19zeXNfZGVwcyhzZWxmKQorICAgICAgICByZXN1bHQgPSBzZWxm
Ll9jaGVja19saWdodHRwZF9pbnN0YWxsKCkgYW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBz
ZWxmLl9jaGVja19hcGFjaGVfaW5zdGFsbCgpICAgYW5kIHJlc3VsdAorICAgICAgICByZXN1bHQg
PSBzZWxmLl9jaGVja193ZGlmZl9pbnN0YWxsKCkgICAgYW5kIHJlc3VsdAorICAgICAgICByZXN1
bHQgPSBzZWxmLl9jaGVja19idWlsZF91cF90b19kYXRlKHNlbGYuX29wdGlvbnMudGFyZ2V0KSBh
bmQgcmVzdWx0CisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVy
cm9yKCdGb3IgY29tcGxldGUgTGludXggYnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2Ugc2VlOicp
CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJv
cignICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS93aWtpLycKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0xpbnV4QnVpbGRJbnN0cnVjdGlvbnMnKQorICAgICAgICByZXR1
cm4gcmVzdWx0CiAKICAgICBkZWYgbnVtX2NvcmVzKHNlbGYpOgogICAgICAgICBudW1fY29yZXMg
PSBvcy5zeXNjb25mKCJTQ19OUFJPQ0VTU09SU19PTkxOIikKQEAgLTc4LDExICs4OCw2NSBAQCBj
bGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIGRlZiBf
YnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zyb21f
Y2hyb21pdW1fYmFzZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihi
YXNlLCAnc2NvbnNidWlsZCcpKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9j
aHJvbWl1bV9iYXNlKCdzY29uc2J1aWxkJywKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnRhcmdldCwgKmNvbXBzKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9t
aXVtX2Jhc2UoJ3Njb25zYnVpbGQnLCAqY29tcHMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnb3V0JywKLSAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnRhcmdldCwgKmNvbXBzKQorICAgICAgICAgICAgcmV0dXJuIHNl
bGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ291dCcsICpjb21wcykKKworICAgIGRlZiBfY2hl
Y2tfYXBhY2hlX2luc3RhbGwoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNr
X2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9fYXBhY2hlKCksCisgICAgICAgICAgICAiYXBhY2hl
MiIpCisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3Bh
dGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKCksCisgICAgICAgICAgICAiYXBhY2hlMiBjb25maWcg
ZmlsZSIpIGFuZCByZXN1bHQKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIGxv
Z2dpbmcuZXJyb3IoJ1BsZWFzZSBpbnN0YWxsIHVzaW5nOiAic3VkbyBhcHQtZ2V0IGluc3RhbGwg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBhY2hlMiBsaWJhcGFjaGUyLW1vZC1waHA1
IicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICByZXR1cm4gcmVzdWx0
CisKKyAgICBkZWYgX2NoZWNrX2J1aWxkX3VwX3RvX2RhdGUoc2VsZiwgdGFyZ2V0KToKKyAgICAg
ICAgaWYgdGFyZ2V0IGluICgnRGVidWcnLCAnUmVsZWFzZScpOgorICAgICAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgICAgIGRlYnVnX3BhdGggPSBzZWxmLl9idWlsZF9wYXRoKCdEZWJ1ZycsICd0
ZXN0X3NoZWxsJykKKyAgICAgICAgICAgICAgICByZWxlYXNlX3BhdGggPSBzZWxmLl9idWlsZF9w
YXRoKCdSZWxlYXNlJywgJ3Rlc3Rfc2hlbGwnKQorCisgICAgICAgICAgICAgICAgZGVidWdfbXRp
bWUgPSBvcy5zdGF0KGRlYnVnX3BhdGgpLnN0X210aW1lCisgICAgICAgICAgICAgICAgcmVsZWFz
ZV9tdGltZSA9IG9zLnN0YXQocmVsZWFzZV9wYXRoKS5zdF9tdGltZQorCisgICAgICAgICAgICAg
ICAgaWYgKGRlYnVnX210aW1lID4gcmVsZWFzZV9tdGltZSBhbmQgdGFyZ2V0ID09ICdSZWxlYXNl
JyBvcgorICAgICAgICAgICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5k
IHRhcmdldCA9PSAnRGVidWcnKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5n
KCdZb3UgYXJlIG5vdCBydW5uaW5nIHRoZSBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdyZWNlbnQgdGVzdF9zaGVsbCBiaW5hcnkuIFlvdSBuZWVkIHRvICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzIC0tZGVidWcgb3Igbm90IHRv
IHNlbGVjdCBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdE
ZWJ1ZyBhbmQgUmVsZWFzZS4nKQorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmco
JycpCisgICAgICAgICAgICAjIFRoaXMgd2lsbCBmYWlsIGlmIHdlIGRvbid0IGhhdmUgYm90aCBh
IGRlYnVnIGFuZCByZWxlYXNlIGJpbmFyeS4KKyAgICAgICAgICAgICMgVGhhdCdzIGZpbmUgYmVj
YXVzZSwgaW4gdGhpcyBjYXNlLCB3ZSBtdXN0IGFscmVhZHkgYmUgcnVubmluZyB0aGUKKyAgICAg
ICAgICAgICMgbW9zdCB1cC10by1kYXRlIG9uZS4KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9y
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBf
Y2hlY2tfbGlnaHR0cGRfaW5zdGFsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0u
Y2hlY2tfZmlsZV9leGlzdHMoCisgICAgICAgICAgICBzZWxmLl9wYXRoX3RvX2xpZ2h0dHBkKCks
ICJMaWdIVFRQZCBleGVjdXRhYmxlIikKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tf
ZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19saWdodHRwZF9waHAoKSwKKyAgICAgICAgICAgICJQ
SFAgQ0dJIGV4ZWN1dGFibGUiKSBhbmQgcmVzdWx0CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVt
LmNoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9fbGlnaHR0cGRfbW9kdWxlcygpLAorICAg
ICAgICAgICAgIkxpZ0hUVFBkIG1vZHVsZXMiKSBhbmQgcmVzdWx0CisgICAgICAgIGlmIG5vdCBy
ZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdQbGVhc2UgaW5zdGFsbCB1c2luZzog
InN1ZG8gYXB0LWdldCBpbnN0YWxsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpZ2h0
dHBkIHBocDUtY2dpIicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICBy
ZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX2NoZWNrX3dkaWZmX2luc3RhbGwoc2VsZik6CisgICAg
ICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9fd2Rp
ZmYoKSwgJ3dkaWZmJykKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIGxvZ2dp
bmcuZXJyb3IoJ1BsZWFzZSBpbnN0YWxsIHVzaW5nOiAic3VkbyBhcHQtZ2V0IGluc3RhbGwgJykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dkaWZmIicpCisgICAgICAgICAgICBsb2dnaW5n
LmVycm9yKCcnKQorICAgICAgIHJldHVybiByZXN1bHQKKwogCiAgICAgZGVmIF9raWxsX3Byb2Nl
c3Moc2VsZiwgcGlkKToKICAgICAgICAgIiIiRm9yY2VmdWxseSBraWxsIHRoZSBwcm9jZXNzLgpA
QCAtMTE1LDE2ICsxNzksMTYgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hy
b21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuICIvdXNyL2Jpbi9waHAtY2dpIgogCiAgICAgZGVm
IF9wYXRoX3RvX2RyaXZlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
J3Rlc3Rfc2hlbGwnKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRp
b25zLnRhcmdldCwgJ3Rlc3Rfc2hlbGwnKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxm
KToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnaW1hZ2VfZGlmZicpCisgICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMudGFyZ2V0LCAnaW1hZ2Vf
ZGlmZicpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6Ci0gICAgICAgIHJldHVybiAn
d2RpZmYnCisgICAgICAgIHJldHVybiAnL3Vzci9iaW4vd2RpZmYnCiAKICAgICBkZWYgX3NodXRf
ZG93bl9odHRwX3NlcnZlcihzZWxmLCBzZXJ2ZXJfcGlkKToKICAgICAgICAgIiIiU2h1dCBkb3du
IHRoZSBsaWdodHRwZCB3ZWIgc2VydmVyLiBCbG9ja3MgdW50aWwgaXQncyBmdWxseQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9tYWMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX21hYy5weQppbmRleCBiY2ZmY2Y4Li5jNGUzYzdiIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21h
Yy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX21hYy5weQpAQCAtMjksNiArMjksNyBAQAogCiAiIiJDaHJvbWl1bSBNYWMgaW1w
bGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgogCitpbXBvcnQgbG9nZ2luZwog
aW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaWduYWwKQEAgLTUzLDggKzU0LDE0
IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAg
ICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdtYWMnKV0KIAogICAgIGRlZiBj
aGVja19zeXNfZGVwcyhzZWxmKToKLSAgICAgICAgIyBXZSBoYXZlIG5vIHNwZWNpZmljIHBsYXRm
b3JtIGRlcGVuZGVuY2llcy4KLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmVzdWx0ID0g
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYpCisgICAgICAgIHJlc3Vs
dCA9IHNlbGYuX2NoZWNrX3dkaWZmX2luc3RhbGwoKSBhbmQgcmVzdWx0CisgICAgICAgIGlmIG5v
dCByZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdGb3IgY29tcGxldGUgTWFjIGJ1
aWxkIHJlcXVpcmVtZW50cywgcGxlYXNlIHNlZTonKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJv
cignJykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJyAgICBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vd2lraS8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdNYWNCdWls
ZEluc3RydWN0aW9ucycpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBudW1fY29y
ZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBpbnQoc3VicHJvY2Vzcy5Qb3BlbihbJ3N5c2N0bCcs
Jy1uJywnaHcubmNwdSddLApAQCAtODQsNiArOTEsMTYgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0
KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9j
aHJvbWl1bV9iYXNlKCd4Y29kZWJ1aWxkJywgc2VsZi5fb3B0aW9ucy50YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykKIAorICAgIGRlZiBf
Y2hlY2tfd2RpZmZfaW5zdGFsbChzZWxmKToKKyAgICAgICAgZiA9IG9wZW4ob3MuZGV2bnVsbCwg
J3cnKQorICAgICAgICByY29kZSA9IHN1YnByb2Nlc3MuY2FsbChbJ3dkaWZmJ10sIHN0ZGVycj1m
KQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgaWYgcmNvZGUgPT0gMTI3OgorICAgICAgICAg
ICAgbG9nZ2luZy5lcnJvcignd2RpZmYgbm90IGZvdW5kLiBJbnN0YWxsIHVzaW5nIE1hY1BvcnRz
IG9yIHNvbWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXIgbWVhbnMnKQorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgX2xp
Z2h0dHBkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2xpZ2h0dHBkJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hYycsICpjb21wcykKQEAgLTEyNyw3ICsx
NDQsNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAg
ICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgogICAgICAgICAjIFRPRE8ocGlua2VydG9uKTog
bWFrZSB8dGFyZ2V0fCBoYXBweSB3aXRoIGNhc2Utc2Vuc2l0aXZlIGZpbGUKICAgICAgICAgIyBz
eXN0ZW1zLgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnVGVzdFNoZWxsLmFwcCcs
ICdDb250ZW50cycsICdNYWNPUycsIAorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgn
VGVzdFNoZWxsLmFwcCcsICdDb250ZW50cycsICdNYWNPUycsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdUZXN0U2hlbGwnKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxm
KToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fd2luLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKaW5kZXggNWViMGJhMS4uNGM4ZTg1ZCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKQEAgLTYwLDggKzYwLDE0IEBAIGNsYXNzIENocm9t
aXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gZGlycwog
CiAgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgotICAgICAgICAjIFRPRE8oZHByYW5rZSk6
IGltcGxlbWVudCB0aGlzCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJlc3VsdCA9IGNo
cm9taXVtLkNocm9taXVtUG9ydC5jaGVja19zeXNfZGVwcyhzZWxmKQorICAgICAgICBpZiBub3Qg
cmVzdWx0OgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignRm9yIGNvbXBsZXRlIFdpbmRvd3Mg
YnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAn
c2VlOicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICAgICAgbG9nZ2lu
Zy5lcnJvcignICAgIGh0dHA6Ly9kZXYuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvaG93LXRvcy8n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZC1pbnN0cnVjdGlvbnMtd2luZG93cycp
CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBnZXRfYWJzb2x1dGVfcGF0aChzZWxm
LCBmaWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCBpbiB1bml4
IGZvcm1hdCBmb3IgdGhlIGdpdmVuIGZpbGVuYW1lLiIiIgpAQCAtOTQsOCArMTAwLDExIEBAIGNs
YXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICMKIAogICAg
IGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAgICAjIEZJWE1FKGRwcmFua2Up
OiBhbGxvdyBmb3IgYnVpbGRzIHVuZGVyICdjaHJvbWUnIGFzIHdlbGwuCi0gICAgICAgIHJldHVy
biBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCBzZWxmLl9vcHRpb25zLnRh
cmdldCwKKyAgICAgICAgcCA9IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcs
IHNlbGYuX29wdGlvbnMudGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqY29tcHMpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgorICAgICAgICAg
ICAgcmV0dXJuIHAKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2Uo
J2Nocm9tZScsIHNlbGYuX29wdGlvbnMudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqY29tcHMpCiAKICAgICBkZWYgX2xpZ2h0dHBkX3BhdGgoc2Vs
ZiwgKmNvbXBzKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5Cmlu
ZGV4IGYwYjY4ZWUuLjM3MjYyOGYgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX2Nocm9taXVtX3dlYmtp
dF90ZXN0cy5weQpAQCAtMTM5Myw2ICsxMzkzLDExIEBAIGRlZiBtYWluKG9wdGlvbnMsIGFyZ3Mp
OgogICAgIGlmIG5vdCBvcHRpb25zLnVzZV9hcGFjaGU6CiAgICAgICAgIG9wdGlvbnMudXNlX2Fw
YWNoZSA9IHN5cy5wbGF0Zm9ybSBpbiAoJ2RhcndpbicsICdsaW51eDInKQogCisgICAgIyBDaGVj
ayB0aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBj
b3JyZWN0LgorICAgIGlmIG5vdCBvcHRpb25zLm5vY2hlY2tfc3lzX2RlcHM6CisgICAgICAgIGlm
IG5vdCBwb3J0X29iai5jaGVja19zeXNfZGVwcygpOgorICAgICAgICAgICAgc3lzLmV4aXQoMSkK
KwogICAgIGlmIG9wdGlvbnMucmVzdWx0c19kaXJlY3Rvcnkuc3RhcnRzd2l0aCgiLyIpOgogICAg
ICAgICAjIEFzc3VtZSBpdCdzIGFuIGFic29sdXRlIHBhdGggYW5kIG5vcm1hbGl6ZS4KICAgICAg
ICAgb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSA9IHBvcnRfb2JqLmdldF9hYnNvbHV0ZV9wYXRo
KApAQCAtMTQ1NiwxMSArMTQ2MSw2IEBAIGRlZiBtYWluKG9wdGlvbnMsIGFyZ3MpOgogICAgICAg
ICAgICAgImxpbnQgc3VjY2VlZGVkLiIpCiAgICAgICAgIHN5cy5leGl0KDApCiAKLSAgICAjIENo
ZWNrIHRoYXQgdGhlIHN5c3RlbSBkZXBlbmRlbmNpZXMgKHRoZW1lcywgZm9udHMsIC4uLikgYXJl
IGNvcnJlY3QuCi0gICAgaWYgbm90IG9wdGlvbnMubm9jaGVja19zeXNfZGVwczoKLSAgICAgICAg
aWYgbm90IHBvcnRfb2JqLmNoZWNrX3N5c19kZXBzKCk6Ci0gICAgICAgICAgICBzeXMuZXhpdCgx
KQotCiAgICAgd3JpdGUgPSBjcmVhdGVfbG9nZ2luZ193cml0ZXIob3B0aW9ucywgImNvbmZpZyIp
CiAgICAgd3JpdGUoIlVzaW5nIHBvcnQgJyVzJyIgJSBwb3J0X29iai5uYW1lKCkpCiAgICAgd3Jp
dGUoIlBsYWNpbmcgdGVzdCByZXN1bHRzIGluICVzIiAlIG9wdGlvbnMucmVzdWx0c19kaXJlY3Rv
cnkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49046</attachid>
            <date>2010-02-18 15:26:40 -0800</date>
            <delta_ts>2010-02-18 18:15:03 -0800</delta_ts>
            <desc>patch updated w/ eric, ojan&apos;s feedback</desc>
            <filename>35062.diff</filename>
            <type>text/plain</type>
            <size>15817</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlYTJkYTkyLi4yMzE2YzFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgY2hlY2tpbmcgZm9yIG1p
c3NpbmcgYmluYXJpZXMgYW5kIHBhY2thZ2VzIHRvIGNoZWNrX3N5c19kZXBzKCkKKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjIKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9t
YWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wMi0xNyAgRGllZ28gR29uemFsZXog
IDxkaWVnby5nb256YWxlekBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFy
aXlhIEhpZGF5YXQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTBjN2EzZi4uMjAxZDliZiAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGJhc2Vs
aW5lcy4gVGhlIGRpcmVjdG9yaWVzIGFyZSBzZWFyY2hlZCBpbiBvcmRlci4iIiIKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCcpCiAK
LSAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZik6CisgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNl
bGYsIG5lZWRzX2h0dHApOgogICAgICAgICAiIiJJZiB0aGUgcG9ydCBuZWVkcyB0byBkbyBzb21l
IHJ1bnRpbWUgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHRoZQogICAgICAgICB0ZXN0cyBjYW4gYmUg
cnVuIHN1Y2Nlc3NmdWxseSwgdGhleSBzaG91bGQgYmUgZG9uZSBoZXJlLgogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bS5weQppbmRleCBhMTc1MzQzLi5mZTQzMWJlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAg
LTQyLDYgKzQyLDE0IEBAIGltcG9ydCBodHRwX3NlcnZlcgogaW1wb3J0IHdlYnNvY2tldF9zZXJ2
ZXIKIAogCitkZWYgY2hlY2tfZmlsZV9leGlzdHMocGF0aF90b19maWxlLCBzdHIpOgorICAgICIi
IlZlcmlmeSB0aGUgZXhlY3V0YWJsZSBpcyBwcmVzZW50IHdoZXJlIGV4cGVjdGVkIG9yIGxvZyBh
biBlcnJvci4iIiIKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aF90b19maWxlKToKKyAg
ICAgICAgbG9nZ2luZy5lcnJvcignVW5hYmxlIHRvIGZpbmQgJXMgYXQgJXMnICUgKHN0ciwgcGF0
aF90b19maWxlKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCiBj
bGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNz
IGZvciBDaHJvbWl1bSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFBvcnQgY2xhc3MuIiIiCiAKQEAg
LTUyLDI4ICs2MCwyOCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICBkZWYg
YmFzZWxpbmVfcGF0aChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2Nocm9taXVtX2Jhc2Vs
aW5lX3BhdGgoc2VsZi5fbmFtZSkKIAotICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKKyAg
ICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IFRydWUKICAgICAgICAgdGVzdF9zaGVsbF9iaW5hcnlfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJp
dmVyKCkKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHModGVzdF9zaGVsbF9iaW5hcnlfcGF0aCk6
CisgICAgICAgIHJlc3VsdCA9IGNoZWNrX2ZpbGVfZXhpc3RzKHRlc3Rfc2hlbGxfYmluYXJ5X3Bh
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgZHJpdmVyJykKKyAg
ICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW3Rl
c3Rfc2hlbGxfYmluYXJ5X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0tY2hlY2stbGF5b3V0LXRlc3Qtc3lzLWRlcHMnXSkKICAgICAgICAgICAgIGlmIHByb2Mu
d2FpdCgpICE9IDA6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiQWJvcnRpbmcgYmVj
YXVzZSBzeXN0ZW0gZGVwZW5kZW5jaWVzIGNoZWNrICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsZWQuIikKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJUbyBvdmVy
cmlkZSwgaW52b2tlIHdpdGggLS1ub2NoZWNrLXN5cy1kZXBzIikKKyAgICAgICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCdTeXN0ZW0gZGVwZW5kZW5jaWVzIGNoZWNrIGZhaWxlZC4nKQorICAgICAg
ICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1RvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vY2hl
Y2stc3lzLWRlcHMnKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dp
bmcuZXJyb3IoJ3Rlc3QgZHJpdmVyIGlzIG5vdCBmb3VuZCBhdCAlcycgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3NoZWxsX2JpbmFyeV9wYXRoKQotICAgICAgICAgICAgcmVzdWx0
ID0gRmFsc2UKLQotICAgICAgICBpbWFnZV9kaWZmX3BhdGggPSBzZWxmLl9wYXRoX3RvX2ltYWdl
X2RpZmYoKQotICAgICAgICBpZiAobm90IG9zLnBhdGguZXhpc3RzKGltYWdlX2RpZmZfcGF0aCkg
YW5kIG5vdAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5ub19waXhlbF90ZXN0cyk6Ci0gICAg
ICAgICAgICBsb2dnaW5nLmVycm9yKCdpbWFnZSBkaWZmIG5vdCBmb3VuZCBhdCAlcycgJSBpbWFn
ZV9kaWZmX3BhdGgpCi0gICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJUbyBvdmVycmlkZSwgaW52
b2tlIHdpdGggLS1uby1waXhlbC10ZXN0cyIpCi0gICAgICAgICAgICByZXN1bHQgPSBGYWxzZQor
ICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKKworICAgICAgICBpZiBub3Qgc2VsZi5fb3B0
aW9ucy5ub19waXhlbF90ZXN0czoKKyAgICAgICAgICAgIGltYWdlX2RpZmZfcGF0aCA9IHNlbGYu
X3BhdGhfdG9faW1hZ2VfZGlmZigpCisgICAgICAgICAgICBpZiBub3QgY2hlY2tfZmlsZV9leGlz
dHMoaW1hZ2VfZGlmZl9wYXRoLCAnaW1hZ2UgZGlmZiBleGUnKToKKyAgICAgICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCdUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1uby1waXhlbC10ZXN0cycp
CisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBGYWxzZQogCiAgICAgICAgIHJldHVybiByZXN1bHQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fbGludXgucHkKaW5kZXggYjgxNzI1MS4uODJhYTRlOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2xpbnV4LnB5CkBAIC0yNyw4ICsyNyw5IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCi0iIiJDaHJvbWl1bSBNYWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJm
YWNlLiIiIgorIiIiQ2hyb21pdW0gTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvcnQgaW50
ZXJmYWNlLiIiIgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0K
IGltcG9ydCBzaWduYWwKQEAgLTUzLDkgKzU0LDIyIEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0
KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoJ3dpbicpLAogICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoKCdtYWMnKV0KIAotICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKLSAgICAgICAg
IyBXZSBoYXZlIG5vIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyB0byBjaGVjay4KLSAg
ICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0
cCk6CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19zeXNfZGVw
cyhzZWxmLCBuZWVkc19odHRwKQorICAgICAgICBpZiBuZWVkc19odHRwOgorICAgICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy51c2VfYXBhY2hlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNl
bGYuX2NoZWNrX2FwYWNoZV9pbnN0YWxsKCkgYW5kIHJlc3VsdAorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19saWdodHRwZF9pbnN0YWxsKCkg
YW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja193ZGlmZl9pbnN0YWxsKCkg
YW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19idWlsZF91cF90b19kYXRl
KHNlbGYuX29wdGlvbnMudGFyZ2V0KSBhbmQgcmVzdWx0CisKKyAgICAgICAgaWYgbm90IHJlc3Vs
dDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ0ZvciBjb21wbGV0ZSBMaW51eCBidWlsZCBy
ZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycp
CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcgICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2Nocm9taXVtL3dpa2kvJworICAgICAgICAgICAgICAgICAgICAgICAgICAnTGludXhCdWlsZElu
c3RydWN0aW9ucycpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBudW1fY29yZXMo
c2VsZik6CiAgICAgICAgIG51bV9jb3JlcyA9IG9zLnN5c2NvbmYoIlNDX05QUk9DRVNTT1JTX09O
TE4iKQpAQCAtNzgsMTEgKzkyLDY1IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6CiAgICAg
ICAgIGJhc2UgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCkKICAgICAgICAgaWYgb3Mu
cGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2UsICdzY29uc2J1aWxkJykpOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3Njb25zYnVpbGQnLAotICAg
ICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGFyZ2V0LCAqY29tcHMpCisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnc2NvbnNidWlsZCcsICpjb21wcykK
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1
bV9iYXNlKCdvdXQnLAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGFyZ2V0LCAqY29t
cHMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnb3V0
JywgKmNvbXBzKQorCisgICAgZGVmIF9jaGVja19hcGFjaGVfaW5zdGFsbChzZWxmKToKKyAgICAg
ICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19hcGFj
aGUoKSwKKyAgICAgICAgICAgICJhcGFjaGUyIikKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0u
Y2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoKSwKKyAg
ICAgICAgICAgICJhcGFjaGUyIGNvbmZpZyBmaWxlIikgYW5kIHJlc3VsdAorICAgICAgICBpZiBu
b3QgcmVzdWx0OgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignUGxlYXNlIGluc3RhbGwgdXNp
bmc6ICJzdWRvIGFwdC1nZXQgaW5zdGFsbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdh
cGFjaGUyIGxpYmFwYWNoZTItbW9kLXBocDUiJykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Io
JycpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfY2hlY2tfYnVpbGRfdXBfdG9f
ZGF0ZShzZWxmLCB0YXJnZXQpOgorICAgICAgICBpZiB0YXJnZXQgaW4gKCdEZWJ1ZycsICdSZWxl
YXNlJyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVidWdfcGF0aCA9IHNl
bGYuX2J1aWxkX3BhdGgoJ0RlYnVnJywgJ3Rlc3Rfc2hlbGwnKQorICAgICAgICAgICAgICAgIHJl
bGVhc2VfcGF0aCA9IHNlbGYuX2J1aWxkX3BhdGgoJ1JlbGVhc2UnLCAndGVzdF9zaGVsbCcpCisK
KyAgICAgICAgICAgICAgICBkZWJ1Z19tdGltZSA9IG9zLnN0YXQoZGVidWdfcGF0aCkuc3RfbXRp
bWUKKyAgICAgICAgICAgICAgICByZWxlYXNlX210aW1lID0gb3Muc3RhdChyZWxlYXNlX3BhdGgp
LnN0X210aW1lCisKKyAgICAgICAgICAgICAgICBpZiAoZGVidWdfbXRpbWUgPiByZWxlYXNlX210
aW1lIGFuZCB0YXJnZXQgPT0gJ1JlbGVhc2UnIG9yCisgICAgICAgICAgICAgICAgICAgIHJlbGVh
c2VfbXRpbWUgPiBkZWJ1Z19tdGltZSBhbmQgdGFyZ2V0ID09ICdEZWJ1ZycpOgorICAgICAgICAg
ICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1lvdSBhcmUgbm90IHJ1bm5pbmcgdGhlIG1vc3Qg
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2VudCB0ZXN0X3NoZWxs
IGJpbmFyeS4gWW91IG5lZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0IGJldHdlZW4gJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFuZCBSZWxlYXNlLicpCisgICAgICAgICAg
ICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnJykKKyAgICAgICAgICAgICMgVGhpcyB3aWxsIGZh
aWwgaWYgd2UgZG9uJ3QgaGF2ZSBib3RoIGEgZGVidWcgYW5kIHJlbGVhc2UgYmluYXJ5LgorICAg
ICAgICAgICAgIyBUaGF0J3MgZmluZSBiZWNhdXNlLCBpbiB0aGlzIGNhc2UsIHdlIG11c3QgYWxy
ZWFkeSBiZSBydW5uaW5nIHRoZQorICAgICAgICAgICAgIyBtb3N0IHVwLXRvLWRhdGUgb25lLgor
ICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAg
ICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9jaGVja19saWdodHRwZF9pbnN0YWxsKHNlbGYpOgor
ICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5jaGVja19maWxlX2V4aXN0cygKKyAgICAgICAgICAg
IHNlbGYuX3BhdGhfdG9fbGlnaHR0cGQoKSwgIkxpZ0hUVFBkIGV4ZWN1dGFibGUiKQorICAgICAg
ICByZXN1bHQgPSBjaHJvbWl1bS5jaGVja19maWxlX2V4aXN0cyhzZWxmLl9wYXRoX3RvX2xpZ2h0
dHBkX3BocCgpLAorICAgICAgICAgICAgIlBIUCBDR0kgZXhlY3V0YWJsZSIpIGFuZCByZXN1bHQK
KyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90
b19saWdodHRwZF9tb2R1bGVzKCksCisgICAgICAgICAgICAiTGlnSFRUUGQgbW9kdWxlcyIpIGFu
ZCByZXN1bHQKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJy
b3IoJ1BsZWFzZSBpbnN0YWxsIHVzaW5nOiAic3VkbyBhcHQtZ2V0IGluc3RhbGwgJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAnbGlnaHR0cGQgcGhwNS1jZ2kiJykKKyAgICAgICAgICAgIGxv
Z2dpbmcuZXJyb3IoJycpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfY2hlY2tf
d2RpZmZfaW5zdGFsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tfZmls
ZV9leGlzdHMoc2VsZi5fcGF0aF90b193ZGlmZigpLCAnd2RpZmYnKQorICAgICAgICBpZiBub3Qg
cmVzdWx0OgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignUGxlYXNlIGluc3RhbGwgdXNpbmc6
ICJzdWRvIGFwdC1nZXQgaW5zdGFsbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICd3ZGlm
ZiInKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCiAKICAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBwaWQpOgogICAgICAgICAiIiJGb3Jj
ZWZ1bGx5IGtpbGwgdGhlIHByb2Nlc3MuCkBAIC0xMTUsMTYgKzE4MywxNiBAQCBjbGFzcyBDaHJv
bWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gIi91
c3IvYmluL3BocC1jZ2kiCiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgndGVzdF9zaGVsbCcpCisgICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMudGFyZ2V0LCAndGVzdF9zaGVsbCcpCiAKICAg
ICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAg
ZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKCdpbWFnZV9kaWZmJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5fb3B0aW9ucy50YXJnZXQsICdpbWFnZV9kaWZmJykKIAogICAgIGRlZiBfcGF0aF90b193ZGlm
ZihzZWxmKToKLSAgICAgICAgcmV0dXJuICd3ZGlmZicKKyAgICAgICAgcmV0dXJuICcvdXNyL2Jp
bi93ZGlmZicKIAogICAgIGRlZiBfc2h1dF9kb3duX2h0dHBfc2VydmVyKHNlbGYsIHNlcnZlcl9w
aWQpOgogICAgICAgICAiIiJTaHV0IGRvd24gdGhlIGxpZ2h0dHBkIHdlYiBzZXJ2ZXIuIEJsb2Nr
cyB1bnRpbCBpdCdzIGZ1bGx5CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IGJjZmZj
ZjguLjc1OGU3YmMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC0yOSw2ICsyOSw3
IEBACiAKICIiIkNocm9taXVtIE1hYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZh
Y2UuIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1w
b3J0IHNpZ25hbApAQCAtNTIsOSArNTMsMTUgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VsaW5l
X3BhdGgoJ21hYycgKyBzZWxmLnZlcnNpb24oKSksCiAgICAgICAgICAgICAgICAgc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpXQogCi0gICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYp
OgotICAgICAgICAjIFdlIGhhdmUgbm8gc3BlY2lmaWMgcGxhdGZvcm0gZGVwZW5kZW5jaWVzLgot
ICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19o
dHRwKToKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uQ2hyb21pdW1Qb3J0LmNoZWNrX3N5c19k
ZXBzKHNlbGYsIG5lZWRzX2h0dHApCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX3dkaWZm
X2luc3RhbGwoKSBhbmQgcmVzdWx0CisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKCdGb3IgY29tcGxldGUgTWFjIGJ1aWxkIHJlcXVpcmVtZW50cywgcGxl
YXNlIHNlZTonKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKKyAgICAgICAgICAgIGxv
Z2dpbmcuZXJyb3IoJyAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vd2lraS8n
CisgICAgICAgICAgICAgICAgICAgICAgICAgICdNYWNCdWlsZEluc3RydWN0aW9ucycpCisgICAg
ICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBudW1fY29yZXMoc2VsZik6CiAgICAgICAgIHJl
dHVybiBpbnQoc3VicHJvY2Vzcy5Qb3BlbihbJ3N5c2N0bCcsJy1uJywnaHcubmNwdSddLApAQCAt
ODQsNiArOTEsMTYgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9y
dCk6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd4Y29kZWJ1
aWxkJywgc2VsZi5fb3B0aW9ucy50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpjb21wcykKIAorICAgIGRlZiBfY2hlY2tfd2RpZmZfaW5zdGFsbChz
ZWxmKToKKyAgICAgICAgZiA9IG9wZW4ob3MuZGV2bnVsbCwgJ3cnKQorICAgICAgICByY29kZSA9
IHN1YnByb2Nlc3MuY2FsbChbJ3dkaWZmJ10sIHN0ZGVycj1mKQorICAgICAgICBmLmNsb3NlKCkK
KyAgICAgICAgaWYgcmNvZGUgPT0gMTI3OgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignd2Rp
ZmYgbm90IGZvdW5kLiBJbnN0YWxsIHVzaW5nIE1hY1BvcnRzIG9yIHNvbWUgJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAnb3RoZXIgbWVhbnMnKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgX2xpZ2h0dHBkX3BhdGgoc2VsZiwgKmNv
bXBzKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJk
X3BhcnR5JywgJ2xpZ2h0dHBkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ21hYycsICpjb21wcykKQEAgLTEyNyw3ICsxNDQsNyBAQCBjbGFzcyBDaHJvbWl1
bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVy
KHNlbGYpOgogICAgICAgICAjIFRPRE8ocGlua2VydG9uKTogbWFrZSB8dGFyZ2V0fCBoYXBweSB3
aXRoIGNhc2Utc2Vuc2l0aXZlIGZpbGUKICAgICAgICAgIyBzeXN0ZW1zLgotICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aCgnVGVzdFNoZWxsLmFwcCcsICdDb250ZW50cycsICdNYWNPUycs
IAorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnVGVzdFNoZWxsLmFwcCcsICdDb250
ZW50cycsICdNYWNPUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0U2hl
bGwnKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkKaW5kZXggNWViMGJhMS4uMTFmYzQ4YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW4ucHkKQEAgLTI5LDYgKzI5LDcgQEAKIAogIiIiQ2hyb21pdW0gV2luIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwog
aW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc2lnbmFsCkBAIC01OSw5ICs2MCwxNSBAQCBjbGFzcyBD
aHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgZGlycy5hcHBl
bmQoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpKQogICAgICAgICByZXR1cm4gZGly
cwogCi0gICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgotICAgICAgICAjIFRPRE8oZHByYW5r
ZSk6IGltcGxlbWVudCB0aGlzCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGNoZWNrX3N5
c19kZXBzKHNlbGYsIG5lZWRzX2h0dHApOgorICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5DaHJv
bWl1bVBvcnQuY2hlY2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0cCkKKyAgICAgICAgaWYgbm90
IHJlc3VsdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ0ZvciBjb21wbGV0ZSBXaW5kb3dz
IGJ1aWxkIHJlcXVpcmVtZW50cywgcGxlYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NlZTonKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKKyAgICAgICAgICAgIGxvZ2dp
bmcuZXJyb3IoJyAgICBodHRwOi8vZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hvdy10b3Mv
JworICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVpbGQtaW5zdHJ1Y3Rpb25zLXdpbmRvd3Mn
KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgZ2V0X2Fic29sdXRlX3BhdGgoc2Vs
ZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHBhdGggaW4gdW5p
eCBmb3JtYXQgZm9yIHRoZSBnaXZlbiBmaWxlbmFtZS4iIiIKQEAgLTk0LDggKzEwMSwxMSBAQCBj
bGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAjCiAKICAg
ICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgIyBGSVhNRShkcHJhbmtl
KTogYWxsb3cgZm9yIGJ1aWxkcyB1bmRlciAnY2hyb21lJyBhcyB3ZWxsLgotICAgICAgICByZXR1
cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0Jywgc2VsZi5fb3B0aW9ucy50
YXJnZXQsCisgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQn
LCBzZWxmLl9vcHRpb25zLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKmNvbXBzKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKToKKyAgICAgICAg
ICAgIHJldHVybiBwCisgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCdjaHJvbWUnLCBzZWxmLl9vcHRpb25zLnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQogCiAgICAgZGVmIF9saWdodHRwZF9wYXRoKHNl
bGYsICpjb21wcyk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpp
bmRleCBmMGI2OGVlLi5iNmQ5YjM1IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucHkKQEAgLTQ5NSw3ICs0OTUsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAg
ICByZXR1cm4gdGVzdF9hcmdzLCBwbmdfcGF0aCwgc2hlbGxfYXJncwogCiAgICAgZGVmIF9jb250
YWluc190ZXN0cyhzZWxmLCBzdWJkaXIpOgotICAgICAgICBmb3IgdGVzdF9maWxlIGluIHNlbGYu
X3Rlc3RfZmlsZXNfbGlzdDoKKyAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBzZWxmLl90ZXN0X2Zp
bGVzOgogICAgICAgICAgICAgaWYgdGVzdF9maWxlLmZpbmQoc3ViZGlyKSA+PSAwOgogICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtNTk0LDYgKzU5
NCwxMCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHJl
c3VsdF9zdW1tYXJ5KQogICAgICAgICByZXR1cm4gKHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWlu
Z3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQogCisgICAgZGVmIG5lZWRzX2h0dHAoc2VsZik6
CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBydW5uZXIgbmVlZHMgYW4gSFRU
UCBzZXJ2ZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9jb250YWluc190ZXN0cyhzZWxmLkhU
VFBfU1VCRElSKQorCiAgICAgZGVmIHJ1bihzZWxmLCByZXN1bHRfc3VtbWFyeSk6CiAgICAgICAg
ICIiIlJ1biBhbGwgb3VyIHRlc3RzIG9uIGFsbCBvdXIgdGVzdCBmaWxlcy4KIApAQCAtNjE0LDcg
KzYxOCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25z
Lm5vX3BpeGVsX3Rlc3RzOgogICAgICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9oZWxwZXIoKQog
Ci0gICAgICAgIGlmIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIpOgorICAg
ICAgICBpZiBzZWxmLm5lZWRzX2h0dHAoKToKICAgICAgICAgICAgIHNlbGYuX3BvcnQuc3RhcnRf
aHR0cF9zZXJ2ZXIoKQogCiAgICAgICAgIGlmIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYuV0VC
U09DS0VUX1NVQkRJUik6CkBAIC0xNDU4LDcgKzE0NjIsNyBAQCBkZWYgbWFpbihvcHRpb25zLCBh
cmdzKToKIAogICAgICMgQ2hlY2sgdGhhdCB0aGUgc3lzdGVtIGRlcGVuZGVuY2llcyAodGhlbWVz
LCBmb250cywgLi4uKSBhcmUgY29ycmVjdC4KICAgICBpZiBub3Qgb3B0aW9ucy5ub2NoZWNrX3N5
c19kZXBzOgotICAgICAgICBpZiBub3QgcG9ydF9vYmouY2hlY2tfc3lzX2RlcHMoKToKKyAgICAg
ICAgaWYgbm90IHBvcnRfb2JqLmNoZWNrX3N5c19kZXBzKHRlc3RfcnVubmVyLm5lZWRzX2h0dHAo
KSk6CiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgd3JpdGUgPSBjcmVhdGVfbG9nZ2lu
Z193cml0ZXIob3B0aW9ucywgImNvbmZpZyIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49052</attachid>
            <date>2010-02-18 18:15:03 -0800</date>
            <delta_ts>2010-02-22 13:55:06 -0800</delta_ts>
            <desc>patch revised to make _check_build_up_to_date() shared by chromium ports</desc>
            <filename>35062.diff</filename>
            <type>text/plain</type>
            <size>18288</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlYTJkYTkyLi4yMzE2YzFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1vcmUgY2hlY2tpbmcgZm9yIG1p
c3NpbmcgYmluYXJpZXMgYW5kIHBhY2thZ2VzIHRvIGNoZWNrX3N5c19kZXBzKCkKKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjIKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9t
YWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wMi0xNyAgRGllZ28gR29uemFsZXog
IDxkaWVnby5nb256YWxlekBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFy
aXlhIEhpZGF5YXQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTBjN2EzZi4uMTI3OWIwMyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGJhc2Vs
aW5lcy4gVGhlIGRpcmVjdG9yaWVzIGFyZSBzZWFyY2hlZCBpbiBvcmRlci4iIiIKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCcpCiAK
LSAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZik6CisgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNl
bGYsIG5lZWRzX2h0dHApOgogICAgICAgICAiIiJJZiB0aGUgcG9ydCBuZWVkcyB0byBkbyBzb21l
IHJ1bnRpbWUgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHRoZQogICAgICAgICB0ZXN0cyBjYW4gYmUg
cnVuIHN1Y2Nlc3NmdWxseSwgdGhleSBzaG91bGQgYmUgZG9uZSBoZXJlLgogCkBAIC01NDIsNyAr
NTQyLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBUaGlzIGlzIG5lZWRlZCBvbmx5
IGJ5IHBvcnRzIHRoYXQgdXNlIHRoZSBhcGFjaGVfaHR0cF9zZXJ2ZXIgbW9kdWxlLiIiIgogICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0LnBhdGhfdG9fYXBhY2hlX2NvbmZp
Z19maWxlJykKIAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CisgICAgZGVmIF9wYXRo
X3RvX2RyaXZlcihzZWxmLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1
bGwgcGF0aCB0byB0aGUgdGVzdCBkcml2ZXIgKER1bXBSZW5kZXJUcmVlKS4iIiIKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5wYXRoX3RvX2RyaXZlcicpCiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5CmluZGV4IGExNzUzNDMuLjljZDU2Y2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eQpAQCAtNDIsNiArNDIsMTQgQEAgaW1wb3J0IGh0dHBfc2VydmVyCiBpbXBvcnQgd2Vic29ja2V0
X3NlcnZlcgogCiAKK2RlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3RvX2ZpbGUsIHN0cik6Cisg
ICAgIiIiVmVyaWZ5IHRoZSBleGVjdXRhYmxlIGlzIHByZXNlbnQgd2hlcmUgZXhwZWN0ZWQgb3Ig
bG9nIGFuIGVycm9yLiIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoX3RvX2ZpbGUp
OgorICAgICAgICBsb2dnaW5nLmVycm9yKCdVbmFibGUgdG8gZmluZCAlcyBhdCAlcycgJSAoc3Ry
LCBwYXRoX3RvX2ZpbGUpKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQor
CisKIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2Ug
Y2xhc3MgZm9yIENocm9taXVtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIK
IApAQCAtNTIsMjggKzYwLDMzIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAg
IGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2hyb21pdW1f
YmFzZWxpbmVfcGF0aChzZWxmLl9uYW1lKQogCi0gICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYp
OgorICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVz
dWx0ID0gVHJ1ZQogICAgICAgICB0ZXN0X3NoZWxsX2JpbmFyeV9wYXRoID0gc2VsZi5fcGF0aF90
b19kcml2ZXIoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0ZXN0X3NoZWxsX2JpbmFyeV9w
YXRoKToKKyAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9leGlzdHModGVzdF9zaGVsbF9iaW5h
cnlfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBkcml2ZXIn
KQorICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICByZXN1bHQgPSAoc2VsZi5fY2hlY2tf
YnVpbGRfdXBfdG9fZGF0ZShzZWxmLl9vcHRpb25zLnRhcmdldCkKKyAgICAgICAgICAgICAgICAg
ICAgICBhbmQgcmVzdWx0KQorCiAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihb
dGVzdF9zaGVsbF9iaW5hcnlfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnLS1jaGVjay1sYXlvdXQtdGVzdC1zeXMtZGVwcyddKQogICAgICAgICAgICAgaWYgcHJv
Yy53YWl0KCkgIT0gMDoKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJBYm9ydGluZyBi
ZWNhdXNlIHN5c3RlbSBkZXBlbmRlbmNpZXMgY2hlY2sgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZhaWxlZC4iKQotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIlRvIG92
ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vY2hlY2stc3lzLWRlcHMiKQorICAgICAgICAgICAgICAg
IGxvZ2dpbmcuZXJyb3IoJ1N5c3RlbSBkZXBlbmRlbmNpZXMgY2hlY2sgZmFpbGVkLicpCisgICAg
ICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignVG8gb3ZlcnJpZGUsIGludm9rZSB3aXRoIC0tbm9j
aGVjay1zeXMtZGVwcycpCisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBGYWxzZQorCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCd0ZXN0IGRyaXZlciBpcyBub3QgZm91bmQgYXQgJXMnICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9zaGVsbF9iaW5hcnlfcGF0aCkKLSAgICAgICAgICAgIHJl
c3VsdCA9IEZhbHNlCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQogCi0gICAgICAgIGlt
YWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1hZ2VfZGlmZigpCi0gICAgICAgIGlmIChu
b3Qgb3MucGF0aC5leGlzdHMoaW1hZ2VfZGlmZl9wYXRoKSBhbmQgbm90Ci0gICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLm5vX3BpeGVsX3Rlc3RzKToKLSAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Io
J2ltYWdlIGRpZmYgbm90IGZvdW5kIGF0ICVzJyAlIGltYWdlX2RpZmZfcGF0aCkKLSAgICAgICAg
ICAgIGxvZ2dpbmcuZXJyb3IoIlRvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vLXBpeGVsLXRl
c3RzIikKLSAgICAgICAgICAgIHJlc3VsdCA9IEZhbHNlCisKKyAgICAgICAgaWYgbm90IHNlbGYu
X29wdGlvbnMubm9fcGl4ZWxfdGVzdHM6CisgICAgICAgICAgICBpbWFnZV9kaWZmX3BhdGggPSBz
ZWxmLl9wYXRoX3RvX2ltYWdlX2RpZmYoKQorICAgICAgICAgICAgaWYgbm90IGNoZWNrX2ZpbGVf
ZXhpc3RzKGltYWdlX2RpZmZfcGF0aCwgJ2ltYWdlIGRpZmYgZXhlJyk6CisgICAgICAgICAgICAg
ICAgbG9nZ2luZy5lcnJvcignVG8gb3ZlcnJpZGUsIGludm9rZSB3aXRoIC0tbm8tcGl4ZWwtdGVz
dHMnKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gRmFsc2UKIAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTE1MSwxMiArMTY0
LDM2IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICMgb3IgYW55IHN1YmNs
YXNzZXMuCiAgICAgIwogCisgICAgZGVmIF9jaGVja19idWlsZF91cF90b19kYXRlKHNlbGYsIHRh
cmdldCk6CisgICAgICAgIGlmIHRhcmdldCBpbiAoJ0RlYnVnJywgJ1JlbGVhc2UnKToKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZWJ1Z19wYXRoID0gc2VsZi5fcGF0aF90b19k
cml2ZXIoJ0RlYnVnJykKKyAgICAgICAgICAgICAgICByZWxlYXNlX3BhdGggPSBzZWxmLl9wYXRo
X3RvX2RyaXZlcignUmVsZWFzZScpCisKKyAgICAgICAgICAgICAgICBkZWJ1Z19tdGltZSA9IG9z
LnN0YXQoZGVidWdfcGF0aCkuc3RfbXRpbWUKKyAgICAgICAgICAgICAgICByZWxlYXNlX210aW1l
ID0gb3Muc3RhdChyZWxlYXNlX3BhdGgpLnN0X210aW1lCisKKyAgICAgICAgICAgICAgICBpZiAo
ZGVidWdfbXRpbWUgPiByZWxlYXNlX210aW1lIGFuZCB0YXJnZXQgPT0gJ1JlbGVhc2UnIG9yCisg
ICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbXRpbWUgPiBkZWJ1Z19tdGltZSBhbmQgdGFyZ2V0
ID09ICdEZWJ1ZycpOgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ1lvdSBh
cmUgbm90IHJ1bm5pbmcgdGhlIG1vc3QgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3JlY2VudCB0ZXN0X3NoZWxsIGJpbmFyeS4gWW91IG5lZWQgdG8gJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MgLS1kZWJ1ZyBvciBub3QgdG8gc2VsZWN0
IGJldHdlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RlYnVnIGFu
ZCBSZWxlYXNlLicpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnJykKKyAg
ICAgICAgICAgICMgVGhpcyB3aWxsIGZhaWwgaWYgd2UgZG9uJ3QgaGF2ZSBib3RoIGEgZGVidWcg
YW5kIHJlbGVhc2UgYmluYXJ5LgorICAgICAgICAgICAgIyBUaGF0J3MgZmluZSBiZWNhdXNlLCBp
biB0aGlzIGNhc2UsIHdlIG11c3QgYWxyZWFkeSBiZSBydW5uaW5nIHRoZQorICAgICAgICAgICAg
IyBtb3N0IHVwLXRvLWRhdGUgb25lLgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAg
ICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgZGVmIF9jaHJvbWl1
bV9iYXNlbGluZV9wYXRoKHNlbGYsIHBsYXRmb3JtKToKICAgICAgICAgaWYgcGxhdGZvcm0gaXMg
Tm9uZToKICAgICAgICAgICAgIHBsYXRmb3JtID0gc2VsZi5uYW1lKCkKICAgICAgICAgcmV0dXJu
IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsICdkYXRhJywgJ2xheW91dF90
ZXN0cycsCiAgICAgICAgICAgICAncGxhdGZvcm0nLCBwbGF0Zm9ybSwgJ0xheW91dFRlc3RzJykK
IAorCiBjbGFzcyBDaHJvbWl1bURyaXZlcihiYXNlLkRyaXZlcik6CiAgICAgIiIiQWJzdHJhY3Qg
aW50ZXJmYWNlIGZvciB0aGUgRHVtcFJlbmRlclRyZWUgaW50ZXJmYWNlLiIiIgogCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2xpbnV4LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9saW51eC5weQppbmRleCBiODE3MjUxLi43NDk1NTcyIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbGludXgucHkKQEAgLTI3LDggKzI3LDkgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLSIiIkNocm9taXVtIE1hYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
UG9ydCBpbnRlcmZhY2UuIiIiCisiIiJDaHJvbWl1bSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9y
dCBwbGF0Zm9ybQogaW1wb3J0IHNpZ25hbApAQCAtNTMsOSArNTQsMjEgQEAgY2xhc3MgQ2hyb21p
dW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAgICAgICBzZWxm
Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCgnd2luJyksCiAgICAgICAgICAgICAgICAgc2VsZi5fd2Vi
a2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpXQogCi0gICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYp
OgotICAgICAgICAjIFdlIGhhdmUgbm8gcGxhdGZvcm0tc3BlY2lmaWMgZGVwZW5kZW5jaWVzIHRv
IGNoZWNrLgotICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxm
LCBuZWVkc19odHRwKToKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uQ2hyb21pdW1Qb3J0LmNo
ZWNrX3N5c19kZXBzKHNlbGYsIG5lZWRzX2h0dHApCisgICAgICAgIGlmIG5lZWRzX2h0dHA6Cisg
ICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9hcGFjaGU6CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gc2VsZi5fY2hlY2tfYXBhY2hlX2luc3RhbGwoKSBhbmQgcmVzdWx0CisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX2xpZ2h0dHBk
X2luc3RhbGwoKSBhbmQgcmVzdWx0CisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2NoZWNrX3dkaWZm
X2luc3RhbGwoKSBhbmQgcmVzdWx0CisKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAg
ICAgIGxvZ2dpbmcuZXJyb3IoJ0ZvciBjb21wbGV0ZSBMaW51eCBidWlsZCByZXF1aXJlbWVudHMs
IHBsZWFzZSBzZWU6JykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCisgICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKCcgICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL3dp
a2kvJworICAgICAgICAgICAgICAgICAgICAgICAgICAnTGludXhCdWlsZEluc3RydWN0aW9ucycp
CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBudW1fY29yZXMoc2VsZik6CiAgICAg
ICAgIG51bV9jb3JlcyA9IG9zLnN5c2NvbmYoIlNDX05QUk9DRVNTT1JTX09OTE4iKQpAQCAtNzgs
MTEgKzkxLDQyIEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9y
dCk6CiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6CiAgICAgICAgIGJhc2UgPSBz
ZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCkKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMo
b3MucGF0aC5qb2luKGJhc2UsICdzY29uc2J1aWxkJykpOgotICAgICAgICAgICAgcmV0dXJuIHNl
bGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3Njb25zYnVpbGQnLAotICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMudGFyZ2V0LCAqY29tcHMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5w
YXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnc2NvbnNidWlsZCcsICpjb21wcykKICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdvdXQn
LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGFyZ2V0LCAqY29tcHMpCisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnb3V0JywgKmNvbXBzKQor
CisgICAgZGVmIF9jaGVja19hcGFjaGVfaW5zdGFsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0g
Y2hyb21pdW0uY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19hcGFjaGUoKSwKKyAgICAg
ICAgICAgICJhcGFjaGUyIikKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tfZmlsZV9l
eGlzdHMoc2VsZi5fcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoKSwKKyAgICAgICAgICAgICJh
cGFjaGUyIGNvbmZpZyBmaWxlIikgYW5kIHJlc3VsdAorICAgICAgICBpZiBub3QgcmVzdWx0Ogor
ICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignUGxlYXNlIGluc3RhbGwgdXNpbmc6ICJzdWRvIGFw
dC1nZXQgaW5zdGFsbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhcGFjaGUyIGxpYmFw
YWNoZTItbW9kLXBocDUiJykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCisgICAgICAg
IHJldHVybiByZXN1bHQKKworICAgIGRlZiBfY2hlY2tfbGlnaHR0cGRfaW5zdGFsbChzZWxmKToK
KyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tfZmlsZV9leGlzdHMoCisgICAgICAgICAg
ICBzZWxmLl9wYXRoX3RvX2xpZ2h0dHBkKCksICJMaWdIVFRQZCBleGVjdXRhYmxlIikKKyAgICAg
ICAgcmVzdWx0ID0gY2hyb21pdW0uY2hlY2tfZmlsZV9leGlzdHMoc2VsZi5fcGF0aF90b19saWdo
dHRwZF9waHAoKSwKKyAgICAgICAgICAgICJQSFAgQ0dJIGV4ZWN1dGFibGUiKSBhbmQgcmVzdWx0
CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhf
dG9fbGlnaHR0cGRfbW9kdWxlcygpLAorICAgICAgICAgICAgIkxpZ0hUVFBkIG1vZHVsZXMiKSBh
bmQgcmVzdWx0CisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVy
cm9yKCdQbGVhc2UgaW5zdGFsbCB1c2luZzogInN1ZG8gYXB0LWdldCBpbnN0YWxsICcKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2xpZ2h0dHBkIHBocDUtY2dpIicpCisgICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCcnKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX2NoZWNr
X3dkaWZmX2luc3RhbGwoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2Zp
bGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9fd2RpZmYoKSwgJ3dkaWZmJykKKyAgICAgICAgaWYgbm90
IHJlc3VsdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1BsZWFzZSBpbnN0YWxsIHVzaW5n
OiAic3VkbyBhcHQtZ2V0IGluc3RhbGwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnd2Rp
ZmYiJykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCisgICAgICAgIHJldHVybiByZXN1
bHQKKwogCiAgICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgcGlkKToKICAgICAgICAgIiIiRm9y
Y2VmdWxseSBraWxsIHRoZSBwcm9jZXNzLgpAQCAtMTE0LDE3ICsxNTgsMTkgQEAgY2xhc3MgQ2hy
b21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgX3BhdGhfdG9f
bGlnaHR0cGRfcGhwKHNlbGYpOgogICAgICAgICByZXR1cm4gIi91c3IvYmluL3BocC1jZ2kiCiAK
LSAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aCgndGVzdF9zaGVsbCcpCisgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCB0YXJn
ZXQ9Tm9uZSk6CisgICAgICAgIGlmIG5vdCB0YXJnZXQ6CisgICAgICAgICAgICB0YXJnZXQgPSBz
ZWxmLl9vcHRpb25zLnRhcmdldAorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCh0YXJn
ZXQsICd0ZXN0X3NoZWxsJykKIAogICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAg
ICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2ltYWdlX2RpZmYnKQorICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLnRhcmdldCwgJ2ltYWdlX2RpZmYnKQog
CiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgotICAgICAgICByZXR1cm4gJ3dkaWZmJwor
ICAgICAgICByZXR1cm4gJy91c3IvYmluL3dkaWZmJwogCiAgICAgZGVmIF9zaHV0X2Rvd25faHR0
cF9zZXJ2ZXIoc2VsZiwgc2VydmVyX3BpZCk6CiAgICAgICAgICIiIlNodXQgZG93biB0aGUgbGln
aHR0cGQgd2ViIHNlcnZlci4gQmxvY2tzIHVudGlsIGl0J3MgZnVsbHkKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFj
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9tYWMucHkKaW5kZXggYmNmZmNmOC4uN2U0ZjI2NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9tYWMucHkKQEAgLTI5LDYgKzI5LDcgQEAKIAogIiIiQ2hyb21pdW0gTWFjIGltcGxlbWVudGF0
aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBv
cwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc2lnbmFsCkBAIC01Miw5ICs1MywxNSBAQCBjbGFz
cyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAgICAg
ICBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJyArIHNlbGYudmVyc2lvbigpKSwKICAg
ICAgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJyldCiAKLSAgICBk
ZWYgY2hlY2tfc3lzX2RlcHMoc2VsZik6Ci0gICAgICAgICMgV2UgaGF2ZSBubyBzcGVjaWZpYyBw
bGF0Zm9ybSBkZXBlbmRlbmNpZXMuCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIGNoZWNr
X3N5c19kZXBzKHNlbGYsIG5lZWRzX2h0dHApOgorICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5D
aHJvbWl1bVBvcnQuY2hlY2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0cCkKKyAgICAgICAgcmVz
dWx0ID0gc2VsZi5fY2hlY2tfd2RpZmZfaW5zdGFsbCgpIGFuZCByZXN1bHQKKyAgICAgICAgaWYg
bm90IHJlc3VsdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ0ZvciBjb21wbGV0ZSBNYWMg
YnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2Ugc2VlOicpCisgICAgICAgICAgICBsb2dnaW5nLmVy
cm9yKCcnKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignICAgIGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9jaHJvbWl1bS93aWtpLycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ01hY0J1
aWxkSW5zdHJ1Y3Rpb25zJykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIG51bV9j
b3JlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIGludChzdWJwcm9jZXNzLlBvcGVuKFsnc3lzY3Rs
JywnLW4nLCdody5uY3B1J10sCkBAIC04MSw4ICs4OCwxNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1Bv
cnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAjCiAKICAgICBkZWYgX2J1aWxkX3BhdGgo
c2VsZiwgKmNvbXBzKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jh
c2UoJ3hjb2RlYnVpbGQnLCBzZWxmLl9vcHRpb25zLnRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5w
YXRoX2Zyb21fY2hyb21pdW1fYmFzZSgneGNvZGVidWlsZCcsICpjb21wcykKKworICAgIGRlZiBf
Y2hlY2tfd2RpZmZfaW5zdGFsbChzZWxmKToKKyAgICAgICAgZiA9IG9wZW4ob3MuZGV2bnVsbCwg
J3cnKQorICAgICAgICByY29kZSA9IHN1YnByb2Nlc3MuY2FsbChbJ3dkaWZmJ10sIHN0ZGVycj1m
KQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgaWYgcmNvZGUgPT0gMTI3OgorICAgICAgICAg
ICAgbG9nZ2luZy5lcnJvcignd2RpZmYgbm90IGZvdW5kLiBJbnN0YWxsIHVzaW5nIE1hY1BvcnRz
IG9yIHNvbWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnb3RoZXIgbWVhbnMnKQorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2xp
Z2h0dHBkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2xpZ2h0dHBkJywKQEAgLTEyNCwxNyArMTQw
LDE5IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAg
IGRlZiBfcGF0aF90b19saWdodHRwZF9waHAoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9s
aWdodHRwZF9wYXRoKCdiaW4nLCAncGhwLWNnaScpCiAKLSAgICBkZWYgX3BhdGhfdG9fZHJpdmVy
KHNlbGYpOgorICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgdGFyZ2V0PU5vbmUpOgogICAg
ICAgICAjIFRPRE8ocGlua2VydG9uKTogbWFrZSB8dGFyZ2V0fCBoYXBweSB3aXRoIGNhc2Utc2Vu
c2l0aXZlIGZpbGUKICAgICAgICAgIyBzeXN0ZW1zLgotICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aCgnVGVzdFNoZWxsLmFwcCcsICdDb250ZW50cycsICdNYWNPUycsIAorICAgICAgICBp
ZiBub3QgdGFyZ2V0OgorICAgICAgICAgICAgdGFyZ2V0ID0gc2VsZi5fb3B0aW9ucy50YXJnZXQK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgodGFyZ2V0LCAnVGVzdFNoZWxsLmFwcCcs
ICdDb250ZW50cycsICdNYWNPUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdU
ZXN0U2hlbGwnKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xheW91dF90ZXN0X2hlbHBlcicpCisgICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9wYXRoKHNlbGYuX29wdGlvbnMudGFyZ2V0LCAnbGF5b3V0X3Rlc3RfaGVs
cGVyJykKIAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aCgnaW1hZ2VfZGlmZicpCisgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9wYXRoKHNlbGYuX29wdGlvbnMudGFyZ2V0LCAnaW1hZ2VfZGlmZicpCiAKICAgICBkZWYg
X3BhdGhfdG9fd2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiAnd2RpZmYnCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3dpbi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fd2luLnB5CmluZGV4IDVlYjBiYTEuLjI1YjFhMmEgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fd2luLnB5CkBAIC0yOSw2ICsyOSw3IEBACiAKICIiIkNocm9taXVtIFdpbiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNpZ25hbApAQCAtNTksOSArNjAsMTUgQEAg
Y2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIGRp
cnMuYXBwZW5kKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdtYWMnKSkKICAgICAgICAgcmV0
dXJuIGRpcnMKIAotICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKLSAgICAgICAgIyBUT0RP
KGRwcmFua2UpOiBpbXBsZW1lbnQgdGhpcwotICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBj
aGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToKKyAgICAgICAgcmVzdWx0ID0gY2hyb21p
dW0uQ2hyb21pdW1Qb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYsIG5lZWRzX2h0dHApCisgICAgICAg
IGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdGb3IgY29tcGxldGUg
V2luZG93cyBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICdzZWU6JykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCisgICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKCcgICAgaHR0cDovL2Rldi5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9o
b3ctdG9zLycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkLWluc3RydWN0aW9ucy13
aW5kb3dzJykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGdldF9hYnNvbHV0ZV9w
YXRoKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSBwYXRo
IGluIHVuaXggZm9ybWF0IGZvciB0aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCkBAIC05NCw5ICsxMDEs
MTAgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAg
IwogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6Ci0gICAgICAgICMgRklYTUUo
ZHByYW5rZSk6IGFsbG93IGZvciBidWlsZHMgdW5kZXIgJ2Nocm9tZScgYXMgd2VsbC4KLSAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsIHNlbGYuX29w
dGlvbnMudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqY29tcHMpCisgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJr
aXQnLCAqY29tcHMpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgorICAgICAgICAgICAg
cmV0dXJuIHAKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ2No
cm9tZScsICpjb21wcykKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0aChzZWxmLCAqY29tcHMpOgog
ICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHkn
LCAnbGlnaHR0cGQnLCAnd2luJywKQEAgLTEyOSwxNCArMTM3LDE2IEBAIGNsYXNzIENocm9taXVt
V2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIGRlZiBfcGF0aF90b19saWdodHRw
ZF9waHAoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9saWdodHRwZF9wYXRoKCdwaHA1Jywg
J3BocC1jZ2kuZXhlJykKIAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCd0ZXN0X3NoZWxsLmV4ZScpCisgICAgZGVmIF9wYXRo
X3RvX2RyaXZlcihzZWxmLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgIGlmIG5vdCB0YXJnZXQ6Cisg
ICAgICAgICAgICB0YXJnZXQgPSBzZWxmLl9vcHRpb25zLnRhcmdldAorICAgICAgICByZXR1cm4g
c2VsZi5fYnVpbGRfcGF0aCh0YXJnZXQsICd0ZXN0X3NoZWxsLmV4ZScpCiAKICAgICBkZWYgX3Bh
dGhfdG9faGVscGVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnbGF5
b3V0X3Rlc3RfaGVscGVyLmV4ZScpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNl
bGYuX29wdGlvbnMudGFyZ2V0LCAnbGF5b3V0X3Rlc3RfaGVscGVyLmV4ZScpCiAKICAgICBkZWYg
X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoJ2ltYWdlX2RpZmYuZXhlJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5fb3B0aW9ucy50YXJnZXQsICdpbWFnZV9kaWZmLmV4ZScpCiAKICAgICBkZWYgX3BhdGhfdG9f
d2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCd0aGlyZF9wYXJ0eScsICdjeWd3aW4nLCAnYmluJywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hyb21p
dW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGYwYjY4ZWUuLmI2ZDliMzUgMTAwNzU1Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtNDk1LDcgKzQ5NSw3IEBAIGNsYXNz
IFRlc3RSdW5uZXI6CiAgICAgICAgIHJldHVybiB0ZXN0X2FyZ3MsIHBuZ19wYXRoLCBzaGVsbF9h
cmdzCiAKICAgICBkZWYgX2NvbnRhaW5zX3Rlc3RzKHNlbGYsIHN1YmRpcik6Ci0gICAgICAgIGZv
ciB0ZXN0X2ZpbGUgaW4gc2VsZi5fdGVzdF9maWxlc19saXN0OgorICAgICAgICBmb3IgdGVzdF9m
aWxlIGluIHNlbGYuX3Rlc3RfZmlsZXM6CiAgICAgICAgICAgICBpZiB0ZXN0X2ZpbGUuZmluZChz
dWJkaXIpID49IDA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJu
IEZhbHNlCkBAIC01OTQsNiArNTk0LDEwIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIHNl
bGYudXBkYXRlX3N1bW1hcnkocmVzdWx0X3N1bW1hcnkpCiAgICAgICAgIHJldHVybiAodGhyZWFk
X3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MpCiAKKyAgICBk
ZWYgbmVlZHNfaHR0cChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSB0ZXN0
IHJ1bm5lciBuZWVkcyBhbiBIVFRQIHNlcnZlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nv
bnRhaW5zX3Rlc3RzKHNlbGYuSFRUUF9TVUJESVIpCisKICAgICBkZWYgcnVuKHNlbGYsIHJlc3Vs
dF9zdW1tYXJ5KToKICAgICAgICAgIiIiUnVuIGFsbCBvdXIgdGVzdHMgb24gYWxsIG91ciB0ZXN0
IGZpbGVzLgogCkBAIC02MTQsNyArNjE4LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAg
aWYgbm90IHNlbGYuX29wdGlvbnMubm9fcGl4ZWxfdGVzdHM6CiAgICAgICAgICAgICBzZWxmLl9w
b3J0LnN0YXJ0X2hlbHBlcigpCiAKLSAgICAgICAgaWYgc2VsZi5fY29udGFpbnNfdGVzdHMoc2Vs
Zi5IVFRQX1NVQkRJUik6CisgICAgICAgIGlmIHNlbGYubmVlZHNfaHR0cCgpOgogICAgICAgICAg
ICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3NlcnZlcigpCiAKICAgICAgICAgaWYgc2VsZi5fY29u
dGFpbnNfdGVzdHMoc2VsZi5XRUJTT0NLRVRfU1VCRElSKToKQEAgLTE0NTgsNyArMTQ2Miw3IEBA
IGRlZiBtYWluKG9wdGlvbnMsIGFyZ3MpOgogCiAgICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0g
ZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgogICAgIGlmIG5v
dCBvcHRpb25zLm5vY2hlY2tfc3lzX2RlcHM6Ci0gICAgICAgIGlmIG5vdCBwb3J0X29iai5jaGVj
a19zeXNfZGVwcygpOgorICAgICAgICBpZiBub3QgcG9ydF9vYmouY2hlY2tfc3lzX2RlcHModGVz
dF9ydW5uZXIubmVlZHNfaHR0cCgpKToKICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICB3
cml0ZSA9IGNyZWF0ZV9sb2dnaW5nX3dyaXRlcihvcHRpb25zLCAiY29uZmlnIikK
</data>
<flag name="review"
          id="31811"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49239</attachid>
            <date>2010-02-22 13:55:06 -0800</date>
            <delta_ts>2010-02-22 23:53:45 -0800</delta_ts>
            <desc>update w/ typo fix, updated changelog date.</desc>
            <filename>35062.diff</filename>
            <type>text/plain</type>
            <size>18286</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlYTJkYTkyLi5jNWFmYmEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MjIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTaWVkZWwuCisKKyAgICAgICAgQWRkIG1vcmUgY2hlY2tpbmcgZm9yIG1pc3Np
bmcgYmluYXJpZXMgYW5kIHBhY2thZ2VzIHRvIGNoZWNrX3N5c19kZXBzKCkKKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUwNjIKKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMC0wMi0xNyAgRGllZ28gR29uemFsZXogIDxk
aWVnby5nb256YWxlekBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFyaXlh
IEhpZGF5YXQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTBjN2EzZi4uMTI3OWIwMyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eQpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGJhc2VsaW5l
cy4gVGhlIGRpcmVjdG9yaWVzIGFyZSBzZWFyY2hlZCBpbiBvcmRlci4iIiIKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5iYXNlbGluZV9zZWFyY2hfcGF0aCcpCiAKLSAg
ICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZik6CisgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYs
IG5lZWRzX2h0dHApOgogICAgICAgICAiIiJJZiB0aGUgcG9ydCBuZWVkcyB0byBkbyBzb21lIHJ1
bnRpbWUgY2hlY2tzIHRvIGVuc3VyZSB0aGF0IHRoZQogICAgICAgICB0ZXN0cyBjYW4gYmUgcnVu
IHN1Y2Nlc3NmdWxseSwgdGhleSBzaG91bGQgYmUgZG9uZSBoZXJlLgogCkBAIC01NDIsNyArNTQy
LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBUaGlzIGlzIG5lZWRlZCBvbmx5IGJ5
IHBvcnRzIHRoYXQgdXNlIHRoZSBhcGFjaGVfaHR0cF9zZXJ2ZXIgbW9kdWxlLiIiIgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQb3J0LnBhdGhfdG9fYXBhY2hlX2NvbmZpZ19m
aWxlJykKIAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CisgICAgZGVmIF9wYXRoX3Rv
X2RyaXZlcihzZWxmLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwg
cGF0aCB0byB0aGUgdGVzdCBkcml2ZXIgKER1bXBSZW5kZXJUcmVlKS4iIiIKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5wYXRoX3RvX2RyaXZlcicpCiAKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtLnB5CmluZGV4IGExNzUzNDMuLjZjZDA3MmEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpA
QCAtNDIsNiArNDIsMTQgQEAgaW1wb3J0IGh0dHBfc2VydmVyCiBpbXBvcnQgd2Vic29ja2V0X3Nl
cnZlcgogCiAKK2RlZiBjaGVja19maWxlX2V4aXN0cyhwYXRoX3RvX2ZpbGUsIHN0cik6CisgICAg
IiIiVmVyaWZ5IHRoZSBleGVjdXRhYmxlIGlzIHByZXNlbnQgd2hlcmUgZXhwZWN0ZWQgb3IgbG9n
IGFuIGVycm9yLiIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoX3RvX2ZpbGUpOgor
ICAgICAgICBsb2dnaW5nLmVycm9yKCdVbmFibGUgdG8gZmluZCAlcyBhdCAlcycgJSAoc3RyLCBw
YXRoX3RvX2ZpbGUpKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCisK
IGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xh
c3MgZm9yIENocm9taXVtIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgUG9ydCBjbGFzcy4iIiIKIApA
QCAtNTIsMjggKzYwLDMzIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgIGRl
ZiBiYXNlbGluZV9wYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2hyb21pdW1fYmFz
ZWxpbmVfcGF0aChzZWxmLl9uYW1lKQogCi0gICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgor
ICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0
ID0gVHJ1ZQogICAgICAgICB0ZXN0X3NoZWxsX2JpbmFyeV9wYXRoID0gc2VsZi5fcGF0aF90b19k
cml2ZXIoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0ZXN0X3NoZWxsX2JpbmFyeV9wYXRo
KToKKyAgICAgICAgcmVzdWx0ID0gY2hlY2tfZmlsZV9leGlzdHModGVzdF9zaGVsbF9iaW5hcnlf
cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgZHJpdmVyJykK
KyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmVzdWx0ID0gKHNlbGYuX2NoZWNrX2J1
aWxkX3VwX3RvX2RhdGUoc2VsZi5fb3B0aW9ucy50YXJnZXQpCisgICAgICAgICAgICAgICAgICAg
ICAgYW5kIHJlc3VsdCkKKwogICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW3Rl
c3Rfc2hlbGxfYmluYXJ5X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0tY2hlY2stbGF5b3V0LXRlc3Qtc3lzLWRlcHMnXSkKICAgICAgICAgICAgIGlmIHByb2Mu
d2FpdCgpICE9IDA6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiQWJvcnRpbmcgYmVj
YXVzZSBzeXN0ZW0gZGVwZW5kZW5jaWVzIGNoZWNrICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsZWQuIikKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJUbyBvdmVy
cmlkZSwgaW52b2tlIHdpdGggLS1ub2NoZWNrLXN5cy1kZXBzIikKKyAgICAgICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCdTeXN0ZW0gZGVwZW5kZW5jaWVzIGNoZWNrIGZhaWxlZC4nKQorICAgICAg
ICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1RvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vY2hl
Y2stc3lzLWRlcHMnKQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJycpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gRmFsc2UKKwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcigndGVzdCBkcml2ZXIgaXMgbm90IGZvdW5kIGF0ICVzJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Rfc2hlbGxfYmluYXJ5X3BhdGgpCi0gICAgICAgICAgICByZXN1
bHQgPSBGYWxzZQorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignJykKIAotICAgICAgICBpbWFn
ZV9kaWZmX3BhdGggPSBzZWxmLl9wYXRoX3RvX2ltYWdlX2RpZmYoKQotICAgICAgICBpZiAobm90
IG9zLnBhdGguZXhpc3RzKGltYWdlX2RpZmZfcGF0aCkgYW5kIG5vdAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5ub19waXhlbF90ZXN0cyk6Ci0gICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdp
bWFnZSBkaWZmIG5vdCBmb3VuZCBhdCAlcycgJSBpbWFnZV9kaWZmX3BhdGgpCi0gICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKCJUbyBvdmVycmlkZSwgaW52b2tlIHdpdGggLS1uby1waXhlbC10ZXN0
cyIpCi0gICAgICAgICAgICByZXN1bHQgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9v
cHRpb25zLm5vX3BpeGVsX3Rlc3RzOgorICAgICAgICAgICAgaW1hZ2VfZGlmZl9wYXRoID0gc2Vs
Zi5fcGF0aF90b19pbWFnZV9kaWZmKCkKKyAgICAgICAgICAgIGlmIG5vdCBjaGVja19maWxlX2V4
aXN0cyhpbWFnZV9kaWZmX3BhdGgsICdpbWFnZSBkaWZmIGV4ZScpOgorICAgICAgICAgICAgICAg
IGxvZ2dpbmcuZXJyb3IoJ1RvIG92ZXJyaWRlLCBpbnZva2Ugd2l0aCAtLW5vLXBpeGVsLXRlc3Rz
JykKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IEZhbHNlCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC0xNTEsMTIgKzE2NCwz
NiBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAjIG9yIGFueSBzdWJjbGFz
c2VzLgogICAgICMKIAorICAgIGRlZiBfY2hlY2tfYnVpbGRfdXBfdG9fZGF0ZShzZWxmLCB0YXJn
ZXQpOgorICAgICAgICBpZiB0YXJnZXQgaW4gKCdEZWJ1ZycsICdSZWxlYXNlJyk6CisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVidWdfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJp
dmVyKCdEZWJ1ZycpCisgICAgICAgICAgICAgICAgcmVsZWFzZV9wYXRoID0gc2VsZi5fcGF0aF90
b19kcml2ZXIoJ1JlbGVhc2UnKQorCisgICAgICAgICAgICAgICAgZGVidWdfbXRpbWUgPSBvcy5z
dGF0KGRlYnVnX3BhdGgpLnN0X210aW1lCisgICAgICAgICAgICAgICAgcmVsZWFzZV9tdGltZSA9
IG9zLnN0YXQocmVsZWFzZV9wYXRoKS5zdF9tdGltZQorCisgICAgICAgICAgICAgICAgaWYgKGRl
YnVnX210aW1lID4gcmVsZWFzZV9tdGltZSBhbmQgdGFyZ2V0ID09ICdSZWxlYXNlJyBvcgorICAg
ICAgICAgICAgICAgICAgICByZWxlYXNlX210aW1lID4gZGVidWdfbXRpbWUgYW5kIHRhcmdldCA9
PSAnRGVidWcnKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdZb3UgYXJl
IG5vdCBydW5uaW5nIHRoZSBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyZWNlbnQgdGVzdF9zaGVsbCBiaW5hcnkuIFlvdSBuZWVkIHRvICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzIC0tZGVidWcgb3Igbm90IHRvIHNlbGVjdCBi
ZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWJ1ZyBhbmQg
UmVsZWFzZS4nKQorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJycpCisgICAg
ICAgICAgICAjIFRoaXMgd2lsbCBmYWlsIGlmIHdlIGRvbid0IGhhdmUgYm90aCBhIGRlYnVnIGFu
ZCByZWxlYXNlIGJpbmFyeS4KKyAgICAgICAgICAgICMgVGhhdCdzIGZpbmUgYmVjYXVzZSwgaW4g
dGhpcyBjYXNlLCB3ZSBtdXN0IGFscmVhZHkgYmUgcnVubmluZyB0aGUKKyAgICAgICAgICAgICMg
bW9zdCB1cC10by1kYXRlIG9uZS4KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIFRydWUKKwogICAgIGRlZiBfY2hyb21pdW1f
YmFzZWxpbmVfcGF0aChzZWxmLCBwbGF0Zm9ybSk6CiAgICAgICAgIGlmIHBsYXRmb3JtIGlzIE5v
bmU6CiAgICAgICAgICAgICBwbGF0Zm9ybSA9IHNlbGYubmFtZSgpCiAgICAgICAgIHJldHVybiBz
ZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCAnZGF0YScsICdsYXlvdXRfdGVz
dHMnLAogICAgICAgICAgICAgJ3BsYXRmb3JtJywgcGxhdGZvcm0sICdMYXlvdXRUZXN0cycpCiAK
KwogY2xhc3MgQ2hyb21pdW1Ecml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgICIiIkFic3RyYWN0IGlu
dGVyZmFjZSBmb3IgdGhlIER1bXBSZW5kZXJUcmVlIGludGVyZmFjZS4iIiIKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9saW51eC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbGludXgucHkKaW5kZXggYjgxNzI1MS4uNzQ5NTU3MiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX2xpbnV4LnB5CkBAIC0yNyw4ICsyNyw5IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJDaHJvbWl1bSBNYWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBv
cnQgaW50ZXJmYWNlLiIiIgorIiIiQ2hyb21pdW0gTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhl
IFBvcnQgaW50ZXJmYWNlLiIiIgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQg
cGxhdGZvcm0KIGltcG9ydCBzaWduYWwKQEAgLTUzLDkgKzU0LDIxIEBAIGNsYXNzIENocm9taXVt
TGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAgc2VsZi5f
d2Via2l0X2Jhc2VsaW5lX3BhdGgoJ3dpbicpLAogICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtp
dF9iYXNlbGluZV9wYXRoKCdtYWMnKV0KIAotICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToK
LSAgICAgICAgIyBXZSBoYXZlIG5vIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyB0byBj
aGVjay4KLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZiwg
bmVlZHNfaHR0cCk6CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVj
a19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKQorICAgICAgICBpZiBuZWVkc19odHRwOgorICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfYXBhY2hlOgorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IHNlbGYuX2NoZWNrX2FwYWNoZV9pbnN0YWxsKCkgYW5kIHJlc3VsdAorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja19saWdodHRwZF9p
bnN0YWxsKCkgYW5kIHJlc3VsdAorICAgICAgICByZXN1bHQgPSBzZWxmLl9jaGVja193ZGlmZl9p
bnN0YWxsKCkgYW5kIHJlc3VsdAorCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKCdGb3IgY29tcGxldGUgTGludXggYnVpbGQgcmVxdWlyZW1lbnRzLCBw
bGVhc2Ugc2VlOicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICAgICAg
bG9nZ2luZy5lcnJvcignICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS93aWtp
LycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbnV4QnVpbGRJbnN0cnVjdGlvbnMnKQor
ICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgbnVtX2NvcmVzKHNlbGYpOgogICAgICAg
ICBudW1fY29yZXMgPSBvcy5zeXNjb25mKCJTQ19OUFJPQ0VTU09SU19PTkxOIikKQEAgLTc4LDEx
ICs5MSw0MiBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQp
OgogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBiYXNlID0gc2Vs
Zi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihiYXNlLCAnc2NvbnNidWlsZCcpKToKLSAgICAgICAgICAgIHJldHVybiBzZWxm
LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdzY29uc2J1aWxkJywKLSAgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnRhcmdldCwgKmNvbXBzKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3Njb25zYnVpbGQnLCAqY29tcHMpCiAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnb3V0JywK
LSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRhcmdldCwgKmNvbXBzKQorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ291dCcsICpjb21wcykKKwor
ICAgIGRlZiBfY2hlY2tfYXBhY2hlX2luc3RhbGwoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IGNo
cm9taXVtLmNoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9fYXBhY2hlKCksCisgICAgICAg
ICAgICAiYXBhY2hlMiIpCisgICAgICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2ZpbGVfZXhp
c3RzKHNlbGYuX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKCksCisgICAgICAgICAgICAiYXBh
Y2hlMiBjb25maWcgZmlsZSIpIGFuZCByZXN1bHQKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAg
ICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJ1BsZWFzZSBpbnN0YWxsIHVzaW5nOiAic3VkbyBhcHQt
Z2V0IGluc3RhbGwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBhY2hlMiBsaWJhcGFj
aGUyLW1vZC1waHA1IicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICBy
ZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX2NoZWNrX2xpZ2h0dHBkX2luc3RhbGwoc2VsZik6Cisg
ICAgICAgIHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2ZpbGVfZXhpc3RzKAorICAgICAgICAgICAg
c2VsZi5fcGF0aF90b19saWdodHRwZCgpLCAiTGlnSFRUUGQgZXhlY3V0YWJsZSIpCisgICAgICAg
IHJlc3VsdCA9IGNocm9taXVtLmNoZWNrX2ZpbGVfZXhpc3RzKHNlbGYuX3BhdGhfdG9fbGlnaHR0
cGRfcGhwKCksCisgICAgICAgICAgICAiUEhQIENHSSBleGVjdXRhYmxlIikgYW5kIHJlc3VsdAor
ICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5jaGVja19maWxlX2V4aXN0cyhzZWxmLl9wYXRoX3Rv
X2xpZ2h0dHBkX21vZHVsZXMoKSwKKyAgICAgICAgICAgICJMaWdIVFRQZCBtb2R1bGVzIikgYW5k
IHJlc3VsdAorICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgbG9nZ2luZy5lcnJv
cignUGxlYXNlIGluc3RhbGwgdXNpbmc6ICJzdWRvIGFwdC1nZXQgaW5zdGFsbCAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICdsaWdodHRwZCBwaHA1LWNnaSInKQorICAgICAgICAgICAgbG9n
Z2luZy5lcnJvcignJykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9jaGVja193
ZGlmZl9pbnN0YWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5jaGVja19maWxl
X2V4aXN0cyhzZWxmLl9wYXRoX3RvX3dkaWZmKCksICd3ZGlmZicpCisgICAgICAgIGlmIG5vdCBy
ZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdQbGVhc2UgaW5zdGFsbCB1c2luZzog
InN1ZG8gYXB0LWdldCBpbnN0YWxsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dkaWZm
IicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICByZXR1cm4gcmVzdWx0
CisKIAogICAgIGRlZiBfa2lsbF9wcm9jZXNzKHNlbGYsIHBpZCk6CiAgICAgICAgICIiIkZvcmNl
ZnVsbHkga2lsbCB0aGUgcHJvY2Vzcy4KQEAgLTExNCwxNyArMTU4LDE5IEBAIGNsYXNzIENocm9t
aXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgZGVmIF9wYXRoX3RvX2xp
Z2h0dHBkX3BocChzZWxmKToKICAgICAgICAgcmV0dXJuICIvdXNyL2Jpbi9waHAtY2dpIgogCi0g
ICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoJ3Rlc3Rfc2hlbGwnKQorICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgdGFyZ2V0
PU5vbmUpOgorICAgICAgICBpZiBub3QgdGFyZ2V0OgorICAgICAgICAgICAgdGFyZ2V0ID0gc2Vs
Zi5fb3B0aW9ucy50YXJnZXQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgodGFyZ2V0
LCAndGVzdF9zaGVsbCcpCiAKICAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgogICAgICAg
ICByZXR1cm4gTm9uZQogCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdpbWFnZV9kaWZmJykKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5fb3B0aW9ucy50YXJnZXQsICdpbWFnZV9kaWZmJykKIAog
ICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuICd3ZGlmZicKKyAg
ICAgICAgcmV0dXJuICcvdXNyL2Jpbi93ZGlmZicKIAogICAgIGRlZiBfc2h1dF9kb3duX2h0dHBf
c2VydmVyKHNlbGYsIHNlcnZlcl9waWQpOgogICAgICAgICAiIiJTaHV0IGRvd24gdGhlIGxpZ2h0
dHBkIHdlYiBzZXJ2ZXIuIEJsb2NrcyB1bnRpbCBpdCdzIGZ1bGx5CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fbWFjLnB5CmluZGV4IGJjZmZjZjguLjdlNGYyNjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
bWFjLnB5CkBAIC0yOSw2ICsyOSw3IEBACiAKICIiIkNocm9taXVtIE1hYyBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MK
IGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHNpZ25hbApAQCAtNTIsOSArNTMsMTUgQEAgY2xhc3Mg
Q2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAg
c2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycgKyBzZWxmLnZlcnNpb24oKSksCiAgICAg
ICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpXQogCi0gICAgZGVm
IGNoZWNrX3N5c19kZXBzKHNlbGYpOgotICAgICAgICAjIFdlIGhhdmUgbm8gc3BlY2lmaWMgcGxh
dGZvcm0gZGVwZW5kZW5jaWVzLgotICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBjaGVja19z
eXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToKKyAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uQ2hy
b21pdW1Qb3J0LmNoZWNrX3N5c19kZXBzKHNlbGYsIG5lZWRzX2h0dHApCisgICAgICAgIHJlc3Vs
dCA9IHNlbGYuX2NoZWNrX3dkaWZmX2luc3RhbGwoKSBhbmQgcmVzdWx0CisgICAgICAgIGlmIG5v
dCByZXN1bHQ6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCdGb3IgY29tcGxldGUgTWFjIGJ1
aWxkIHJlcXVpcmVtZW50cywgcGxlYXNlIHNlZTonKQorICAgICAgICAgICAgbG9nZ2luZy5lcnJv
cignJykKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoJyAgICBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vd2lraS8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdNYWNCdWls
ZEluc3RydWN0aW9ucycpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBudW1fY29y
ZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBpbnQoc3VicHJvY2Vzcy5Qb3BlbihbJ3N5c2N0bCcs
Jy1uJywnaHcubmNwdSddLApAQCAtODEsOCArODgsMTcgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0
KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIwogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNl
bGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCd4Y29kZWJ1aWxkJywgc2VsZi5fb3B0aW9ucy50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0
aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3hjb2RlYnVpbGQnLCAqY29tcHMpCisKKyAgICBkZWYgX2No
ZWNrX3dkaWZmX2luc3RhbGwoc2VsZik6CisgICAgICAgIGYgPSBvcGVuKG9zLmRldm51bGwsICd3
JykKKyAgICAgICAgcmNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoWyd3ZGlmZiddLCBzdGRlcnI9ZikK
KyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGlmIHJjb2RlID09IDEyNzoKKyAgICAgICAgICAg
IGxvZ2dpbmcuZXJyb3IoJ3dkaWZmIG5vdCBmb3VuZC4gSW5zdGFsbCB1c2luZyBNYWNQb3J0cyBv
ciBzb21lICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ290aGVyIG1lYW5zJykKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIF9saWdo
dHRwZF9wYXRoKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9j
aHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdsaWdodHRwZCcsCkBAIC0xMjQsMTcgKzE0MCwx
OSBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBk
ZWYgX3BhdGhfdG9fbGlnaHR0cGRfcGhwKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbGln
aHR0cGRfcGF0aCgnYmluJywgJ3BocC1jZ2knKQogCi0gICAgZGVmIF9wYXRoX3RvX2RyaXZlcihz
ZWxmKToKKyAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIHRhcmdldD1Ob25lKToKICAgICAg
ICAgIyBUT0RPKHBpbmtlcnRvbik6IG1ha2UgfHRhcmdldHwgaGFwcHkgd2l0aCBjYXNlLXNlbnNp
dGl2ZSBmaWxlCiAgICAgICAgICMgc3lzdGVtcy4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoJ1Rlc3RTaGVsbC5hcHAnLCAnQ29udGVudHMnLCAnTWFjT1MnLCAKKyAgICAgICAgaWYg
bm90IHRhcmdldDoKKyAgICAgICAgICAgIHRhcmdldCA9IHNlbGYuX29wdGlvbnMudGFyZ2V0Cisg
ICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHRhcmdldCwgJ1Rlc3RTaGVsbC5hcHAnLCAn
Q29udGVudHMnLCAnTWFjT1MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVz
dFNoZWxsJykKIAogICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9wYXRoKCdsYXlvdXRfdGVzdF9oZWxwZXInKQorICAgICAgICByZXR1cm4g
c2VsZi5fYnVpbGRfcGF0aChzZWxmLl9vcHRpb25zLnRhcmdldCwgJ2xheW91dF90ZXN0X2hlbHBl
cicpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoJ2ltYWdlX2RpZmYnKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aChzZWxmLl9vcHRpb25zLnRhcmdldCwgJ2ltYWdlX2RpZmYnKQogCiAgICAgZGVmIF9w
YXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gJ3dkaWZmJwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX3dpbi5weQppbmRleCA1ZWIwYmExLi4yNWIxYTJhIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX3dpbi5weQpAQCAtMjksNiArMjksNyBAQAogCiAiIiJDaHJvbWl1bSBXaW4gaW1wbGVtZW50
YXRpb24gb2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0
IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaWduYWwKQEAgLTU5LDkgKzYwLDE1IEBAIGNs
YXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBkaXJz
LmFwcGVuZChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJykpCiAgICAgICAgIHJldHVy
biBkaXJzCiAKLSAgICBkZWYgY2hlY2tfc3lzX2RlcHMoc2VsZik6Ci0gICAgICAgICMgVE9ETyhk
cHJhbmtlKTogaW1wbGVtZW50IHRoaXMKLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICBkZWYgY2hl
Y2tfc3lzX2RlcHMoc2VsZiwgbmVlZHNfaHR0cCk6CisgICAgICAgIHJlc3VsdCA9IGNocm9taXVt
LkNocm9taXVtUG9ydC5jaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKQorICAgICAgICBp
ZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcignRm9yIGNvbXBsZXRlIFdp
bmRvd3MgYnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2UgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAnc2VlOicpCisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCcnKQorICAgICAgICAgICAg
bG9nZ2luZy5lcnJvcignICAgIGh0dHA6Ly9kZXYuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvaG93
LXRvcy8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZC1pbnN0cnVjdGlvbnMtd2lu
ZG93cycpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBnZXRfYWJzb2x1dGVfcGF0
aChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCBp
biB1bml4IGZvcm1hdCBmb3IgdGhlIGdpdmVuIGZpbGVuYW1lLiIiIgpAQCAtOTQsOSArMTAxLDEw
IEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICMK
IAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAgICAjIEZJWE1FKGRw
cmFua2UpOiBhbGxvdyBmb3IgYnVpbGRzIHVuZGVyICdjaHJvbWUnIGFzIHdlbGwuCi0gICAgICAg
IHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCBzZWxmLl9vcHRp
b25zLnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KmNvbXBzKQorICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0
JywgKmNvbXBzKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwKToKKyAgICAgICAgICAgIHJl
dHVybiBwCisgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdjaHJv
bWUnLCAqY29tcHMpCiAKICAgICBkZWYgX2xpZ2h0dHBkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAg
ICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5Jywg
J2xpZ2h0dHBkJywgJ3dpbicsCkBAIC0xMjksMTQgKzEzNywxNiBAQCBjbGFzcyBDaHJvbWl1bVdp
blBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgX3BhdGhfdG9fbGlnaHR0cGRf
cGhwKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbGlnaHR0cGRfcGF0aCgncGhwNScsICdw
aHAtY2dpLmV4ZScpCiAKLSAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgndGVzdF9zaGVsbC5leGUnKQorICAgIGRlZiBfcGF0aF90
b19kcml2ZXIoc2VsZiwgdGFyZ2V0PU5vbmUpOgorICAgICAgICBpZiBub3QgdGFyZ2V0OgorICAg
ICAgICAgICAgdGFyZ2V0ID0gc2VsZi5fb3B0aW9ucy50YXJnZXQKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGgodGFyZ2V0LCAndGVzdF9zaGVsbC5leGUnKQogCiAgICAgZGVmIF9wYXRo
X3RvX2hlbHBlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xheW91
dF90ZXN0X2hlbHBlci5leGUnKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxm
Ll9vcHRpb25zLnRhcmdldCwgJ2xheW91dF90ZXN0X2hlbHBlci5leGUnKQogCiAgICAgZGVmIF9w
YXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRo
KCdpbWFnZV9kaWZmLmV4ZScpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYu
X29wdGlvbnMudGFyZ2V0LCAnaW1hZ2VfZGlmZi5leGUnKQogCiAgICAgZGVmIF9wYXRoX3RvX3dk
aWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgn
dGhpcmRfcGFydHknLCAnY3lnd2luJywgJ2JpbicsCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX2Nocm9taXVt
X3dlYmtpdF90ZXN0cy5weQppbmRleCBmMGI2OGVlLi5iNmQ5YjM1IDEwMDc1NQotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fY2hyb21pdW1fd2Via2l0
X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTQ5NSw3ICs0OTUsNyBAQCBjbGFzcyBU
ZXN0UnVubmVyOgogICAgICAgICByZXR1cm4gdGVzdF9hcmdzLCBwbmdfcGF0aCwgc2hlbGxfYXJn
cwogCiAgICAgZGVmIF9jb250YWluc190ZXN0cyhzZWxmLCBzdWJkaXIpOgotICAgICAgICBmb3Ig
dGVzdF9maWxlIGluIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdDoKKyAgICAgICAgZm9yIHRlc3RfZmls
ZSBpbiBzZWxmLl90ZXN0X2ZpbGVzOgogICAgICAgICAgICAgaWYgdGVzdF9maWxlLmZpbmQoc3Vi
ZGlyKSA+PSAwOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBG
YWxzZQpAQCAtNTk0LDYgKzU5NCwxMCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBzZWxm
LnVwZGF0ZV9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5KQogICAgICAgICByZXR1cm4gKHRocmVhZF90
aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzKQogCisgICAgZGVm
IG5lZWRzX2h0dHAoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgdGVzdCBy
dW5uZXIgbmVlZHMgYW4gSFRUUCBzZXJ2ZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9jb250
YWluc190ZXN0cyhzZWxmLkhUVFBfU1VCRElSKQorCiAgICAgZGVmIHJ1bihzZWxmLCByZXN1bHRf
c3VtbWFyeSk6CiAgICAgICAgICIiIlJ1biBhbGwgb3VyIHRlc3RzIG9uIGFsbCBvdXIgdGVzdCBm
aWxlcy4KIApAQCAtNjE0LDcgKzYxOCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIGlm
IG5vdCBzZWxmLl9vcHRpb25zLm5vX3BpeGVsX3Rlc3RzOgogICAgICAgICAgICAgc2VsZi5fcG9y
dC5zdGFydF9oZWxwZXIoKQogCi0gICAgICAgIGlmIHNlbGYuX2NvbnRhaW5zX3Rlc3RzKHNlbGYu
SFRUUF9TVUJESVIpOgorICAgICAgICBpZiBzZWxmLm5lZWRzX2h0dHAoKToKICAgICAgICAgICAg
IHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQogCiAgICAgICAgIGlmIHNlbGYuX2NvbnRh
aW5zX3Rlc3RzKHNlbGYuV0VCU09DS0VUX1NVQkRJUik6CkBAIC0xNDU4LDcgKzE0NjIsNyBAQCBk
ZWYgbWFpbihvcHRpb25zLCBhcmdzKToKIAogICAgICMgQ2hlY2sgdGhhdCB0aGUgc3lzdGVtIGRl
cGVuZGVuY2llcyAodGhlbWVzLCBmb250cywgLi4uKSBhcmUgY29ycmVjdC4KICAgICBpZiBub3Qg
b3B0aW9ucy5ub2NoZWNrX3N5c19kZXBzOgotICAgICAgICBpZiBub3QgcG9ydF9vYmouY2hlY2tf
c3lzX2RlcHMoKToKKyAgICAgICAgaWYgbm90IHBvcnRfb2JqLmNoZWNrX3N5c19kZXBzKHRlc3Rf
cnVubmVyLm5lZWRzX2h0dHAoKSk6CiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgd3Jp
dGUgPSBjcmVhdGVfbG9nZ2luZ193cml0ZXIob3B0aW9ucywgImNvbmZpZyIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>