<?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>66902</bug_id>
          
          <creation_ts>2011-08-24 15:27:51 -0700</creation_ts>
          <short_desc>Provide option to disable Mac OS 10.7 application resume when using {debug, run}-{safari, minibrowser, test-runner, test-webkit-api}, and run-webkit-app</short_desc>
          <delta_ts>2011-12-23 15:48:05 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456465</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-24 15:27:51 -0700</bug_when>
    <thetext>Since Mac OS 10.7, Safari resumes its last saved state on launch. I propose that by default run-safari/debug-safari disables resuming for Safari with the assumption that a person that explicitly launches such a second instance of Safari most likely intends to have a different working set of web pages.

For example, I frequently run both shipping Safari and Safari with a development build of WebKit (via run-safari --debug) where the former instance is used for daily browsing/reading a W3C spec. and the latter is used for debugging an issue.

While it&apos;s sufficient to pass -ApplePersistenceIgnoreState YES to run-safari/debug-safari to disable the resume feature, I propose making this the default behavior. That is, when the command line argument -ApplePersistenceIgnoreState isn&apos;t specified we default to -ApplePersistenceIgnoreState YES (disable application resume).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456480</commentid>
    <comment_count>1</comment_count>
      <attachid>105086</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-24 15:41:25 -0700</bug_when>
    <thetext>Created attachment 105086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456481</commentid>
    <comment_count>2</comment_count>
      <attachid>105086</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-08-24 15:44:57 -0700</bug_when>
    <thetext>Comment on attachment 105086
Patch

I don’t think it’s a great idea to require that someone remember the user default name in order to reenable this functionality.  An explicit command line argument would be much more friendly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456494</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-24 15:56:44 -0700</bug_when>
    <thetext>I don&apos;t feel about this strongly, but I would be slightly unhappy if run-safari had a different behavior than launching Safari from Xcode in this regard (or even if I had to add this argument in Xcode project settings on each of my machines for consistency).

That said, having all windows reopen when launching Safari for debugging is generally quite unfortunate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456500</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-08-24 15:59:48 -0700</bug_when>
    <thetext>Xcode already has a preference on the executable that controls this setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457666</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-26 11:16:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Xcode already has a preference on the executable that controls this setting.

Notice that we don&apos;t have such an option when using our command line tools to launch Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457667</commentid>
    <comment_count>6</comment_count>
      <attachid>105383</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-26 11:17:24 -0700</bug_when>
    <thetext>Created attachment 105383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457779</commentid>
    <comment_count>7</comment_count>
      <attachid>105383</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-26 14:25:50 -0700</bug_when>
    <thetext>Comment on attachment 105383
Patch

Based on Mark Rowe&apos;s suggestion, I&apos;ve added an optional command line argument, called restore-state (disabled by default) that can be passed to {run, debug}-safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458578</commentid>
    <comment_count>8</comment_count>
      <attachid>105383</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-08-29 17:03:36 -0700</bug_when>
    <thetext>Comment on attachment 105383
Patch

This appears to require that one memorize the user default name if you want to use gdb-safari rather than debug-safari.  I think it would make sense to push the option handling down to gdb-safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458664</commentid>
    <comment_count>9</comment_count>
      <attachid>105566</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-29 20:24:29 -0700</bug_when>
    <thetext>Created attachment 105566
Patch and unit test

Updated patch based on Mark Rowe&apos;s suggestion. Also added a unit test.

I am open to suggestions on the name of the function checkForApplePersistenceIgnoreStateArgumentOrInsertIntoArrayRef().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458665</commentid>
    <comment_count>10</comment_count>
      <attachid>105567</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-29 20:26:54 -0700</bug_when>
    <thetext>Created attachment 105567
Patch and unit test

Updated patch; Sorted imports in script gdb-safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458668</commentid>
    <comment_count>11</comment_count>
      <attachid>105568</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-08-29 20:33:02 -0700</bug_when>
    <thetext>Created attachment 105568
Patch and unit test

Fix if-statement condition in script gdb-safari. By default, we don&apos;t want Safari to restore state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478212</commentid>
    <comment_count>12</comment_count>
      <attachid>105568</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-05 01:07:12 -0700</bug_when>
    <thetext>Comment on attachment 105568
Patch and unit test

Clearing review flag as this patch no longer applies. Will rebase patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506565</commentid>
    <comment_count>13</comment_count>
      <attachid>115993</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-11-20 12:11:43 -0800</bug_when>
    <thetext>Created attachment 115993
Patch

I chose to make no-saved-state an optional command line argument for now instead of making this behavior the default. If we discover that people regularly pass no-saved-state to these tools then we can change the default behavior to always disable application resume and make state restoration the exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510074</commentid>
    <comment_count>14</comment_count>
      <attachid>115993</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-11-28 12:32:14 -0800</bug_when>
    <thetext>Comment on attachment 115993
Patch

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

r=me

&gt; Tools/ChangeLog:4
&gt; +        Provide option to disable Mac OS 10.7 application resume when using
&gt; +        {debug, run}-{safari, minibrowser, test-runner, test-webkit-api}, and run-webkit-app

Nit:  Should mention gdb-safari here as well.

&gt; Tools/ChangeLog:18
&gt; +        * Scripts/debug-minibrowser: Call printHelpAndExitForRunAndDebugWebKitAppIfNeeded()
&gt; +        to print a help message and exit(3) if the command line argument --help was given.

Nit: Don&apos;t you mean &apos;exit(1)&apos; not &apos;exit(3)&apos; here?

&gt; Tools/Scripts/webkitdirs.pm:59
&gt;         &amp;productDir
&gt; +       &amp;printHelpAndExitForRunAndDebugWebKitAppIfNeeded

The new method should appear before &amp;prodcutDir to keep the list alphabetized.

&gt; Tools/Scripts/webkitdirs.pm:2062
&gt; +    push @args, (&quot;-ApplePersistenceIgnoreState&quot;, &quot;YES&quot;) if isLion() &amp;&amp; checkForArgumentAndRemoveFromArrayRef(&quot;--no-saved-state&quot;, \@args);

Nit: This means that &quot;--saved-state&quot; is not a valid option, but that&apos;s probably okay for now.

It&apos;s rather unfortunate that we&apos;re doing our own argument parsing in these Perl scripts instead of using GetOpt::Long or GetOpt::Std, but it&apos;s hard to distribute the argument checking the way scripts (and library) methods are currently written.  It&apos;s also hard to get a list of valid options for a given script because of this same issue.  In the future, we may want to think about how to unify this argument parsing and help printing.  (I&apos;m sure this problem has been solved before as well; maybe we can find a solution from another open source Perl project.)  Just something to think about--it shouldn&apos;t block this patch.

&gt; Tools/Scripts/webkitdirs.pm:2094
&gt; -    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath or die;
&gt; +    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath, argumentsForRunAndDebugMacWebKitApp() or die;

Nit: This changes the list of arguments passed to gdb to include a post-processed @ARGV.  That&apos;s probably okay, but could break some one relying on the old behavior of ignoring &quot;unknown&quot; arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510114</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-11-28 13:25:34 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 115993 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115993&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2094
&gt; &gt; -    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath or die;
&gt; &gt; +    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath, argumentsForRunAndDebugMacWebKitApp() or die;
&gt; 
&gt; Nit: This changes the list of arguments passed to gdb to include a post-processed @ARGV.  That&apos;s probably okay, but could break some one relying on the old behavior of ignoring &quot;unknown&quot; arguments.

This is Bug 72829.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525593</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-21 14:30:09 -0800</bug_when>
    <thetext>Attachment 115993 was posted by a committer and has review+, assigning to Daniel Bates for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526922</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-23 15:37:24 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 115993 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115993&amp;action=review
&gt; [...]
&gt; &gt; Tools/ChangeLog:4
&gt; &gt; +        Provide option to disable Mac OS 10.7 application resume when using
&gt; &gt; +        {debug, run}-{safari, minibrowser, test-runner, test-webkit-api}, and run-webkit-app
&gt; 
&gt; Nit:  Should mention gdb-safari here as well.

No, it should not mention gdb-safari because gdb-safari was removed in &lt;http://trac.webkit.org/changeset/97562&gt;. 

&gt; 
&gt; &gt; Tools/ChangeLog:18
&gt; &gt; +        * Scripts/debug-minibrowser: Call printHelpAndExitForRunAndDebugWebKitAppIfNeeded()
&gt; &gt; +        to print a help message and exit(3) if the command line argument --help was given.
&gt; 
&gt; Nit: Don&apos;t you mean &apos;exit(1)&apos; not &apos;exit(3)&apos; here?

No, I didn&apos;t mean to refer to the actual code in the patch here, &quot;exit(1)&quot;. Instead, I wanted to refer to the exit() function call. I&apos;ll change &quot;exit(1)&quot; to &quot;exit()&quot; here.

&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:59
&gt; &gt;         &amp;productDir
&gt; &gt; +       &amp;printHelpAndExitForRunAndDebugWebKitAppIfNeeded
&gt; 
&gt; The new method should appear before &amp;prodcutDir to keep the list alphabetized.

Will fix before landing.

&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:2062
&gt; &gt; +    push @args, (&quot;-ApplePersistenceIgnoreState&quot;, &quot;YES&quot;) if isLion() &amp;&amp; checkForArgumentAndRemoveFromArrayRef(&quot;--no-saved-state&quot;, \@args);
&gt; 
&gt; Nit: This means that &quot;--saved-state&quot; is not a valid option, but that&apos;s probably okay for now.
&gt; 
&gt; It&apos;s rather unfortunate that we&apos;re doing our own argument parsing in these Perl scripts instead of using GetOpt::Long or GetOpt::Std, but it&apos;s hard to distribute the argument checking the way scripts (and library) methods are currently written.  It&apos;s also hard to get a list of valid options for a given script because of this same issue.  In the future, we may want to think about how to unify this argument parsing and help printing.  (I&apos;m sure this problem has been solved before as well; maybe we can find a solution from another open source Perl project.)  Just something to think about--it shouldn&apos;t block this patch.
&gt; 

Yes, it would be beneficial to standardize on a common argument parsing solution that we can use throughout our scripts.

&gt; &gt; Tools/Scripts/webkitdirs.pm:2094
&gt; &gt; -    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath or die;
&gt; &gt; +    exec { $gdbPath } $gdbPath, @architectureFlags, $appPath, argumentsForRunAndDebugMacWebKitApp() or die;
&gt; 
&gt; Nit: This changes the list of arguments passed to gdb to include a post-processed @ARGV.  That&apos;s probably okay, but could break some one relying on the old behavior of ignoring &quot;unknown&quot; arguments.

Yes, having debug-safari pass any additional command line arguments through to gdb is a change of behavior. Lets see if how people react to this new behavior. If people find this behavior unfavorable then we can remove it.

For completeness, this comment is more applicable to bug #72829, which added this behavior to debug-safari. This patch modifies the functionality added by the patch for bug #72829 by processing @ARGV as part of the machinery to support the optional command line argument &quot;--no-saved-state&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526923</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-23 15:48:05 -0800</bug_when>
    <thetext>Committed r103640: &lt;http://trac.webkit.org/changeset/103640&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105086</attachid>
            <date>2011-08-24 15:41:25 -0700</date>
            <delta_ts>2011-08-26 11:17:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug66902.patch</filename>
            <type>text/plain</type>
            <size>2126</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkzNzQ0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTEtMDgtMjQgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgor
CisgICAgICAgIHJ1bi1zYWZhcmkvZGVidWctc2FmYXJpIHNob3VsZCBkaXNhYmxlIGFwcGxpY2F0
aW9uIHJlc3VtZSBmb3IgU2FmYXJpIGJ5IGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2UgTWFjIE9TIDEwLjcsIFNhZmFyaSByZXN1bWVz
IGl0cyBsYXN0IHNhdmVkIHN0YXRlIG9uIGxhdW5jaC4gV2hlbiB1c2luZworICAgICAgICB7cnVu
LCBkZWJ1Z30tc2FmYXJpIGl0IGlzIG1vc3QgbGlrZWx5IHRoZSBjYXNlIHRoYXQgc3VjaCBhIHNl
Y29uZCBpbnN0YW5jZSBvZgorICAgICAgICBTYWZhcmkgd2lsbCBoYXZlIGEgZGlmZmVyZW50IHdv
cmtpbmcgc2V0IG9mIHdlYiBwYWdlcyAoc2F5IHRvIGRlYnVnIGFuIGlzc3VlKS4KKyAgICAgICAg
SGVuY2UsIGJ5IGRlZmF1bHQsIHdlIHNob3VsZG4ndCBoYXZlIHtydW4sIGRlYnVnfS1zYWZhcmkg
cmVzdW1lIHRoZSBsYXN0IHNhdmVkIHN0YXRlLgorCisgICAgICAgIEluc3RlYWQsIGlmIHlvdSBl
eHBsaWNpdGx5IHdhbnQgU2FmYXJpIHRvIHJlc3VtZSB3aXRoIHRoZSBsYXN0IHNhdmVkIHN0YXRl
IHRoZW4KKyAgICAgICAgcGFzcyB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAtQXBwbGVQZXJz
aXN0ZW5jZUlnbm9yZVN0YXRlIE5PLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBt
OgorICAgICAgICAocnVuU2FmYXJpKTogTW9kaWZpZWQgdG8gcGFzcyAtQXBwbGVQZXJzaXN0ZW5j
ZUlnbm9yZVN0YXRlIFlFUyB0byBTYWZhcmkgc28gYXMgdG8KKyAgICAgICAgZGlzYWJsZSBhcHBs
aWNhdGlvbiByZXN1bWUgaW4gdGhlIGFic2VuY2Ugb2YgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVu
dCAtQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlLgorCiAyMDExLTA4LTI0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGVtcHR5IGRpcmVjdG9yeS4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdGRpcnMucG0JKHJldmlzaW9uIDkzNzMzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRkaXJzLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTM4LDYgKzE5MzgsMTIgQEAgc3ViIHJ1
blNhZmFyaQogICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICAgICAgcmV0dXJuIHN5
c3RlbSAiJEZpbmRCaW46OkJpbi9nZGItc2FmYXJpIiwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlv
bigpIGlmICRkZWJ1Z2dlcjsKIAorICAgICAgICBpZiAoaXNMaW9uKCkpIHsKKyAgICAgICAgICAg
ICMgQnkgZGVmYXVsdCwgZG9uJ3QgcmVzdW1lIHRoZSBsYXN0IHNhdmVkIHN0YXRlIGZvciBTYWZh
cmkuCisgICAgICAgICAgICBteSAkYXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlS2V5ID0gIi1B
cHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiOworICAgICAgICAgICAgcHVzaCBAQVJHViwgKCRh
cHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVLZXksICJZRVMiKSB1bmxlc3MgZ3JlcCgvJGFwcGxl
UGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUtleS8sIEBBUkdWKTsKKyAgICAgICAgfQorCiAgICAgICAg
IG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogICAgICAgICBwcmludCAiU3RhcnRpbmcg
U2FmYXJpIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2Vi
S2l0IGluICRwcm9kdWN0RGlyLlxuIjsKICAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRI
fSA9ICRwcm9kdWN0RGlyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105383</attachid>
            <date>2011-08-26 11:17:24 -0700</date>
            <delta_ts>2011-08-29 20:24:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug66902_1.patch</filename>
            <type>text/plain</type>
            <size>5443</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkzODkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTEtMDgtMjYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgor
CisgICAgICAgIHJ1bi1zYWZhcmkvZGVidWctc2FmYXJpIHNob3VsZCBkaXNhYmxlIGFwcGxpY2F0
aW9uIHJlc3VtZSBmb3IgU2FmYXJpIGJ5IGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVW5kZXIgTWFjIE9TIDEwLjcgU2FmYXJpIHJlc3VtZXMg
aXRzIGxhc3Qgc2F2ZWQgc3RhdGUgb24gbGF1bmNoLiBXaGVuIHVzaW5nCisgICAgICAgIHtydW4s
IGRlYnVnfS1zYWZhcmkgaXQgaXMgbW9zdCBsaWtlbHkgdGhlIGNhc2UgdGhhdCBzdWNoIGEgc2Vj
b25kIGluc3RhbmNlIG9mCisgICAgICAgIFNhZmFyaSB3aWxsIGhhdmUgYSBkaWZmZXJlbnQgd29y
a2luZyBzZXQgb2Ygd2ViIHBhZ2VzIChzYXkgdG8gZGVidWcgYW4gaXNzdWUpLgorICAgICAgICBI
ZW5jZSwgYnkgZGVmYXVsdCwgd2Ugc2hvdWxkbid0IGhhdmUge3J1biwgZGVidWd9LXNhZmFyaSBy
ZXN1bWUgdGhlIGxhc3Qgc2F2ZWQgc3RhdGUuCisKKyAgICAgICAgSW5zdGVhZCwgaWYgeW91IGV4
cGxpY2l0bHkgd2FudCBTYWZhcmkgdG8gcmVzdW1lIHdpdGggdGhlIGxhc3Qgc2F2ZWQgc3RhdGUg
dGhlbgorICAgICAgICBwYXNzIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgLXJlc3RvcmUtc3Rh
dGUgdG8ge3J1biwgZGVidWd9LXNhZmFyaS4KKworICAgICAgICBBcyBhIHNpZGUgZWZmZWN0LCBy
dW4td2Via2l0LXRlc3RzIHdpbGwgbGF1bmNoIFNhZmFyaSB3aXRob3V0IHN0YXRlIHJlc3RvcmF0
aW9uIHdoZW4KKyAgICAgICAgc2hvd2luZyB0ZXN0IHJlc3VsdHMgd2hpY2ggc2VlbXMgcmVhc29u
YWJsZSBhbmQgY29uc2lzdGVudCB3aXRoIGl0cyBiZWhhdmlvciBiZWZvcmUKKyAgICAgICAgTWFj
IE9TIDEwLjcuCisKKyAgICAgICAgKiBTY3JpcHRzL2RlYnVnLXNhZmFyaTogUGFyc2UgLS1yZXN0
b3JlLXN0YXRlIGNvbW1hbmQgbGluZSBvcHRpb247IEFkZGVkIHVzYWdlIG1lc3NhZ2UuCisgICAg
ICAgICogU2NyaXB0cy9ydW4tc2FmYXJpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dGRpcnMucG06CisgICAgICAgIChydW5TYWZhcmkpOiBNb2RpZmllZCB0byB0YWtlIGEgaGFzaCBy
ZWZlcmVuY2Ugc28gYXMgdG8gc3VwcG9ydCBib3RoIGVuYWJsZS9kaXNhYmxlIG9mCisgICAgICAg
IGRlYnVnZ2luZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uCisKIDIwMTEtMDgtMjYgIE5vZWwgR29y
ZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIE1ha2Ugc2hvdy1wcmV0dHkt
ZGlmZiB3b3JrIG9uIGxpbnV4CkluZGV4OiBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQkocmV2aXNpb24gOTM4OTIpCisr
KyBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5
LDM3IEBACiAjIFNjcmlwdCB0byBydW4gU2FmYXJpIGluIHRoZSBwbGF0Zm9ybSdzIGRlYnVnZ2Vy
IGZvciB0aGUgV2ViS2l0IE9wZW4gU291cmNlIFByb2plY3QuCiAKIHVzZSBzdHJpY3Q7Cit1c2Ug
RmlsZTo6QmFzZW5hbWU7CiB1c2UgRmluZEJpbjsKK3VzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZp
ZyBwYXNzX3Rocm91Z2gpOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7
CiAKK215ICRzaG93SGVscDsKK215ICRyZXN0b3JlU3RhdGU7CitteSAlb3B0aW9ucyA9ICgKKyAg
ICAnaHxoZWxwJyA9PiBcJHNob3dIZWxwLAorICAgICdyZXN0b3JlLXN0YXRlIScgPT4gXCRyZXN0
b3JlU3RhdGUsCispOworCitteSAkc2hvdWxkUmVzdG9yZVN0YXRlID0gJHJlc3RvcmVTdGF0ZSA/
ICJyZXN0b3JlIiA6ICJkb24ndCByZXN0b3JlIjsKK215ICR1c2FnZSA9IDw8RU9GOworVXNhZ2U6
IEB7W2Jhc2VuYW1lKCQwKV19IFtvcHRpb25zXSBbb3B0aW9ucyB0byBwYXNzIHRvIFNhZmFyaV0K
KyAgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3Nh
Z2UKKyAgLS1yZXN0b3JlLXN0YXRlICAgICAgICAgICAgICAgICAgIEVuYWJsZSBzdGF0ZSByZXN0
b3JhdGlvbiBvbiBNYWMgT1MgMTAuNyAoZGVmYXVsdDogJHNob3VsZFJlc3RvcmVTdGF0ZSkKK0VP
RgorCitHZXRPcHRpb25zKCVvcHRpb25zKTsKKworaWYgKCRzaG93SGVscCkgeworICAgIHByaW50
IFNUREVSUiAkdXNhZ2U7CisgICAgZXhpdCgxKTsKK30KKworbXkgJXJ1blNhZmFyaU9wdGlvbnM7
CiskcnVuU2FmYXJpT3B0aW9uc3tpbkRlYnVnZ2VyfSA9IDE7CiskcnVuU2FmYXJpT3B0aW9uc3ty
ZXN0b3JlU3RhdGV9ID0gJHJlc3RvcmVTdGF0ZSBpZiAkcmVzdG9yZVN0YXRlOworCiBzZXRDb25m
aWd1cmF0aW9uKCk7CiAKLWV4aXQgZXhpdFN0YXR1cyhydW5TYWZhcmkoMSkpOworZXhpdCBleGl0
U3RhdHVzKHJ1blNhZmFyaShcJXJ1blNhZmFyaU9wdGlvbnMpKTsKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvcnVuLXNhZmFyaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1zYWZhcmkJKHJl
dmlzaW9uIDkzODkyKQorKysgVG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxMyArMjksMzkgQEAKICMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIFdlYktp
dCBPcGVuIFNvdXJjZSBQcm9qZWN0LgogCiB1c2Ugc3RyaWN0OwordXNlIEZpbGU6OkJhc2VuYW1l
OwogdXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJvdWdo
KTsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJzOwogCitteSAkc2hvd0hl
bHA7CitteSAkcmVzdG9yZVN0YXRlOworbXkgJW9wdGlvbnMgPSAoCisgICAgJ2h8aGVscCcgPT4g
XCRzaG93SGVscCwKKyAgICAncmVzdG9yZS1zdGF0ZSEnID0+IFwkcmVzdG9yZVN0YXRlLAorKTsK
KworbXkgJHNob3VsZFJlc3RvcmVTdGF0ZSA9ICRyZXN0b3JlU3RhdGUgPyAicmVzdG9yZSIgOiAi
ZG9uJ3QgcmVzdG9yZSI7CitteSAkdXNhZ2UgPSA8PEVPRjsKK1VzYWdlOiBAe1tiYXNlbmFtZSgk
MCldfSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBTYWZhcmldCisgIC0taGVscCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCisgIC0tcmVzdG9y
ZS1zdGF0ZSAgICAgICAgICAgICAgICAgICBFbmFibGUgc3RhdGUgcmVzdG9yYXRpb24gb24gTWFj
IE9TIDEwLjcgKGRlZmF1bHQ6ICRzaG91bGRSZXN0b3JlU3RhdGUpCitFT0YKKworR2V0T3B0aW9u
cyglb3B0aW9ucyk7CisKK2lmICgkc2hvd0hlbHApIHsKKyAgICBwcmludCBTVERFUlIgJHVzYWdl
OworICAgIGV4aXQoMSk7Cit9CisKK215ICVydW5TYWZhcmlPcHRpb25zOworJHJ1blNhZmFyaU9w
dGlvbnN7cmVzdG9yZVN0YXRlfSA9ICRyZXN0b3JlU3RhdGUgaWYgJHJlc3RvcmVTdGF0ZTsKKwog
c2V0Q29uZmlndXJhdGlvbigpOwogCiAjIENoZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3
b3JrcyBhcmUgYnVpbHQuCiBjaGVja0ZyYW1ld29ya3MoKTsKIAotZXhpdCBleGl0U3RhdHVzKHJ1
blNhZmFyaSgpKTsKK2V4aXQgZXhpdFN0YXR1cyhydW5TYWZhcmkoXCVydW5TYWZhcmlPcHRpb25z
KSk7CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiA5Mzg5MikKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTkzMywxMCArMTkzMywxNyBAQCBz
dWIgc2V0UGF0aEZvclJ1bm5pbmdXZWJLaXRBcHAKIAogc3ViIHJ1blNhZmFyaQogewotICAgIG15
ICgkZGVidWdnZXIpID0gQF87CisgICAgbXkgKCRvcHRpb25zKSA9IEBfOwogCiAgICAgaWYgKGlz
QXBwbGVNYWNXZWJLaXQoKSkgewotICAgICAgICByZXR1cm4gc3lzdGVtICIkRmluZEJpbjo6Qmlu
L2dkYi1zYWZhcmkiLCBhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCkgaWYgJGRlYnVnZ2VyOwor
ICAgICAgICBteSBAZXh0cmFBcmdzOworICAgICAgICBpZiAoaXNMaW9uKCkgJiYgISRvcHRpb25z
LT57cmVzdG9yZVN0YXRlfSkgeworICAgICAgICAgICAgIyBEb24ndCByZXN1bWUgdGhlIGxhc3Qg
c2F2ZWQgc3RhdGUgZm9yIFNhZmFyaS4KKyAgICAgICAgICAgIG15ICRhcHBsZVBlcnNpc3RlbmNl
SWdub3JlU3RhdGVLZXkgPSAiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSI7CisgICAgICAg
ICAgICBwdXNoIEBleHRyYUFyZ3MsICgkYXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlS2V5LCAi
WUVTIikgdW5sZXNzIGdyZXAoLyRhcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVLZXkvLCBAQVJH
Vik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN5c3RlbSgiJEZpbmRCaW46OkJpbi9nZGIt
c2FmYXJpIiwgYXJndW1lbnRzRm9yQ29uZmlndXJhdGlvbigpLCBAZXh0cmFBcmdzKSAgaWYgJG9w
dGlvbnMtPntpbkRlYnVnZ2VyfTsKKyAgICAgICAgcHVzaCBAQVJHViwgQGV4dHJhQXJnczsKIAog
ICAgICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKICAgICAgICAgcHJpbnQgIlN0
YXJ0aW5nIFNhZmFyaSB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1
aWx0IFdlYktpdCBpbiAkcHJvZHVjdERpci5cbiI7CkBAIC0xOTUyLDcgKzE5NTksNyBAQCBzdWIg
cnVuU2FmYXJpCiAgICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSkgewogICAgICAgICBteSAkcmVz
dWx0OwogICAgICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAgICAgaWYg
KCRkZWJ1Z2dlcikgeworICAgICAgICBpZiAoJG9wdGlvbnMtPntpbkRlYnVnZ2VyfSkgewogICAg
ICAgICAgICAgc2V0dXBDeWd3aW5FbnYoKTsKICAgICAgICAgICAgIGNob21wKCRFTlZ7V0VCS0lU
TklHSFRMWX0gPSBgY3lncGF0aCAtd2EgIiRwcm9kdWN0RGlyImApOwogICAgICAgICAgICAgbXkg
JHNhZmFyaVBhdGggPSBzYWZhcmlQYXRoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105566</attachid>
            <date>2011-08-29 20:24:29 -0700</date>
            <delta_ts>2011-08-29 20:26:54 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>Bug66902_2.patch</filename>
            <type>text/plain</type>
            <size>12608</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0MDQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMTEtMDgtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgor
CisgICAgICAgIHtkZWJ1ZywgZ2RiLCBydW59LXNhZmFyaSBzaG91bGQgZGlzYWJsZSBhcHBsaWNh
dGlvbiByZXN1bWUgZm9yIFNhZmFyaSBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuZGVyIE1hYyBPUyAxMC43IFNhZmFyaSByZXN1bWVz
IGl0cyBsYXN0IHNhdmVkIHN0YXRlIG9uIGxhdW5jaC4gV2hlbiB1c2luZworICAgICAgICB7ZGVi
dWcsIGdkYiwgcnVufS1zYWZhcmkgaXQgaXMgbW9zdCBsaWtlbHkgdGhlIGNhc2UgdGhhdCBzdWNo
IGEgc2Vjb25kIGluc3RhbmNlIG9mCisgICAgICAgIFNhZmFyaSB3aWxsIGhhdmUgYSBkaWZmZXJl
bnQgd29ya2luZyBzZXQgb2Ygd2ViIHBhZ2VzIChzYXkgdG8gZGVidWcgYW4gaXNzdWUpLgorICAg
ICAgICBIZW5jZSwgYnkgZGVmYXVsdCwgd2Ugc2hvdWxkbid0IGhhdmUge2RlYnVnLCBnZGIsIHJ1
bn0tc2FmYXJpIHJlc3VtZSB0aGUgbGFzdAorICAgICAgICBzYXZlZCBzdGF0ZS4KKworICAgICAg
ICBJbnN0ZWFkLCBpZiB5b3UgZXhwbGljaXRseSB3YW50IFNhZmFyaSB0byByZXN1bWUgd2l0aCB0
aGUgbGFzdCBzYXZlZCBzdGF0ZSB0aGVuCisgICAgICAgIHBhc3MgdGhlIGNvbW1hbmQgbGluZSBh
cmd1bWVudCAtcmVzdG9yZS1zdGF0ZSB0byB7ZGVidWcsIGdkYiwgcnVufS1zYWZhcmkuCisKKyAg
ICAgICAgQXMgYSBzaWRlIGVmZmVjdCwgcnVuLXdlYmtpdC10ZXN0cyB3aWxsIGxhdW5jaCBTYWZh
cmkgd2l0aG91dCBzdGF0ZSByZXN0b3JhdGlvbiB3aGVuCisgICAgICAgIHNob3dpbmcgdGVzdCBy
ZXN1bHRzIHdoaWNoIHNlZW1zIHJlYXNvbmFibGUgYW5kIGNvbnNpc3RlbnQgd2l0aCBpdHMgYmVo
YXZpb3IgYmVmb3JlCisgICAgICAgIE1hYyBPUyAxMC43LgorCisgICAgICAgICogU2NyaXB0cy9k
ZWJ1Zy1zYWZhcmk6IFBhcnNlIC0tcmVzdG9yZS1zdGF0ZSBjb21tYW5kIGxpbmUgb3B0aW9uOyBB
ZGRlZCB1c2FnZSBtZXNzYWdlLgorICAgICAgICAqIFNjcmlwdHMvZ2RiLXNhZmFyaTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy9ydW4tc2FmYXJpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdGRpcnMucG06IEZvcm1hdHRlZCBhbmQgc29ydGVkIEBFWFBPUlQgbGlzdC4KKyAgICAg
ICAgKGNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydElu
dG9BcnJheVJlZik6IEFkZGVkCisgICAgICAgIChydW5TYWZhcmkpOiBNb2RpZmllZCB0byB0YWtl
IGEgaGFzaCByZWZlcmVuY2Ugc28gYXMgdG8gc3VwcG9ydCBib3RoIGVuYWJsZS9kaXNhYmxlIG9m
CisgICAgICAgIGRlYnVnZ2luZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3dlYmtpdGRpcnNfdW5pdHRlc3Q6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC93ZWJraXRkaXJzX3VuaXR0ZXN0L2NoZWNrRm9yQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZi5wbDogQWRkZWQuCisK
IDIwMTEtMDgtMjkgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgogCiAgICAg
ICAgIHNoZXJpZmZib3QgInVzYWdlIiBoZWxwIHN0YXRlbWVudHMgYXJlIHdyb25nCkluZGV4OiBU
b29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rl
YnVnLXNhZmFyaQkocmV2aXNpb24gOTM5MzUpCisrKyBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFy
aQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDM3IEBACiAjIFNjcmlwdCB0byBydW4gU2Fm
YXJpIGluIHRoZSBwbGF0Zm9ybSdzIGRlYnVnZ2VyIGZvciB0aGUgV2ViS2l0IE9wZW4gU291cmNl
IFByb2plY3QuCiAKIHVzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmluZEJp
bjsKK3VzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBwYXNzX3Rocm91Z2gpOwogdXNlIGxpYiAk
RmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7CiAKK215ICRzaG93SGVscDsKK215ICRyZXN0
b3JlU3RhdGU7CitteSAlb3B0aW9ucyA9ICgKKyAgICAnaHxoZWxwJyA9PiBcJHNob3dIZWxwLAor
ICAgICdyZXN0b3JlLXN0YXRlIScgPT4gXCRyZXN0b3JlU3RhdGUsCispOworCitteSAkc2hvdWxk
UmVzdG9yZVN0YXRlID0gJHJlc3RvcmVTdGF0ZSA/ICJyZXN0b3JlIiA6ICJkb24ndCByZXN0b3Jl
IjsKK215ICR1c2FnZSA9IDw8RU9GOworVXNhZ2U6IEB7W2Jhc2VuYW1lKCQwKV19IFtvcHRpb25z
XSBbb3B0aW9ucyB0byBwYXNzIHRvIFNhZmFyaV0KKyAgLS1oZWxwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1yZXN0b3JlLXN0YXRlICAgICAg
ICAgICAgICAgICAgIEVuYWJsZSBzdGF0ZSByZXN0b3JhdGlvbiBvbiBNYWMgT1MgMTAuNyAoZGVm
YXVsdDogJHNob3VsZFJlc3RvcmVTdGF0ZSkKK0VPRgorCitHZXRPcHRpb25zKCVvcHRpb25zKTsK
KworaWYgKCRzaG93SGVscCkgeworICAgIHByaW50IFNUREVSUiAkdXNhZ2U7CisgICAgZXhpdCgx
KTsKK30KKworbXkgJXJ1blNhZmFyaU9wdGlvbnM7CiskcnVuU2FmYXJpT3B0aW9uc3tpbkRlYnVn
Z2VyfSA9IDE7CiskcnVuU2FmYXJpT3B0aW9uc3tyZXN0b3JlU3RhdGV9ID0gJHJlc3RvcmVTdGF0
ZSBpZiAkcmVzdG9yZVN0YXRlOworCiBzZXRDb25maWd1cmF0aW9uKCk7CiAKLWV4aXQgZXhpdFN0
YXR1cyhydW5TYWZhcmkoMSkpOworZXhpdCBleGl0U3RhdHVzKHJ1blNhZmFyaShcJXJ1blNhZmFy
aU9wdGlvbnMpKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZ2RiLXNhZmFyaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2dkYi1zYWZhcmkJKHJldmlzaW9uIDkzOTM1KQorKysgVG9vbHMvU2Ny
aXB0cy9nZGItc2FmYXJpCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMzUgQEAKICMgU2lt
cGxpZmllZCAicnVuIHVuZGVyIGdkYiIgc2NyaXB0IGZvciBXZWJLaXQgT3BlbiBTb3VyY2UgUHJv
amVjdC4KIAogdXNlIHN0cmljdDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpUZW1w
IHF3Lzpta3RlbXAvOwogdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2Ug
R2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJvdWdoKTsKIHVzZSB3ZWJraXRkaXJzOwog
CisKK215ICRzaG93SGVscDsKK215ICRyZXN0b3JlU3RhdGU7CitteSAlb3B0aW9ucyA9ICgKKyAg
ICAnaHxoZWxwJyA9PiBcJHNob3dIZWxwLAorICAgICdyZXN0b3JlLXN0YXRlIScgPT4gXCRyZXN0
b3JlU3RhdGUsCispOworCitteSAkc2hvdWxkUmVzdG9yZVN0YXRlID0gJHJlc3RvcmVTdGF0ZSA/
ICJyZXN0b3JlIiA6ICJkb24ndCByZXN0b3JlIjsKK215ICR1c2FnZSA9IDw8RU9GOworVXNhZ2U6
IEB7W2Jhc2VuYW1lKCQwKV19IFtvcHRpb25zXSBbb3B0aW9ucyB0byBwYXNzIHRvIFNhZmFyaV0K
KyAgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3Nh
Z2UKKyAgLS1yZXN0b3JlLXN0YXRlICAgICAgICAgICAgICAgICAgIEVuYWJsZSBzdGF0ZSByZXN0
b3JhdGlvbiBvbiBNYWMgT1MgMTAuNyAoZGVmYXVsdDogJHNob3VsZFJlc3RvcmVTdGF0ZSkKK0VP
RgorCitHZXRPcHRpb25zKCVvcHRpb25zKTsKKworaWYgKCRzaG93SGVscCkgeworICAgIHByaW50
IFNUREVSUiAkdXNhZ2U7CisgICAgZXhpdCgxKTsKK30KKwogc2V0Q29uZmlndXJhdGlvbigpOwog
bXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7CiBteSAkc2FmYXJpUGF0aCA9IHNhZmFyaVBh
dGgoKTsKQEAgLTUwLDQgKzc0LDUgQEAgJEVOVntXRUJLSVRfVU5TRVRfRFlMRF9GUkFNRVdPUktf
UEFUSH0gPQogCiBwcmludCAiU3RhcnRpbmcgU2FmYXJpIHVuZGVyIGdkYiB3aXRoIERZTERfRlJB
TUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktpdCBpbiAkcHJvZHVjdERpci5c
biI7CiBteSBAYXJjaGl0ZWN0dXJlRmxhZ3MgPSAoIi1hcmNoIiwgYXJjaGl0ZWN0dXJlKCkpOwor
Y2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0Fy
cmF5UmVmKFxAQVJHVikgaWYgaXNMaW9uKCkgJiYgJHJlc3RvcmVTdGF0ZTsKIGV4ZWMgJGdkYlBh
dGgsIEBhcmNoaXRlY3R1cmVGbGFncywgIi0tYXJnIiwgJHNhZmFyaVBhdGgsIEBBUkdWIG9yIGRp
ZTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLXNhZmFyaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3J1bi1zYWZhcmkJKHJldmlzaW9uIDkzOTM1KQorKysgVG9vbHMvU2NyaXB0cy9ydW4t
c2FmYXJpCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMzkgQEAKICMgU2ltcGxpZmllZCAi
cnVuIiBzY3JpcHQgZm9yIFdlYktpdCBPcGVuIFNvdXJjZSBQcm9qZWN0LgogCiB1c2Ugc3RyaWN0
OwordXNlIEZpbGU6OkJhc2VuYW1lOwogdXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3
KDpjb25maWcgcGFzc190aHJvdWdoKTsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJr
aXRkaXJzOwogCitteSAkc2hvd0hlbHA7CitteSAkcmVzdG9yZVN0YXRlOworbXkgJW9wdGlvbnMg
PSAoCisgICAgJ2h8aGVscCcgPT4gXCRzaG93SGVscCwKKyAgICAncmVzdG9yZS1zdGF0ZSEnID0+
IFwkcmVzdG9yZVN0YXRlLAorKTsKKworbXkgJHNob3VsZFJlc3RvcmVTdGF0ZSA9ICRyZXN0b3Jl
U3RhdGUgPyAicmVzdG9yZSIgOiAiZG9uJ3QgcmVzdG9yZSI7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiBAe1tiYXNlbmFtZSgkMCldfSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBT
YWZhcmldCisgIC0taGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVs
cCBtZXNzYWdlCisgIC0tcmVzdG9yZS1zdGF0ZSAgICAgICAgICAgICAgICAgICBFbmFibGUgc3Rh
dGUgcmVzdG9yYXRpb24gb24gTWFjIE9TIDEwLjcgKGRlZmF1bHQ6ICRzaG91bGRSZXN0b3JlU3Rh
dGUpCitFT0YKKworR2V0T3B0aW9ucyglb3B0aW9ucyk7CisKK2lmICgkc2hvd0hlbHApIHsKKyAg
ICBwcmludCBTVERFUlIgJHVzYWdlOworICAgIGV4aXQoMSk7Cit9CisKK215ICVydW5TYWZhcmlP
cHRpb25zOworJHJ1blNhZmFyaU9wdGlvbnN7cmVzdG9yZVN0YXRlfSA9ICRyZXN0b3JlU3RhdGUg
aWYgJHJlc3RvcmVTdGF0ZTsKKwogc2V0Q29uZmlndXJhdGlvbigpOwogCiAjIENoZWNrIHRvIHNl
ZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUgYnVpbHQuCiBjaGVja0ZyYW1ld29ya3MoKTsK
IAotZXhpdCBleGl0U3RhdHVzKHJ1blNhZmFyaSgpKTsKK2V4aXQgZXhpdFN0YXR1cyhydW5TYWZh
cmkoXCVydW5TYWZhcmlPcHRpb25zKSk7CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiA5
MzkzNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBjb3B5KQpAQCAt
NDMsNyArNDMsMjAgQEAgQkVHSU4gewogICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwg
QEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKICAgICRWRVJTSU9OICAgICA9IDEuMDA7CiAgICBA
SVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7Ci0gICBARVhQT1JUICAgICAgPSBxdygmY2hkaXJX
ZWJLaXQgJmJhc2VQcm9kdWN0RGlyICZwcm9kdWN0RGlyICZYY29kZU9wdGlvbnMgJlhjb2RlT3B0
aW9uU3RyaW5nICZYY29kZU9wdGlvblN0cmluZ05vQ29uZmlnICZwYXNzZWRDb25maWd1cmF0aW9u
ICZzZXRDb25maWd1cmF0aW9uICZzYWZhcmlQYXRoICZjaGVja0ZyYW1ld29ya3MgJmN1cnJlbnRT
Vk5SZXZpc2lvbik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAgICAmWGNvZGVPcHRpb25T
dHJpbmcKKyAgICAgICAmWGNvZGVPcHRpb25TdHJpbmdOb0NvbmZpZworICAgICAgICZYY29kZU9w
dGlvbnMKKyAgICAgICAmYmFzZVByb2R1Y3REaXIKKyAgICAgICAmY2hkaXJXZWJLaXQKKyAgICAg
ICAmY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50
b0FycmF5UmVmCisgICAgICAgJmNoZWNrRnJhbWV3b3JrcworICAgICAgICZjdXJyZW50U1ZOUmV2
aXNpb24KKyAgICAgICAmcGFzc2VkQ29uZmlndXJhdGlvbgorICAgICAgICZwcm9kdWN0RGlyCisg
ICAgICAgJnNhZmFyaVBhdGgKKyAgICAgICAmc2V0Q29uZmlndXJhdGlvbgorICAgKTsKICAgICVF
WFBPUlRfVEFHUyA9ICggKTsKICAgIEBFWFBPUlRfT0sgICA9ICgpOwogfQpAQCAtMTkzMSwxNyAr
MTk0NCwzMCBAQCBzdWIgc2V0UGF0aEZvclJ1bm5pbmdXZWJLaXRBcHAKICAgICB9CiB9CiAKK3N1
YiBjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRv
QXJyYXlSZWYoJCkKK3sKKyAgICBteSAoJGFycmF5UmVmKSA9IEBfOworICAgICMgRG9uJ3QgcmVz
dW1lIHRoZSBsYXN0IHNhdmVkIHN0YXRlIGZvciBTYWZhcmkuCisgICAgbXkgJGFwcGxlUGVyc2lz
dGVuY2VJZ25vcmVTdGF0ZUtleSA9ICItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIjsKKyAg
ICBwdXNoIEAkYXJyYXlSZWYsICgkYXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlS2V5LCAiWUVT
IikgdW5sZXNzIGdyZXAoL14kYXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlS2V5JC8sIEAkYXJy
YXlSZWYpOworfQorCiBzdWIgcnVuU2FmYXJpCiB7Ci0gICAgbXkgKCRkZWJ1Z2dlcikgPSBAXzsK
KyAgICBteSAoJG9wdGlvbnMpID0gQF87CiAKICAgICBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7
Ci0gICAgICAgIHJldHVybiBzeXN0ZW0gIiRGaW5kQmluOjpCaW4vZ2RiLXNhZmFyaSIsIGFyZ3Vt
ZW50c0ZvckNvbmZpZ3VyYXRpb24oKSBpZiAkZGVidWdnZXI7CisgICAgICAgIGlmICgkb3B0aW9u
cy0+e2luRGVidWdnZXJ9KSB7CisgICAgICAgICAgICBteSBAYXJncyA9IGFyZ3VtZW50c0ZvckNv
bmZpZ3VyYXRpb24oKTsKKyAgICAgICAgICAgIHB1c2ggQGFyZ3MsICItLXJlc3RvcmUtc3RhdGUi
IGlmICRvcHRpb25zLT57cmVzdG9yZVN0YXRlfTsKKyAgICAgICAgICAgIHJldHVybiBzeXN0ZW0o
IiRGaW5kQmluOjpCaW4vZ2RiLXNhZmFyaSIsIEBhcmdzKTsKKyAgICAgICAgfQogCiAgICAgICAg
IG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogICAgICAgICBwcmludCAiU3RhcnRpbmcg
U2FmYXJpIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2Vi
S2l0IGluICRwcm9kdWN0RGlyLlxuIjsKICAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRI
fSA9ICRwcm9kdWN0RGlyOwogICAgICAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09S
S19QQVRIfSA9ICJZRVMiOworICAgICAgICBjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVT
dGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoXEBBUkdWKSBpZiBpc0xpb24oKSAmJiAh
JG9wdGlvbnMtPntyZXN0b3JlU3RhdGV9OwogICAgICAgICBpZiAoYXJjaGl0ZWN0dXJlKCkpIHsK
ICAgICAgICAgICAgIHJldHVybiBzeXN0ZW0gImFyY2giLCAiLSIgLiBhcmNoaXRlY3R1cmUoKSwg
c2FmYXJpUGF0aCgpLCBAQVJHVjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE5NTIsNyArMTk3OCw3
IEBAIHN1YiBydW5TYWZhcmkKICAgICBpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgICAg
IG15ICRyZXN1bHQ7CiAgICAgICAgIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwotICAg
ICAgICBpZiAoJGRlYnVnZ2VyKSB7CisgICAgICAgIGlmICgkb3B0aW9ucy0+e2luRGVidWdnZXJ9
KSB7CiAgICAgICAgICAgICBzZXR1cEN5Z3dpbkVudigpOwogICAgICAgICAgICAgY2hvbXAoJEVO
VntXRUJLSVROSUdIVExZfSA9IGBjeWdwYXRoIC13YSAiJHByb2R1Y3REaXIiYCk7CiAgICAgICAg
ICAgICBteSAkc2FmYXJpUGF0aCA9IHNhZmFyaVBhdGgoKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC93ZWJraXRkaXJzX3VuaXR0ZXN0L2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUln
bm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZi5wbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvd2Via2l0ZGlyc191bml0dGVzdC9jaGVja0ZvckFwcGxl
UGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYucGwJKHJl
dmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHBlcmwvd2Via2l0ZGlyc191bml0dGVz
dC9jaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRv
QXJyYXlSZWYucGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKyMhL3Vzci9iaW4vcGVy
bAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTEgRGFuaWVsIEJhdGVzIChkYmF0ZXNAaW50dWRhdGEu
Y29tKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgVW5pdCB0ZXN0cyBvZiB3ZWJraXRkaXJzOjpjaGVja0ZvckFwcGxl
UGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoKS4KKwor
dXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNjsKK3VzZSB3ZWJraXRkaXJzOworCitteSAkdGl0bGU7
CitteSBAYXJnczsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImNoZWNrRm9yQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZjogRXhpc3RpbmcgLUFw
cGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSBZRVMiOyAjIE5vIGNoYW5nZQorQGFyZ3MgPSAoIi1B
cHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiWUVTIik7CitjaGVja0ZvckFwcGxlUGVyc2lz
dGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoXEBhcmdzKTsKK2lz
X2RlZXBseShcQGFyZ3MsIFsiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJZRVMiXSwg
JHRpdGxlKTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5j
ZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZjogRXhpc3RpbmcgLUFwcGxl
UGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSBOTyI7ICMgTm8gY2hhbmdlCitAYXJncyA9ICgiLUFwcGxl
UGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJOTyIpOworY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNl
SWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKFxAYXJncyk7Citpc19kZWVw
bHkoXEBhcmdzLCBbIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiTk8iXSwgJHRpdGxl
KTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9y
ZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZjogRXhpc3RpbmcgLUFwcGxlUGVyc2lz
dGVuY2VJZ25vcmVTdGF0ZSBibGFoIjsgIyBObyBjaGFuZ2UKK0BhcmdzID0gKCItQXBwbGVQZXJz
aXN0ZW5jZUlnbm9yZVN0YXRlIiwgImJsYWgiKTsKK2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUln
bm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZihcQGFyZ3MpOworaXNfZGVlcGx5
KFxAYXJncywgWyItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgImJsYWgiXSwgJHRpdGxl
KTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9y
ZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZjogRXhpc3RpbmcgLUFwcGxlUGVyc2lz
dGVuY2VJZ25vcmVTdGF0ZSBZRVMgYW5kIG90aGVyIGFyZ3VtZW50cyI7ICMgTm8gY2hhbmdlCitA
YXJncyA9ICgiLWZvbyIsICItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIllFUyIsICIt
YmFyIik7CitjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNl
cnRJbnRvQXJyYXlSZWYoXEBhcmdzKTsKK2lzX2RlZXBseShcQGFyZ3MsIFsiLWZvbyIsICItQXBw
bGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIllFUyIsICItYmFyIl0sICR0aXRsZSk7CisKKyMg
TmV3IHRlc3QKKyR0aXRsZSA9ICJjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFy
Z3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWY6IEFkZCBhcmd1bWVudCAtQXBwbGVQZXJzaXN0ZW5j
ZUlnbm9yZVN0YXRlIFlFUyI7CitAYXJncyA9ICgpOworY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNl
SWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKFxAYXJncyk7Citpc19kZWVw
bHkoXEBhcmdzLCBbIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiWUVTIl0sICR0aXRs
ZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25v
cmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWY6IEFkZCBhcmd1bWVudCAtQXBwbGVQ
ZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIFlFUyBhbmQga2VlcCBvdGhlciBhcmd1bWVudHMiOworQGFy
Z3MgPSAoIi1mb28iLCAiLWJhciIpOworY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3Rh
dGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKFxAYXJncyk7Citpc19kZWVwbHkoXEBhcmdz
LCBbIi1mb28iLCAiLWJhciIsICItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIllFUyJd
LCAkdGl0bGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105567</attachid>
            <date>2011-08-29 20:26:54 -0700</date>
            <delta_ts>2011-08-29 20:33:02 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>Bug66902_2.patch</filename>
            <type>text/plain</type>
            <size>12606</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0MDQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMTEtMDgtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgor
CisgICAgICAgIHtkZWJ1ZywgZ2RiLCBydW59LXNhZmFyaSBzaG91bGQgZGlzYWJsZSBhcHBsaWNh
dGlvbiByZXN1bWUgZm9yIFNhZmFyaSBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuZGVyIE1hYyBPUyAxMC43IFNhZmFyaSByZXN1bWVz
IGl0cyBsYXN0IHNhdmVkIHN0YXRlIG9uIGxhdW5jaC4gV2hlbiB1c2luZworICAgICAgICB7ZGVi
dWcsIGdkYiwgcnVufS1zYWZhcmkgaXQgaXMgbW9zdCBsaWtlbHkgdGhlIGNhc2UgdGhhdCBzdWNo
IGEgc2Vjb25kIGluc3RhbmNlIG9mCisgICAgICAgIFNhZmFyaSB3aWxsIGhhdmUgYSBkaWZmZXJl
bnQgd29ya2luZyBzZXQgb2Ygd2ViIHBhZ2VzIChzYXkgdG8gZGVidWcgYW4gaXNzdWUpLgorICAg
ICAgICBIZW5jZSwgYnkgZGVmYXVsdCwgd2Ugc2hvdWxkbid0IGhhdmUge2RlYnVnLCBnZGIsIHJ1
bn0tc2FmYXJpIHJlc3VtZSB0aGUgbGFzdAorICAgICAgICBzYXZlZCBzdGF0ZS4KKworICAgICAg
ICBJbnN0ZWFkLCBpZiB5b3UgZXhwbGljaXRseSB3YW50IFNhZmFyaSB0byByZXN1bWUgd2l0aCB0
aGUgbGFzdCBzYXZlZCBzdGF0ZSB0aGVuCisgICAgICAgIHBhc3MgdGhlIGNvbW1hbmQgbGluZSBh
cmd1bWVudCAtcmVzdG9yZS1zdGF0ZSB0byB7ZGVidWcsIGdkYiwgcnVufS1zYWZhcmkuCisKKyAg
ICAgICAgQXMgYSBzaWRlIGVmZmVjdCwgcnVuLXdlYmtpdC10ZXN0cyB3aWxsIGxhdW5jaCBTYWZh
cmkgd2l0aG91dCBzdGF0ZSByZXN0b3JhdGlvbiB3aGVuCisgICAgICAgIHNob3dpbmcgdGVzdCBy
ZXN1bHRzIHdoaWNoIHNlZW1zIHJlYXNvbmFibGUgYW5kIGNvbnNpc3RlbnQgd2l0aCBpdHMgYmVo
YXZpb3IgYmVmb3JlCisgICAgICAgIE1hYyBPUyAxMC43LgorCisgICAgICAgICogU2NyaXB0cy9k
ZWJ1Zy1zYWZhcmk6IFBhcnNlIC0tcmVzdG9yZS1zdGF0ZSBjb21tYW5kIGxpbmUgb3B0aW9uOyBB
ZGRlZCB1c2FnZSBtZXNzYWdlLgorICAgICAgICAqIFNjcmlwdHMvZ2RiLXNhZmFyaTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy9ydW4tc2FmYXJpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdGRpcnMucG06IEZvcm1hdHRlZCBhbmQgc29ydGVkIEBFWFBPUlQgbGlzdC4KKyAgICAg
ICAgKGNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydElu
dG9BcnJheVJlZik6IEFkZGVkCisgICAgICAgIChydW5TYWZhcmkpOiBNb2RpZmllZCB0byB0YWtl
IGEgaGFzaCByZWZlcmVuY2Ugc28gYXMgdG8gc3VwcG9ydCBib3RoIGVuYWJsZS9kaXNhYmxlIG9m
CisgICAgICAgIGRlYnVnZ2luZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3dlYmtpdGRpcnNfdW5pdHRlc3Q6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC93ZWJraXRkaXJzX3VuaXR0ZXN0L2NoZWNrRm9yQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZi5wbDogQWRkZWQuCisK
IDIwMTEtMDgtMjkgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgogCiAgICAg
ICAgIHNoZXJpZmZib3QgInVzYWdlIiBoZWxwIHN0YXRlbWVudHMgYXJlIHdyb25nCkluZGV4OiBU
b29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rl
YnVnLXNhZmFyaQkocmV2aXNpb24gOTM5MzUpCisrKyBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFy
aQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDM3IEBACiAjIFNjcmlwdCB0byBydW4gU2Fm
YXJpIGluIHRoZSBwbGF0Zm9ybSdzIGRlYnVnZ2VyIGZvciB0aGUgV2ViS2l0IE9wZW4gU291cmNl
IFByb2plY3QuCiAKIHVzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmluZEJp
bjsKK3VzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBwYXNzX3Rocm91Z2gpOwogdXNlIGxpYiAk
RmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7CiAKK215ICRzaG93SGVscDsKK215ICRyZXN0
b3JlU3RhdGU7CitteSAlb3B0aW9ucyA9ICgKKyAgICAnaHxoZWxwJyA9PiBcJHNob3dIZWxwLAor
ICAgICdyZXN0b3JlLXN0YXRlIScgPT4gXCRyZXN0b3JlU3RhdGUsCispOworCitteSAkc2hvdWxk
UmVzdG9yZVN0YXRlID0gJHJlc3RvcmVTdGF0ZSA/ICJyZXN0b3JlIiA6ICJkb24ndCByZXN0b3Jl
IjsKK215ICR1c2FnZSA9IDw8RU9GOworVXNhZ2U6IEB7W2Jhc2VuYW1lKCQwKV19IFtvcHRpb25z
XSBbb3B0aW9ucyB0byBwYXNzIHRvIFNhZmFyaV0KKyAgLS1oZWxwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1yZXN0b3JlLXN0YXRlICAgICAg
ICAgICAgICAgICAgIEVuYWJsZSBzdGF0ZSByZXN0b3JhdGlvbiBvbiBNYWMgT1MgMTAuNyAoZGVm
YXVsdDogJHNob3VsZFJlc3RvcmVTdGF0ZSkKK0VPRgorCitHZXRPcHRpb25zKCVvcHRpb25zKTsK
KworaWYgKCRzaG93SGVscCkgeworICAgIHByaW50IFNUREVSUiAkdXNhZ2U7CisgICAgZXhpdCgx
KTsKK30KKworbXkgJXJ1blNhZmFyaU9wdGlvbnM7CiskcnVuU2FmYXJpT3B0aW9uc3tpbkRlYnVn
Z2VyfSA9IDE7CiskcnVuU2FmYXJpT3B0aW9uc3tyZXN0b3JlU3RhdGV9ID0gJHJlc3RvcmVTdGF0
ZSBpZiAkcmVzdG9yZVN0YXRlOworCiBzZXRDb25maWd1cmF0aW9uKCk7CiAKLWV4aXQgZXhpdFN0
YXR1cyhydW5TYWZhcmkoMSkpOworZXhpdCBleGl0U3RhdHVzKHJ1blNhZmFyaShcJXJ1blNhZmFy
aU9wdGlvbnMpKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZ2RiLXNhZmFyaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2dkYi1zYWZhcmkJKHJldmlzaW9uIDkzOTM1KQorKysgVG9vbHMvU2Ny
aXB0cy9nZGItc2FmYXJpCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMzQgQEAKICMgU2lt
cGxpZmllZCAicnVuIHVuZGVyIGdkYiIgc2NyaXB0IGZvciBXZWJLaXQgT3BlbiBTb3VyY2UgUHJv
amVjdC4KIAogdXNlIHN0cmljdDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpUZW1w
IHF3Lzpta3RlbXAvOwogdXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcg
cGFzc190aHJvdWdoKTsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJzOwog
CitteSAkc2hvd0hlbHA7CitteSAkcmVzdG9yZVN0YXRlOworbXkgJW9wdGlvbnMgPSAoCisgICAg
J2h8aGVscCcgPT4gXCRzaG93SGVscCwKKyAgICAncmVzdG9yZS1zdGF0ZSEnID0+IFwkcmVzdG9y
ZVN0YXRlLAorKTsKKworbXkgJHNob3VsZFJlc3RvcmVTdGF0ZSA9ICRyZXN0b3JlU3RhdGUgPyAi
cmVzdG9yZSIgOiAiZG9uJ3QgcmVzdG9yZSI7CitteSAkdXNhZ2UgPSA8PEVPRjsKK1VzYWdlOiBA
e1tiYXNlbmFtZSgkMCldfSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBTYWZhcmldCisg
IC0taGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdl
CisgIC0tcmVzdG9yZS1zdGF0ZSAgICAgICAgICAgICAgICAgICBFbmFibGUgc3RhdGUgcmVzdG9y
YXRpb24gb24gTWFjIE9TIDEwLjcgKGRlZmF1bHQ6ICRzaG91bGRSZXN0b3JlU3RhdGUpCitFT0YK
KworR2V0T3B0aW9ucyglb3B0aW9ucyk7CisKK2lmICgkc2hvd0hlbHApIHsKKyAgICBwcmludCBT
VERFUlIgJHVzYWdlOworICAgIGV4aXQoMSk7Cit9CisKIHNldENvbmZpZ3VyYXRpb24oKTsKIG15
ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogbXkgJHNhZmFyaVBhdGggPSBzYWZhcmlQYXRo
KCk7CkBAIC01MCw0ICs3Myw1IEBAICRFTlZ7V0VCS0lUX1VOU0VUX0RZTERfRlJBTUVXT1JLX1BB
VEh9ID0KIAogcHJpbnQgIlN0YXJ0aW5nIFNhZmFyaSB1bmRlciBnZGIgd2l0aCBEWUxEX0ZSQU1F
V09SS19QQVRIIHNldCB0byBwb2ludCB0byBidWlsdCBXZWJLaXQgaW4gJHByb2R1Y3REaXIuXG4i
OwogbXkgQGFyY2hpdGVjdHVyZUZsYWdzID0gKCItYXJjaCIsIGFyY2hpdGVjdHVyZSgpKTsKK2No
ZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJh
eVJlZihcQEFSR1YpIGlmIGlzTGlvbigpICYmICRyZXN0b3JlU3RhdGU7CiBleGVjICRnZGJQYXRo
LCBAYXJjaGl0ZWN0dXJlRmxhZ3MsICItLWFyZyIsICRzYWZhcmlQYXRoLCBAQVJHViBvciBkaWU7
CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1zYWZhcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy9ydW4tc2FmYXJpCShyZXZpc2lvbiA5MzkzNSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXNh
ZmFyaQkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDM5IEBACiAjIFNpbXBsaWZpZWQgInJ1
biIgc2NyaXB0IGZvciBXZWJLaXQgT3BlbiBTb3VyY2UgUHJvamVjdC4KIAogdXNlIHN0cmljdDsK
K3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaW5kQmluOwordXNlIEdldG9wdDo6TG9uZyBxdyg6
Y29uZmlnIHBhc3NfdGhyb3VnaCk7CiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2Ugd2Via2l0
ZGlyczsKIAorbXkgJHNob3dIZWxwOworbXkgJHJlc3RvcmVTdGF0ZTsKK215ICVvcHRpb25zID0g
KAorICAgICdofGhlbHAnID0+IFwkc2hvd0hlbHAsCisgICAgJ3Jlc3RvcmUtc3RhdGUhJyA9PiBc
JHJlc3RvcmVTdGF0ZSwKKyk7CisKK215ICRzaG91bGRSZXN0b3JlU3RhdGUgPSAkcmVzdG9yZVN0
YXRlID8gInJlc3RvcmUiIDogImRvbid0IHJlc3RvcmUiOworbXkgJHVzYWdlID0gPDxFT0Y7CitV
c2FnZTogQHtbYmFzZW5hbWUoJDApXX0gW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gU2Fm
YXJpXQorICAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyB0aGlzIGhlbHAg
bWVzc2FnZQorICAtLXJlc3RvcmUtc3RhdGUgICAgICAgICAgICAgICAgICAgRW5hYmxlIHN0YXRl
IHJlc3RvcmF0aW9uIG9uIE1hYyBPUyAxMC43IChkZWZhdWx0OiAkc2hvdWxkUmVzdG9yZVN0YXRl
KQorRU9GCisKK0dldE9wdGlvbnMoJW9wdGlvbnMpOworCitpZiAoJHNob3dIZWxwKSB7CisgICAg
cHJpbnQgU1RERVJSICR1c2FnZTsKKyAgICBleGl0KDEpOworfQorCitteSAlcnVuU2FmYXJpT3B0
aW9uczsKKyRydW5TYWZhcmlPcHRpb25ze3Jlc3RvcmVTdGF0ZX0gPSAkcmVzdG9yZVN0YXRlIGlm
ICRyZXN0b3JlU3RhdGU7CisKIHNldENvbmZpZ3VyYXRpb24oKTsKIAogIyBDaGVjayB0byBzZWUg
dGhhdCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0LgogY2hlY2tGcmFtZXdvcmtzKCk7CiAK
LWV4aXQgZXhpdFN0YXR1cyhydW5TYWZhcmkoKSk7CitleGl0IGV4aXRTdGF0dXMocnVuU2FmYXJp
KFwlcnVuU2FmYXJpT3B0aW9ucykpOwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkocmV2aXNpb24gOTM5
MzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQz
LDcgKzQzLDIwIEBAIEJFR0lOIHsKICAgIG91ciAoJFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBF
WFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CiAgICAkVkVSU0lPTiAgICAgPSAxLjAwOwogICAgQElT
QSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOwotICAgQEVYUE9SVCAgICAgID0gcXcoJmNoZGlyV2Vi
S2l0ICZiYXNlUHJvZHVjdERpciAmcHJvZHVjdERpciAmWGNvZGVPcHRpb25zICZYY29kZU9wdGlv
blN0cmluZyAmWGNvZGVPcHRpb25TdHJpbmdOb0NvbmZpZyAmcGFzc2VkQ29uZmlndXJhdGlvbiAm
c2V0Q29uZmlndXJhdGlvbiAmc2FmYXJpUGF0aCAmY2hlY2tGcmFtZXdvcmtzICZjdXJyZW50U1ZO
UmV2aXNpb24pOworICAgQEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgJlhjb2RlT3B0aW9uU3Ry
aW5nCisgICAgICAgJlhjb2RlT3B0aW9uU3RyaW5nTm9Db25maWcKKyAgICAgICAmWGNvZGVPcHRp
b25zCisgICAgICAgJmJhc2VQcm9kdWN0RGlyCisgICAgICAgJmNoZGlyV2ViS2l0CisgICAgICAg
JmNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9B
cnJheVJlZgorICAgICAgICZjaGVja0ZyYW1ld29ya3MKKyAgICAgICAmY3VycmVudFNWTlJldmlz
aW9uCisgICAgICAgJnBhc3NlZENvbmZpZ3VyYXRpb24KKyAgICAgICAmcHJvZHVjdERpcgorICAg
ICAgICZzYWZhcmlQYXRoCisgICAgICAgJnNldENvbmZpZ3VyYXRpb24KKyAgICk7CiAgICAlRVhQ
T1JUX1RBR1MgPSAoICk7CiAgICBARVhQT1JUX09LICAgPSAoKTsKIH0KQEAgLTE5MzEsMTcgKzE5
NDQsMzAgQEAgc3ViIHNldFBhdGhGb3JSdW5uaW5nV2ViS2l0QXBwCiAgICAgfQogfQogCitzdWIg
Y2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0Fy
cmF5UmVmKCQpCit7CisgICAgbXkgKCRhcnJheVJlZikgPSBAXzsKKyAgICAjIERvbid0IHJlc3Vt
ZSB0aGUgbGFzdCBzYXZlZCBzdGF0ZSBmb3IgU2FmYXJpLgorICAgIG15ICRhcHBsZVBlcnNpc3Rl
bmNlSWdub3JlU3RhdGVLZXkgPSAiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSI7CisgICAg
cHVzaCBAJGFycmF5UmVmLCAoJGFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUtleSwgIllFUyIp
IHVubGVzcyBncmVwKC9eJGFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUtleSQvLCBAJGFycmF5
UmVmKTsKK30KKwogc3ViIHJ1blNhZmFyaQogewotICAgIG15ICgkZGVidWdnZXIpID0gQF87Cisg
ICAgbXkgKCRvcHRpb25zKSA9IEBfOwogCiAgICAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewot
ICAgICAgICByZXR1cm4gc3lzdGVtICIkRmluZEJpbjo6QmluL2dkYi1zYWZhcmkiLCBhcmd1bWVu
dHNGb3JDb25maWd1cmF0aW9uKCkgaWYgJGRlYnVnZ2VyOworICAgICAgICBpZiAoJG9wdGlvbnMt
PntpbkRlYnVnZ2VyfSkgeworICAgICAgICAgICAgbXkgQGFyZ3MgPSBhcmd1bWVudHNGb3JDb25m
aWd1cmF0aW9uKCk7CisgICAgICAgICAgICBwdXNoIEBhcmdzLCAiLS1yZXN0b3JlLXN0YXRlIiBp
ZiAkb3B0aW9ucy0+e3Jlc3RvcmVTdGF0ZX07CisgICAgICAgICAgICByZXR1cm4gc3lzdGVtKCIk
RmluZEJpbjo6QmluL2dkYi1zYWZhcmkiLCBAYXJncyk7CisgICAgICAgIH0KIAogICAgICAgICBt
eSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKICAgICAgICAgcHJpbnQgIlN0YXJ0aW5nIFNh
ZmFyaSB3aXRoIERZTERfRlJBTUVXT1JLX1BBVEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IFdlYktp
dCBpbiAkcHJvZHVjdERpci5cbiI7CiAgICAgICAgICRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0g
PSAkcHJvZHVjdERpcjsKICAgICAgICAgJEVOVntXRUJLSVRfVU5TRVRfRFlMRF9GUkFNRVdPUktf
UEFUSH0gPSAiWUVTIjsKKyAgICAgICAgY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3Rh
dGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKFxAQVJHVikgaWYgaXNMaW9uKCkgJiYgISRv
cHRpb25zLT57cmVzdG9yZVN0YXRlfTsKICAgICAgICAgaWYgKGFyY2hpdGVjdHVyZSgpKSB7CiAg
ICAgICAgICAgICByZXR1cm4gc3lzdGVtICJhcmNoIiwgIi0iIC4gYXJjaGl0ZWN0dXJlKCksIHNh
ZmFyaVBhdGgoKSwgQEFSR1Y7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xOTUyLDcgKzE5NzgsNyBA
QCBzdWIgcnVuU2FmYXJpCiAgICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSkgewogICAgICAgICBt
eSAkcmVzdWx0OwogICAgICAgICBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAg
ICAgaWYgKCRkZWJ1Z2dlcikgeworICAgICAgICBpZiAoJG9wdGlvbnMtPntpbkRlYnVnZ2VyfSkg
ewogICAgICAgICAgICAgc2V0dXBDeWd3aW5FbnYoKTsKICAgICAgICAgICAgIGNob21wKCRFTlZ7
V0VCS0lUTklHSFRMWX0gPSBgY3lncGF0aCAtd2EgIiRwcm9kdWN0RGlyImApOwogICAgICAgICAg
ICAgbXkgJHNhZmFyaVBhdGggPSBzYWZhcmlQYXRoKCk7CkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvd2Via2l0ZGlyc191bml0dGVzdC9jaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25v
cmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYucGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL3dlYmtpdGRpcnNfdW5pdHRlc3QvY2hlY2tGb3JBcHBsZVBl
cnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmLnBsCShyZXZp
c2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3dlYmtpdGRpcnNfdW5pdHRlc3Qv
Y2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0Fy
cmF5UmVmLnBsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisjIS91c3IvYmluL3BlcmwK
KyMKKyMgQ29weXJpZ2h0IChDKSAyMDExIERhbmllbCBCYXRlcyAoZGJhdGVzQGludHVkYXRhLmNv
bSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIFVuaXQgdGVzdHMgb2Ygd2Via2l0ZGlyczo6Y2hlY2tGb3JBcHBsZVBl
cnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKCkuCisKK3Vz
ZSBUZXN0OjpNb3JlIHRlc3RzID0+IDY7Cit1c2Ugd2Via2l0ZGlyczsKKworbXkgJHRpdGxlOwor
bXkgQGFyZ3M7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJjaGVja0ZvckFwcGxlUGVyc2lzdGVu
Y2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWY6IEV4aXN0aW5nIC1BcHBs
ZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUgWUVTIjsgIyBObyBjaGFuZ2UKK0BhcmdzID0gKCItQXBw
bGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIllFUyIpOworY2hlY2tGb3JBcHBsZVBlcnNpc3Rl
bmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKFxAYXJncyk7Citpc19k
ZWVwbHkoXEBhcmdzLCBbIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiWUVTIl0sICR0
aXRsZSk7CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJ
Z25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWY6IEV4aXN0aW5nIC1BcHBsZVBl
cnNpc3RlbmNlSWdub3JlU3RhdGUgTk8iOyAjIE5vIGNoYW5nZQorQGFyZ3MgPSAoIi1BcHBsZVBl
cnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiTk8iKTsKK2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUln
bm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZihcQGFyZ3MpOworaXNfZGVlcGx5
KFxAYXJncywgWyItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIk5PIl0sICR0aXRsZSk7
CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVT
dGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWY6IEV4aXN0aW5nIC1BcHBsZVBlcnNpc3Rl
bmNlSWdub3JlU3RhdGUgYmxhaCI7ICMgTm8gY2hhbmdlCitAYXJncyA9ICgiLUFwcGxlUGVyc2lz
dGVuY2VJZ25vcmVTdGF0ZSIsICJibGFoIik7CitjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25v
cmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoXEBhcmdzKTsKK2lzX2RlZXBseShc
QGFyZ3MsIFsiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJibGFoIl0sICR0aXRsZSk7
CisKKyMgTmV3IHRlc3QKKyR0aXRsZSA9ICJjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVT
dGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWY6IEV4aXN0aW5nIC1BcHBsZVBlcnNpc3Rl
bmNlSWdub3JlU3RhdGUgWUVTIGFuZCBvdGhlciBhcmd1bWVudHMiOyAjIE5vIGNoYW5nZQorQGFy
Z3MgPSAoIi1mb28iLCAiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJZRVMiLCAiLWJh
ciIpOworY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0
SW50b0FycmF5UmVmKFxAYXJncyk7Citpc19kZWVwbHkoXEBhcmdzLCBbIi1mb28iLCAiLUFwcGxl
UGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJZRVMiLCAiLWJhciJdLCAkdGl0bGUpOworCisjIE5l
dyB0ZXN0CiskdGl0bGUgPSAiY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVBcmd1
bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmOiBBZGQgYXJndW1lbnQgLUFwcGxlUGVyc2lzdGVuY2VJ
Z25vcmVTdGF0ZSBZRVMiOworQGFyZ3MgPSAoKTsKK2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUln
bm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZihcQGFyZ3MpOworaXNfZGVlcGx5
KFxAYXJncywgWyItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIllFUyJdLCAkdGl0bGUp
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3Jl
U3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmOiBBZGQgYXJndW1lbnQgLUFwcGxlUGVy
c2lzdGVuY2VJZ25vcmVTdGF0ZSBZRVMgYW5kIGtlZXAgb3RoZXIgYXJndW1lbnRzIjsKK0Bhcmdz
ID0gKCItZm9vIiwgIi1iYXIiKTsKK2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRl
QXJndW1lbnRPckluc2VydEludG9BcnJheVJlZihcQGFyZ3MpOworaXNfZGVlcGx5KFxAYXJncywg
WyItZm9vIiwgIi1iYXIiLCAiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJZRVMiXSwg
JHRpdGxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105568</attachid>
            <date>2011-08-29 20:33:02 -0700</date>
            <delta_ts>2011-11-20 12:11:43 -0800</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>Bug66902_2.patch</filename>
            <type>text/plain</type>
            <size>12607</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0MDQwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMTEtMDgtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgor
CisgICAgICAgIHtkZWJ1ZywgZ2RiLCBydW59LXNhZmFyaSBzaG91bGQgZGlzYWJsZSBhcHBsaWNh
dGlvbiByZXN1bWUgZm9yIFNhZmFyaSBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuZGVyIE1hYyBPUyAxMC43IFNhZmFyaSByZXN1bWVz
IGl0cyBsYXN0IHNhdmVkIHN0YXRlIG9uIGxhdW5jaC4gV2hlbiB1c2luZworICAgICAgICB7ZGVi
dWcsIGdkYiwgcnVufS1zYWZhcmkgaXQgaXMgbW9zdCBsaWtlbHkgdGhlIGNhc2UgdGhhdCBzdWNo
IGEgc2Vjb25kIGluc3RhbmNlIG9mCisgICAgICAgIFNhZmFyaSB3aWxsIGhhdmUgYSBkaWZmZXJl
bnQgd29ya2luZyBzZXQgb2Ygd2ViIHBhZ2VzIChzYXkgdG8gZGVidWcgYW4gaXNzdWUpLgorICAg
ICAgICBIZW5jZSwgYnkgZGVmYXVsdCwgd2Ugc2hvdWxkbid0IGhhdmUge2RlYnVnLCBnZGIsIHJ1
bn0tc2FmYXJpIHJlc3VtZSB0aGUgbGFzdAorICAgICAgICBzYXZlZCBzdGF0ZS4KKworICAgICAg
ICBJbnN0ZWFkLCBpZiB5b3UgZXhwbGljaXRseSB3YW50IFNhZmFyaSB0byByZXN1bWUgd2l0aCB0
aGUgbGFzdCBzYXZlZCBzdGF0ZSB0aGVuCisgICAgICAgIHBhc3MgdGhlIGNvbW1hbmQgbGluZSBh
cmd1bWVudCAtcmVzdG9yZS1zdGF0ZSB0byB7ZGVidWcsIGdkYiwgcnVufS1zYWZhcmkuCisKKyAg
ICAgICAgQXMgYSBzaWRlIGVmZmVjdCwgcnVuLXdlYmtpdC10ZXN0cyB3aWxsIGxhdW5jaCBTYWZh
cmkgd2l0aG91dCBzdGF0ZSByZXN0b3JhdGlvbiB3aGVuCisgICAgICAgIHNob3dpbmcgdGVzdCBy
ZXN1bHRzIHdoaWNoIHNlZW1zIHJlYXNvbmFibGUgYW5kIGNvbnNpc3RlbnQgd2l0aCBpdHMgYmVo
YXZpb3IgYmVmb3JlCisgICAgICAgIE1hYyBPUyAxMC43LgorCisgICAgICAgICogU2NyaXB0cy9k
ZWJ1Zy1zYWZhcmk6IFBhcnNlIC0tcmVzdG9yZS1zdGF0ZSBjb21tYW5kIGxpbmUgb3B0aW9uOyBB
ZGRlZCB1c2FnZSBtZXNzYWdlLgorICAgICAgICAqIFNjcmlwdHMvZ2RiLXNhZmFyaTogRGl0dG8u
CisgICAgICAgICogU2NyaXB0cy9ydW4tc2FmYXJpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdGRpcnMucG06IEZvcm1hdHRlZCBhbmQgc29ydGVkIEBFWFBPUlQgbGlzdC4KKyAgICAg
ICAgKGNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydElu
dG9BcnJheVJlZik6IEFkZGVkCisgICAgICAgIChydW5TYWZhcmkpOiBNb2RpZmllZCB0byB0YWtl
IGEgaGFzaCByZWZlcmVuY2Ugc28gYXMgdG8gc3VwcG9ydCBib3RoIGVuYWJsZS9kaXNhYmxlIG9m
CisgICAgICAgIGRlYnVnZ2luZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3dlYmtpdGRpcnNfdW5pdHRlc3Q6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC93ZWJraXRkaXJzX3VuaXR0ZXN0L2NoZWNrRm9yQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZi5wbDogQWRkZWQuCisK
IDIwMTEtMDgtMjkgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgogCiAgICAg
ICAgIHNoZXJpZmZib3QgInVzYWdlIiBoZWxwIHN0YXRlbWVudHMgYXJlIHdyb25nCkluZGV4OiBU
b29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rl
YnVnLXNhZmFyaQkocmV2aXNpb24gOTM5MzUpCisrKyBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFy
aQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDM3IEBACiAjIFNjcmlwdCB0byBydW4gU2Fm
YXJpIGluIHRoZSBwbGF0Zm9ybSdzIGRlYnVnZ2VyIGZvciB0aGUgV2ViS2l0IE9wZW4gU291cmNl
IFByb2plY3QuCiAKIHVzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmluZEJp
bjsKK3VzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBwYXNzX3Rocm91Z2gpOwogdXNlIGxpYiAk
RmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7CiAKK215ICRzaG93SGVscDsKK215ICRyZXN0
b3JlU3RhdGU7CitteSAlb3B0aW9ucyA9ICgKKyAgICAnaHxoZWxwJyA9PiBcJHNob3dIZWxwLAor
ICAgICdyZXN0b3JlLXN0YXRlIScgPT4gXCRyZXN0b3JlU3RhdGUsCispOworCitteSAkc2hvdWxk
UmVzdG9yZVN0YXRlID0gJHJlc3RvcmVTdGF0ZSA/ICJyZXN0b3JlIiA6ICJkb24ndCByZXN0b3Jl
IjsKK215ICR1c2FnZSA9IDw8RU9GOworVXNhZ2U6IEB7W2Jhc2VuYW1lKCQwKV19IFtvcHRpb25z
XSBbb3B0aW9ucyB0byBwYXNzIHRvIFNhZmFyaV0KKyAgLS1oZWxwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1yZXN0b3JlLXN0YXRlICAgICAg
ICAgICAgICAgICAgIEVuYWJsZSBzdGF0ZSByZXN0b3JhdGlvbiBvbiBNYWMgT1MgMTAuNyAoZGVm
YXVsdDogJHNob3VsZFJlc3RvcmVTdGF0ZSkKK0VPRgorCitHZXRPcHRpb25zKCVvcHRpb25zKTsK
KworaWYgKCRzaG93SGVscCkgeworICAgIHByaW50IFNUREVSUiAkdXNhZ2U7CisgICAgZXhpdCgx
KTsKK30KKworbXkgJXJ1blNhZmFyaU9wdGlvbnM7CiskcnVuU2FmYXJpT3B0aW9uc3tpbkRlYnVn
Z2VyfSA9IDE7CiskcnVuU2FmYXJpT3B0aW9uc3tyZXN0b3JlU3RhdGV9ID0gJHJlc3RvcmVTdGF0
ZSBpZiAkcmVzdG9yZVN0YXRlOworCiBzZXRDb25maWd1cmF0aW9uKCk7CiAKLWV4aXQgZXhpdFN0
YXR1cyhydW5TYWZhcmkoMSkpOworZXhpdCBleGl0U3RhdHVzKHJ1blNhZmFyaShcJXJ1blNhZmFy
aU9wdGlvbnMpKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZ2RiLXNhZmFyaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL2dkYi1zYWZhcmkJKHJldmlzaW9uIDkzOTM1KQorKysgVG9vbHMvU2Ny
aXB0cy9nZGItc2FmYXJpCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMzQgQEAKICMgU2lt
cGxpZmllZCAicnVuIHVuZGVyIGdkYiIgc2NyaXB0IGZvciBXZWJLaXQgT3BlbiBTb3VyY2UgUHJv
amVjdC4KIAogdXNlIHN0cmljdDsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpUZW1w
IHF3Lzpta3RlbXAvOwogdXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcg
cGFzc190aHJvdWdoKTsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJzOwog
CitteSAkc2hvd0hlbHA7CitteSAkcmVzdG9yZVN0YXRlOworbXkgJW9wdGlvbnMgPSAoCisgICAg
J2h8aGVscCcgPT4gXCRzaG93SGVscCwKKyAgICAncmVzdG9yZS1zdGF0ZSEnID0+IFwkcmVzdG9y
ZVN0YXRlLAorKTsKKworbXkgJHNob3VsZFJlc3RvcmVTdGF0ZSA9ICRyZXN0b3JlU3RhdGUgPyAi
cmVzdG9yZSIgOiAiZG9uJ3QgcmVzdG9yZSI7CitteSAkdXNhZ2UgPSA8PEVPRjsKK1VzYWdlOiBA
e1tiYXNlbmFtZSgkMCldfSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBTYWZhcmldCisg
IC0taGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdl
CisgIC0tcmVzdG9yZS1zdGF0ZSAgICAgICAgICAgICAgICAgICBFbmFibGUgc3RhdGUgcmVzdG9y
YXRpb24gb24gTWFjIE9TIDEwLjcgKGRlZmF1bHQ6ICRzaG91bGRSZXN0b3JlU3RhdGUpCitFT0YK
KworR2V0T3B0aW9ucyglb3B0aW9ucyk7CisKK2lmICgkc2hvd0hlbHApIHsKKyAgICBwcmludCBT
VERFUlIgJHVzYWdlOworICAgIGV4aXQoMSk7Cit9CisKIHNldENvbmZpZ3VyYXRpb24oKTsKIG15
ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogbXkgJHNhZmFyaVBhdGggPSBzYWZhcmlQYXRo
KCk7CkBAIC01MCw0ICs3Myw1IEBAICRFTlZ7V0VCS0lUX1VOU0VUX0RZTERfRlJBTUVXT1JLX1BB
VEh9ID0KIAogcHJpbnQgIlN0YXJ0aW5nIFNhZmFyaSB1bmRlciBnZGIgd2l0aCBEWUxEX0ZSQU1F
V09SS19QQVRIIHNldCB0byBwb2ludCB0byBidWlsdCBXZWJLaXQgaW4gJHByb2R1Y3REaXIuXG4i
OwogbXkgQGFyY2hpdGVjdHVyZUZsYWdzID0gKCItYXJjaCIsIGFyY2hpdGVjdHVyZSgpKTsKK2No
ZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJh
eVJlZihcQEFSR1YpIGlmIGlzTGlvbigpICYmICEkcmVzdG9yZVN0YXRlOwogZXhlYyAkZ2RiUGF0
aCwgQGFyY2hpdGVjdHVyZUZsYWdzLCAiLS1hcmciLCAkc2FmYXJpUGF0aCwgQEFSR1Ygb3IgZGll
OwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvcnVuLXNhZmFyaQkocmV2aXNpb24gOTM5MzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1z
YWZhcmkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwzOSBAQAogIyBTaW1wbGlmaWVkICJy
dW4iIHNjcmlwdCBmb3IgV2ViS2l0IE9wZW4gU291cmNlIFByb2plY3QuCiAKIHVzZSBzdHJpY3Q7
Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmluZEJpbjsKK3VzZSBHZXRvcHQ6OkxvbmcgcXco
OmNvbmZpZyBwYXNzX3Rocm91Z2gpOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtp
dGRpcnM7CiAKK215ICRzaG93SGVscDsKK215ICRyZXN0b3JlU3RhdGU7CitteSAlb3B0aW9ucyA9
ICgKKyAgICAnaHxoZWxwJyA9PiBcJHNob3dIZWxwLAorICAgICdyZXN0b3JlLXN0YXRlIScgPT4g
XCRyZXN0b3JlU3RhdGUsCispOworCitteSAkc2hvdWxkUmVzdG9yZVN0YXRlID0gJHJlc3RvcmVT
dGF0ZSA/ICJyZXN0b3JlIiA6ICJkb24ndCByZXN0b3JlIjsKK215ICR1c2FnZSA9IDw8RU9GOwor
VXNhZ2U6IEB7W2Jhc2VuYW1lKCQwKV19IFtvcHRpb25zXSBbb3B0aW9ucyB0byBwYXNzIHRvIFNh
ZmFyaV0KKyAgLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxw
IG1lc3NhZ2UKKyAgLS1yZXN0b3JlLXN0YXRlICAgICAgICAgICAgICAgICAgIEVuYWJsZSBzdGF0
ZSByZXN0b3JhdGlvbiBvbiBNYWMgT1MgMTAuNyAoZGVmYXVsdDogJHNob3VsZFJlc3RvcmVTdGF0
ZSkKK0VPRgorCitHZXRPcHRpb25zKCVvcHRpb25zKTsKKworaWYgKCRzaG93SGVscCkgeworICAg
IHByaW50IFNUREVSUiAkdXNhZ2U7CisgICAgZXhpdCgxKTsKK30KKworbXkgJXJ1blNhZmFyaU9w
dGlvbnM7CiskcnVuU2FmYXJpT3B0aW9uc3tyZXN0b3JlU3RhdGV9ID0gJHJlc3RvcmVTdGF0ZSBp
ZiAkcmVzdG9yZVN0YXRlOworCiBzZXRDb25maWd1cmF0aW9uKCk7CiAKICMgQ2hlY2sgdG8gc2Vl
IHRoYXQgYWxsIHRoZSBmcmFtZXdvcmtzIGFyZSBidWlsdC4KIGNoZWNrRnJhbWV3b3JrcygpOwog
Ci1leGl0IGV4aXRTdGF0dXMocnVuU2FmYXJpKCkpOworZXhpdCBleGl0U3RhdHVzKHJ1blNhZmFy
aShcJXJ1blNhZmFyaU9wdGlvbnMpKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0JKHJldmlzaW9uIDkz
OTM1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0MywyMCBAQCBCRUdJTiB7CiAgICBvdXIgKCRWRVJTSU9OLCBASVNBLCBARVhQT1JULCBA
RVhQT1JUX09LLCAlRVhQT1JUX1RBR1MpOwogICAgJFZFUlNJT04gICAgID0gMS4wMDsKICAgIEBJ
U0EgICAgICAgICA9IHF3KEV4cG9ydGVyKTsKLSAgIEBFWFBPUlQgICAgICA9IHF3KCZjaGRpcldl
YktpdCAmYmFzZVByb2R1Y3REaXIgJnByb2R1Y3REaXIgJlhjb2RlT3B0aW9ucyAmWGNvZGVPcHRp
b25TdHJpbmcgJlhjb2RlT3B0aW9uU3RyaW5nTm9Db25maWcgJnBhc3NlZENvbmZpZ3VyYXRpb24g
JnNldENvbmZpZ3VyYXRpb24gJnNhZmFyaVBhdGggJmNoZWNrRnJhbWV3b3JrcyAmY3VycmVudFNW
TlJldmlzaW9uKTsKKyAgIEBFWFBPUlQgICAgICA9IHF3KAorICAgICAgICZYY29kZU9wdGlvblN0
cmluZworICAgICAgICZYY29kZU9wdGlvblN0cmluZ05vQ29uZmlnCisgICAgICAgJlhjb2RlT3B0
aW9ucworICAgICAgICZiYXNlUHJvZHVjdERpcgorICAgICAgICZjaGRpcldlYktpdAorICAgICAg
ICZjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRv
QXJyYXlSZWYKKyAgICAgICAmY2hlY2tGcmFtZXdvcmtzCisgICAgICAgJmN1cnJlbnRTVk5SZXZp
c2lvbgorICAgICAgICZwYXNzZWRDb25maWd1cmF0aW9uCisgICAgICAgJnByb2R1Y3REaXIKKyAg
ICAgICAmc2FmYXJpUGF0aAorICAgICAgICZzZXRDb25maWd1cmF0aW9uCisgICApOwogICAgJUVY
UE9SVF9UQUdTID0gKCApOwogICAgQEVYUE9SVF9PSyAgID0gKCk7CiB9CkBAIC0xOTMxLDE3ICsx
OTQ0LDMwIEBAIHN1YiBzZXRQYXRoRm9yUnVubmluZ1dlYktpdEFwcAogICAgIH0KIH0KIAorc3Vi
IGNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9B
cnJheVJlZigkKQoreworICAgIG15ICgkYXJyYXlSZWYpID0gQF87CisgICAgIyBEb24ndCByZXN1
bWUgdGhlIGxhc3Qgc2F2ZWQgc3RhdGUgZm9yIFNhZmFyaS4KKyAgICBteSAkYXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlS2V5ID0gIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiOworICAg
IHB1c2ggQCRhcnJheVJlZiwgKCRhcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVLZXksICJZRVMi
KSB1bmxlc3MgZ3JlcCgvXiRhcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGVLZXkkLywgQCRhcnJh
eVJlZik7Cit9CisKIHN1YiBydW5TYWZhcmkKIHsKLSAgICBteSAoJGRlYnVnZ2VyKSA9IEBfOwor
ICAgIG15ICgkb3B0aW9ucykgPSBAXzsKIAogICAgIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsK
LSAgICAgICAgcmV0dXJuIHN5c3RlbSAiJEZpbmRCaW46OkJpbi9nZGItc2FmYXJpIiwgYXJndW1l
bnRzRm9yQ29uZmlndXJhdGlvbigpIGlmICRkZWJ1Z2dlcjsKKyAgICAgICAgaWYgKCRvcHRpb25z
LT57aW5EZWJ1Z2dlcn0pIHsKKyAgICAgICAgICAgIG15IEBhcmdzID0gYXJndW1lbnRzRm9yQ29u
ZmlndXJhdGlvbigpOworICAgICAgICAgICAgcHVzaCBAYXJncywgIi0tcmVzdG9yZS1zdGF0ZSIg
aWYgJG9wdGlvbnMtPntyZXN0b3JlU3RhdGV9OworICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSgi
JEZpbmRCaW46OkJpbi9nZGItc2FmYXJpIiwgQGFyZ3MpOworICAgICAgICB9CiAKICAgICAgICAg
bXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7CiAgICAgICAgIHByaW50ICJTdGFydGluZyBT
YWZhcmkgd2l0aCBEWUxEX0ZSQU1FV09SS19QQVRIIHNldCB0byBwb2ludCB0byBidWlsdCBXZWJL
aXQgaW4gJHByb2R1Y3REaXIuXG4iOwogICAgICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9
ID0gJHByb2R1Y3REaXI7CiAgICAgICAgICRFTlZ7V0VCS0lUX1VOU0VUX0RZTERfRlJBTUVXT1JL
X1BBVEh9ID0gIllFUyI7CisgICAgICAgIGNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0
YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZihcQEFSR1YpIGlmIGlzTGlvbigpICYmICEk
b3B0aW9ucy0+e3Jlc3RvcmVTdGF0ZX07CiAgICAgICAgIGlmIChhcmNoaXRlY3R1cmUoKSkgewog
ICAgICAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICItIiAuIGFyY2hpdGVjdHVyZSgpLCBz
YWZhcmlQYXRoKCksIEBBUkdWOwogICAgICAgICB9IGVsc2UgewpAQCAtMTk1Miw3ICsxOTc4LDcg
QEAgc3ViIHJ1blNhZmFyaQogICAgIGlmIChpc0FwcGxlV2luV2ViS2l0KCkpIHsKICAgICAgICAg
bXkgJHJlc3VsdDsKICAgICAgICAgbXkgJHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7Ci0gICAg
ICAgIGlmICgkZGVidWdnZXIpIHsKKyAgICAgICAgaWYgKCRvcHRpb25zLT57aW5EZWJ1Z2dlcn0p
IHsKICAgICAgICAgICAgIHNldHVwQ3lnd2luRW52KCk7CiAgICAgICAgICAgICBjaG9tcCgkRU5W
e1dFQktJVE5JR0hUTFl9ID0gYGN5Z3BhdGggLXdhICIkcHJvZHVjdERpciJgKTsKICAgICAgICAg
ICAgIG15ICRzYWZhcmlQYXRoID0gc2FmYXJpUGF0aCgpOwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL3dlYmtpdGRpcnNfdW5pdHRlc3QvY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdu
b3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmLnBsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC93ZWJraXRkaXJzX3VuaXR0ZXN0L2NoZWNrRm9yQXBwbGVQ
ZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZi5wbAkocmV2
aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC93ZWJraXRkaXJzX3VuaXR0ZXN0
L2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9B
cnJheVJlZi5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorIyEvdXNyL2Jpbi9wZXJs
CisjCisjIENvcHlyaWdodCAoQykgMjAxMSBEYW5pZWwgQmF0ZXMgKGRiYXRlc0BpbnR1ZGF0YS5j
b20pLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIyBVbml0IHRlc3RzIG9mIHdlYmtpdGRpcnM6OmNoZWNrRm9yQXBwbGVQ
ZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZigpLgorCit1
c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA2OwordXNlIHdlYmtpdGRpcnM7CisKK215ICR0aXRsZTsK
K215IEBhcmdzOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiY2hlY2tGb3JBcHBsZVBlcnNpc3Rl
bmNlSWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmOiBFeGlzdGluZyAtQXBw
bGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIFlFUyI7ICMgTm8gY2hhbmdlCitAYXJncyA9ICgiLUFw
cGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJZRVMiKTsKK2NoZWNrRm9yQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZihcQGFyZ3MpOworaXNf
ZGVlcGx5KFxAYXJncywgWyItQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIllFUyJdLCAk
dGl0bGUpOworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNl
SWdub3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmOiBFeGlzdGluZyAtQXBwbGVQ
ZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIE5PIjsgIyBObyBjaGFuZ2UKK0BhcmdzID0gKCItQXBwbGVQ
ZXJzaXN0ZW5jZUlnbm9yZVN0YXRlIiwgIk5PIik7CitjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJ
Z25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoXEBhcmdzKTsKK2lzX2RlZXBs
eShcQGFyZ3MsIFsiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJOTyJdLCAkdGl0bGUp
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3Jl
U3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmOiBFeGlzdGluZyAtQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlIGJsYWgiOyAjIE5vIGNoYW5nZQorQGFyZ3MgPSAoIi1BcHBsZVBlcnNp
c3RlbmNlSWdub3JlU3RhdGUiLCAiYmxhaCIpOworY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdu
b3JlU3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmKFxAYXJncyk7Citpc19kZWVwbHko
XEBhcmdzLCBbIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiYmxhaCJdLCAkdGl0bGUp
OworCisjIE5ldyB0ZXN0CiskdGl0bGUgPSAiY2hlY2tGb3JBcHBsZVBlcnNpc3RlbmNlSWdub3Jl
U3RhdGVBcmd1bWVudE9ySW5zZXJ0SW50b0FycmF5UmVmOiBFeGlzdGluZyAtQXBwbGVQZXJzaXN0
ZW5jZUlnbm9yZVN0YXRlIFlFUyBhbmQgb3RoZXIgYXJndW1lbnRzIjsgIyBObyBjaGFuZ2UKK0Bh
cmdzID0gKCItZm9vIiwgIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiWUVTIiwgIi1i
YXIiKTsKK2NoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJndW1lbnRPckluc2Vy
dEludG9BcnJheVJlZihcQGFyZ3MpOworaXNfZGVlcGx5KFxAYXJncywgWyItZm9vIiwgIi1BcHBs
ZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiWUVTIiwgIi1iYXIiXSwgJHRpdGxlKTsKKworIyBO
ZXcgdGVzdAorJHRpdGxlID0gImNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9yZVN0YXRlQXJn
dW1lbnRPckluc2VydEludG9BcnJheVJlZjogQWRkIGFyZ3VtZW50IC1BcHBsZVBlcnNpc3RlbmNl
SWdub3JlU3RhdGUgWUVTIjsKK0BhcmdzID0gKCk7CitjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJ
Z25vcmVTdGF0ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoXEBhcmdzKTsKK2lzX2RlZXBs
eShcQGFyZ3MsIFsiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIsICJZRVMiXSwgJHRpdGxl
KTsKKworIyBOZXcgdGVzdAorJHRpdGxlID0gImNoZWNrRm9yQXBwbGVQZXJzaXN0ZW5jZUlnbm9y
ZVN0YXRlQXJndW1lbnRPckluc2VydEludG9BcnJheVJlZjogQWRkIGFyZ3VtZW50IC1BcHBsZVBl
cnNpc3RlbmNlSWdub3JlU3RhdGUgWUVTIGFuZCBrZWVwIG90aGVyIGFyZ3VtZW50cyI7CitAYXJn
cyA9ICgiLWZvbyIsICItYmFyIik7CitjaGVja0ZvckFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0
ZUFyZ3VtZW50T3JJbnNlcnRJbnRvQXJyYXlSZWYoXEBhcmdzKTsKK2lzX2RlZXBseShcQGFyZ3Ms
IFsiLWZvbyIsICItYmFyIiwgIi1BcHBsZVBlcnNpc3RlbmNlSWdub3JlU3RhdGUiLCAiWUVTIl0s
ICR0aXRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115993</attachid>
            <date>2011-11-20 12:11:43 -0800</date>
            <delta_ts>2011-11-28 12:32:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug66902_4.patch</filename>
            <type>text/plain</type>
            <size>7481</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMDg3MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDExLTExLTIwICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4K
KworICAgICAgICBQcm92aWRlIG9wdGlvbiB0byBkaXNhYmxlIE1hYyBPUyAxMC43IGFwcGxpY2F0
aW9uIHJlc3VtZSB3aGVuIHVzaW5nCisgICAgICAgIHtkZWJ1ZywgcnVufS17c2FmYXJpLCBtaW5p
YnJvd3NlciwgdGVzdC1ydW5uZXIsIHRlc3Qtd2Via2l0LWFwaX0sIGFuZCBydW4td2Via2l0LWFw
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4g
b3B0aW9uYWwgY29tbWFuZCBsaW5lIGFyZ3VtZW50IC0tbm8tc2F2ZWQtc3RhdGUgdG8gZGlzYWJs
ZQorICAgICAgICBhcHBsaWNhdGlvbiByZXN1bWUgKHN0YXRlIHJlc3RvcmF0aW9uKSBmb3IgdGhl
IHNlc3Npb24gb24gTWFjIE9TIDEwLjcuCisKKyAgICAgICAgRm9yIGluc3RhbmNlLCB3aGVuIGRl
YnVnZ2luZyBhbiBpc3N1ZSBpbiBTYWZhcmkgaXQgaXMgdXNlZnVsIHRvIGJlIGFibGUKKyAgICAg
ICAgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSBhcHBsaWNhdGlvbiByZXN1bWUuIEN1cnJlbnRseSB5
b3UgY2FuIGRpc2FibGUKKyAgICAgICAgYXBwbGljYXRpb24gcmVzdW1lIHdoZW4gbGF1bmNoaW5n
IFNhZmFyaSBmcm9tIHdpdGhpbiBYY29kZS4gV2Ugc2hvdWxkCisgICAgICAgIGV4cG9zZSBhIHNp
bWlsYXIgb3B0aW9uIGluIG91ciBjb21tYW5kIGxpbmUgdG9vbHMuCisKKyAgICAgICAgKiBTY3Jp
cHRzL2RlYnVnLW1pbmlicm93c2VyOiBDYWxsIHByaW50SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1
Z1dlYktpdEFwcElmTmVlZGVkKCkKKyAgICAgICAgdG8gcHJpbnQgYSBoZWxwIG1lc3NhZ2UgYW5k
IGV4aXQoMykgaWYgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAtLWhlbHAgd2FzIGdpdmVuLgor
ICAgICAgICAqIFNjcmlwdHMvZGVidWctc2FmYXJpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRz
L2RlYnVnLXRlc3QtcnVubmVyOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3J1bi1taW5pYnJv
d3NlcjogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9ydW4tc2FmYXJpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3J1bi10ZXN0LXJ1bm5lcjogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9y
dW4tdGVzdC13ZWJraXQtYXBpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQt
YXBwOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdGRpcnMucG06CisgICAgICAgIChw
cmludEhlbHBBbmRFeGl0Rm9yUnVuQW5kRGVidWdXZWJLaXRBcHBJZk5lZWRlZCk6IEFkZGVkLgor
ICAgICAgICAoYXJndW1lbnRzRm9yUnVuQW5kRGVidWdNYWNXZWJLaXRBcHApOiBBZGRlZC4KKyAg
ICAgICAgKHJ1bk1hY1dlYktpdEFwcCk6IElmIHRoZSAtLW5vLXNhdmVkLXN0YXRlIGNvbW1hbmQg
bGluZSBhcmd1bWVudCB3YXMgZ2l2ZW4gdGhlbgorICAgICAgICBkaXNhYmxlIGFwcGxpY2F0aW9u
IHJlc3VtZSBmb3IgdGhlIHNlc3Npb24uCisgICAgICAgIChleGVjTWFjV2ViS2l0QXBwRm9yRGVi
dWdnaW5nKTogRGl0dG8uCisKIDIwMTEtMTEtMTkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGaXgganNvbnAgY2FsbGJhY2sgY29kZSB0byBhZGQgdGhlIGNhbGxi
YWNrIGlmIGpzb24gY29udGVudApJbmRleDogVG9vbHMvU2NyaXB0cy9kZWJ1Zy1taW5pYnJvd3Nl
cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2RlYnVnLW1pbmlicm93c2VyCShyZXZpc2lv
biAxMDA4NzEpCisrKyBUb29scy9TY3JpcHRzL2RlYnVnLW1pbmlicm93c2VyCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw4IEBAIHVzZSBGaW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6Qmlu
OwogdXNlIHdlYmtpdGRpcnM7CiAKK3ByaW50SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1Z1dlYktp
dEFwcElmTmVlZGVkKCk7CisKIHNldENvbmZpZ3VyYXRpb24oKTsKIAogZXhpdCBleGl0U3RhdHVz
KGRlYnVnTWluaUJyb3dzZXIoKSk7CkluZGV4OiBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2RlYnVnLXNhZmFyaQkocmV2aXNpb24gMTAwODcx
KQorKysgVG9vbHMvU2NyaXB0cy9kZWJ1Zy1zYWZhcmkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDggQEAgdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2Ugd2Via2l0
ZGlyczsKIAorcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQo
KTsKKwogc2V0Q29uZmlndXJhdGlvbigpOwogCiBleGl0IGV4aXRTdGF0dXMoZGVidWdTYWZhcmko
KSk7CkluZGV4OiBUb29scy9TY3JpcHRzL2RlYnVnLXRlc3QtcnVubmVyCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvZGVidWctdGVzdC1ydW5uZXIJKHJldmlzaW9uIDEwMDg3MSkKKysrIFRv
b2xzL1NjcmlwdHMvZGVidWctdGVzdC1ydW5uZXIJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDggQEAgdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2Ugd2Via2l0ZGly
czsKIAorcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQoKTsK
Kwogc2V0Q29uZmlndXJhdGlvbigpOwogCiBleGl0IGV4aXRTdGF0dXMoZGVidWdXZWJLaXRUZXN0
UnVubmVyKCkpOwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIJKHJldmlzaW9uIDEwMDg3MSkKKysr
IFRvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93c2VyCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw4IEBAIHVzZSBGaW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRp
cnM7CiAKK3ByaW50SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7
CisKIHNldENvbmZpZ3VyYXRpb24oKTsKIAogZXhpdCBleGl0U3RhdHVzKHJ1bk1pbmlCcm93c2Vy
KCkpOwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tc2FmYXJpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvcnVuLXNhZmFyaQkocmV2aXNpb24gMTAwODcxKQorKysgVG9vbHMvU2NyaXB0cy9y
dW4tc2FmYXJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBAIHVzZSBGaW5kQmluOwog
dXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7CiAKK3ByaW50SGVscEFuZEV4
aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7CisKIHNldENvbmZpZ3VyYXRpb24o
KTsKIAogIyBDaGVjayB0byBzZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0LgpJ
bmRleDogVG9vbHMvU2NyaXB0cy9ydW4tdGVzdC1ydW5uZXIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy9ydW4tdGVzdC1ydW5uZXIJKHJldmlzaW9uIDEwMDg3MSkKKysrIFRvb2xzL1Njcmlw
dHMvcnVuLXRlc3QtcnVubmVyCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBAIHVzZSBG
aW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7CiAKK3ByaW50
SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7CisKIHNldENvbmZp
Z3VyYXRpb24oKTsKIAogZXhpdCBleGl0U3RhdHVzKHJ1bldlYktpdFRlc3RSdW5uZXIoKSk7Cklu
ZGV4OiBUb29scy9TY3JpcHRzL3J1bi10ZXN0LXdlYmtpdC1hcGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9ydW4tdGVzdC13ZWJraXQtYXBpCShyZXZpc2lvbiAxMDA4NzEpCisrKyBUb29s
cy9TY3JpcHRzL3J1bi10ZXN0LXdlYmtpdC1hcGkJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDggQEAgdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2Ugd2Via2l0ZGly
czsKIAorcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQoKTsK
Kwogc2V0Q29uZmlndXJhdGlvbigpOwogCiBleGl0IGV4aXRTdGF0dXMocnVuVGVzdFdlYktpdEFQ
SSgpKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC1hcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LWFwcAkocmV2aXNpb24gMTAwODcxKQorKysgVG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LWFwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQCB1
c2UgRmluZEJpbjsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJzOwogCitw
cmludEhlbHBBbmRFeGl0Rm9yUnVuQW5kRGVidWdXZWJLaXRBcHBJZk5lZWRlZCgpOworCiBzZXRD
b25maWd1cmF0aW9uKCk7CiAKIGRpZSAiRGlkIG5vdCBzcGVjaWZ5IGFuIGFwcGxpY2F0aW9uIHRv
IG9wZW4gKGUuZy4gcnVuLXdlYmtpdC1hcHAgQXBwTmFtZSkuXG4iIHVubGVzcyBsZW5ndGgoJEFS
R1ZbMF0pID4gMDsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0JKHJldmlzaW9uIDEwMDg3MSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBA
QCBCRUdJTiB7CiAgICAgICAgJmRlYnVnU2FmYXJpCiAgICAgICAgJnBhc3NlZENvbmZpZ3VyYXRp
b24KICAgICAgICAmcHJvZHVjdERpcgorICAgICAgICZwcmludEhlbHBBbmRFeGl0Rm9yUnVuQW5k
RGVidWdXZWJLaXRBcHBJZk5lZWRlZAogICAgICAgICZydW5NYWNXZWJLaXRBcHAKICAgICAgICAm
c2FmYXJpUGF0aAogICAgICAgICZzZXRDb25maWd1cmF0aW9uCkBAIC0yMDQ0LDYgKzIwNDUsMjQg
QEAgc3ViIHNldFBhdGhGb3JSdW5uaW5nV2ViS2l0QXBwCiAgICAgfQogfQogCitzdWIgcHJpbnRI
ZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQoKQoreworICAgIHJldHVy
biB1bmxlc3MgY2hlY2tGb3JBcmd1bWVudEFuZFJlbW92ZUZyb21BUkdWKCItLWhlbHAiKTsKKyAg
ICBwcmludCBTVERFUlIgPDxFT0Y7CitVc2FnZTogQHtbYmFzZW5hbWUoJDApXX0gW29wdGlvbnNd
IFthcmdzIC4uLl0KKyAgLS1oZWxwICAgICAgICAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3Nh
Z2UKKyAgLS1uby1zYXZlZC1zdGF0ZSAgICAgIERpc2FibGUgYXBwbGljYXRpb24gcmVzdW1lIGZv
ciB0aGUgc2Vzc2lvbiBvbiBNYWMgT1MgMTAuNworRU9GCisgICAgZXhpdCgxKTsKK30KKworc3Vi
IGFyZ3VtZW50c0ZvclJ1bkFuZERlYnVnTWFjV2ViS2l0QXBwKCkKK3sKKyAgICBteSBAYXJncyA9
IEBBUkdWOworICAgIHB1c2ggQGFyZ3MsICgiLUFwcGxlUGVyc2lzdGVuY2VJZ25vcmVTdGF0ZSIs
ICJZRVMiKSBpZiBpc0xpb24oKSAmJiBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFycmF5
UmVmKCItLW5vLXNhdmVkLXN0YXRlIiwgXEBhcmdzKTsKKyAgICByZXR1cm4gQGFyZ3M7Cit9CisK
IHN1YiBydW5NYWNXZWJLaXRBcHAoJDskKQogewogICAgIG15ICgkYXBwUGF0aCwgJHVzZU9wZW5D
b21tYW5kKSA9IEBfOwpAQCAtMjA1MiwxMiArMjA3MSwxMiBAQCBzdWIgcnVuTWFjV2ViS2l0QXBw
KCQ7JCkKICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJHByb2R1Y3REaXI7CiAgICAg
JEVOVntXRUJLSVRfVU5TRVRfRFlMRF9GUkFNRVdPUktfUEFUSH0gPSAiWUVTIjsKICAgICBpZiAo
ZGVmaW5lZCgkdXNlT3BlbkNvbW1hbmQpICYmICR1c2VPcGVuQ29tbWFuZCA9PSBVU0VfT1BFTl9D
T01NQU5EKSB7Ci0gICAgICAgIHJldHVybiBzeXN0ZW0oIm9wZW4iLCAiLVciLCAiLWEiLCAkYXBw
UGF0aCwgIi0tYXJncyIsIEBBUkdWKTsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSgib3BlbiIsICIt
VyIsICItYSIsICRhcHBQYXRoLCAiLS1hcmdzIiwgYXJndW1lbnRzRm9yUnVuQW5kRGVidWdNYWNX
ZWJLaXRBcHAoKSk7CiAgICAgfQogICAgIGlmIChhcmNoaXRlY3R1cmUoKSkgewotICAgICAgICBy
ZXR1cm4gc3lzdGVtICJhcmNoIiwgIi0iIC4gYXJjaGl0ZWN0dXJlKCksICRhcHBQYXRoLCBAQVJH
VjsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSAiYXJjaCIsICItIiAuIGFyY2hpdGVjdHVyZSgpLCAk
YXBwUGF0aCwgYXJndW1lbnRzRm9yUnVuQW5kRGVidWdNYWNXZWJLaXRBcHAoKTsKICAgICB9Ci0g
ICAgcmV0dXJuIHN5c3RlbSB7ICRhcHBQYXRoIH0gJGFwcFBhdGgsIEBBUkdWOworICAgIHJldHVy
biBzeXN0ZW0geyAkYXBwUGF0aCB9ICRhcHBQYXRoLCBhcmd1bWVudHNGb3JSdW5BbmREZWJ1Z01h
Y1dlYktpdEFwcCgpOwogfQogCiBzdWIgZXhlY01hY1dlYktpdEFwcEZvckRlYnVnZ2luZygkKQpA
QCAtMjA3Miw3ICsyMDkxLDcgQEAgc3ViIGV4ZWNNYWNXZWJLaXRBcHBGb3JEZWJ1Z2dpbmcoJCkK
ICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJHByb2R1Y3REaXI7CiAgICAgJEVOVntX
RUJLSVRfVU5TRVRfRFlMRF9GUkFNRVdPUktfUEFUSH0gPSAiWUVTIjsKICAgICBteSBAYXJjaGl0
ZWN0dXJlRmxhZ3MgPSAoIi1hcmNoIiwgYXJjaGl0ZWN0dXJlKCkpOwotICAgIGV4ZWMgeyAkZ2Ri
UGF0aCB9ICRnZGJQYXRoLCBAYXJjaGl0ZWN0dXJlRmxhZ3MsICRhcHBQYXRoIG9yIGRpZTsKKyAg
ICBleGVjIHsgJGdkYlBhdGggfSAkZ2RiUGF0aCwgQGFyY2hpdGVjdHVyZUZsYWdzLCAkYXBwUGF0
aCwgYXJndW1lbnRzRm9yUnVuQW5kRGVidWdNYWNXZWJLaXRBcHAoKSBvciBkaWU7CiB9CiAKIHN1
YiBkZWJ1Z1NhZmFyaQo=
</data>
<flag name="review"
          id="115047"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="116063"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>