<?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>15600</bug_id>
          
          <creation_ts>2007-10-21 14:54:03 -0700</creation_ts>
          <short_desc>prepare-ChangeLog and update-webkit create needless ChangeLog conflicts</short_desc>
          <delta_ts>2007-10-26 08:52:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>59036</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-21 14:54:03 -0700</bug_when>
    <thetext>update-webkit creates needless ChangeLog conflicts

I have a script which I use locally to deal with such things.  Maybe this logic should be rolled into update-webkit?  The script is really dumb and could be made smarter if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59037</commentid>
    <comment_count>1</comment_count>
      <attachid>16772</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-21 14:54:55 -0700</bug_when>
    <thetext>Created attachment 16772
my script

Marking this for review to ask for comment from some of the other reviewers...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59041</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-21 16:19:48 -0700</bug_when>
    <thetext>Interesting.  I&apos;ve never used the update-webkit script, but it may be worth looking into creating a custom &quot;diff3&quot; command that is passed to --diff3-cmd when running &quot;svn update&quot;.

This mail message says that returning a non-zero exit status from the command (let&apos;s call it update-webkit-diff3) will leave a file in the conflicted state:

http://svn.haxx.se/users/archive-2004-09/1132.shtml

So the script just has to do the following:

1. If the merged filename is not &quot;ChangeLog&quot;, return a non-zero exit status.
2. Else merge the ChangeLog entry without conflicts, clean up the files created and return a zero exit status.

This contrib Perl script for Subversion may have some clues as well (although it does 3-way merges after the conflicts occur by using &quot;svn update --diff3-cmd=/bin/false&quot;):

http://svn.collab.net/repos/svn/trunk/contrib/client-side/svn_update.pl

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59042</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-10-21 16:22:56 -0700</bug_when>
    <thetext>I&apos;d definitely love to see better conflict avoidance in prepare-ChangeLog. But does just removing the conflict markers always do the right thing? I am not so sure, because I think at times I have seen content duplicated in the two conflict alternatives in such a way that just removing the markers would lead to a broken ChangeLog. What would work better is something like this:

If ChangeLog local changes are only lines at the top, save them, remove them, update ChangeLog, then paste new lines back at the top. I&apos;d love to see a version like that folded into prepare-ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59049</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-21 18:15:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Interesting.  I&apos;ve never used the update-webkit script, but it may be worth
&gt; looking into creating a custom &quot;diff3&quot; command that is passed to --diff3-cmd
&gt; when running &quot;svn update&quot;.

I&apos;ve written update-webkit-diff3.  It creates a patch using &quot;diff -u&quot; between the local changed file and the previous file, then applies this patch using &quot;patch --fuzz=3&quot; to prevent unwanted conflicts in ChangeLog files (just like svn-apply now does).

(In reply to comment #3)
&gt; If ChangeLog local changes are only lines at the top, save them, remove them,
&gt; update ChangeLog, then paste new lines back at the top. I&apos;d love to see a
&gt; version like that folded into prepare-ChangeLog.

I didn&apos;t realize that prepare-ChangeLog could use the script as well.  I&apos;ll make this change and submit a patch.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59051</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-21 18:23:31 -0700</bug_when>
    <thetext>Well, if update-webkit is fixed to never give you unnecessary conflicts in your ChangeLog, then it&apos;s less needed for prepare-ChangeLog.  In fact, I&apos;m not sure why prepare-ChangeLog would ever want this functionality, as the reason why you have a conflict in the first place is because you already have a changelog entry.  Unless we&apos;re discussing updating prepare-ChangeLog to notice and update existing changelog entries. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59063</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-21 20:29:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Well, if update-webkit is fixed to never give you unnecessary conflicts in your
&gt; ChangeLog, then it&apos;s less needed for prepare-ChangeLog.  In fact, I&apos;m not sure
&gt; why prepare-ChangeLog would ever want this functionality, as the reason why you
&gt; have a conflict in the first place is because you already have a changelog
&gt; entry.  Unless we&apos;re discussing updating prepare-ChangeLog to notice and update
&gt; existing changelog entries. :)

Sometimes you want to update the ChangeLog by rerunning prepare-ChangeLog, but don&apos;t want to clean up conflicts while you&apos;re merging the ChangeLog entries.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59064</commentid>
    <comment_count>7</comment_count>
      <attachid>16779</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-21 20:31:21 -0700</bug_when>
    <thetext>Created attachment 16779
Patch v1

Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59128</commentid>
    <comment_count>8</comment_count>
      <attachid>16779</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-22 06:19:16 -0700</bug_when>
    <thetext>Comment on attachment 16779
Patch v1

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59158</commentid>
    <comment_count>9</comment_count>
      <attachid>16779</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-22 09:25:40 -0700</bug_when>
    <thetext>Comment on attachment 16779
Patch v1

Clearing Darin&apos;s review+ flag. The update-webkit-diff3 script needs more work.

I think it needs to run diff3 and print its output to stdout instead of just doing an &quot;exit 1;&quot;, otherwise the merged file ends up blank.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59159</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-22 09:38:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I think it needs to run diff3 and print its output to stdout instead of just
&gt; doing an &quot;exit 1;&quot;, otherwise the merged file ends up blank.

The svn update command does not &quot;fall back&quot; to its own internal diff3 implementation if the --diff3-cmd script returns 1, so we may either have to invoke diff3 in the update-webkit-diff3 script, or we may need to do the ChangeLog cleanup after-the-fact.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59164</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-22 10:08:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; The svn update command does not &quot;fall back&quot; to its own internal diff3
&gt; implementation if the --diff3-cmd script returns 1, so we may either have to
&gt; invoke diff3 in the update-webkit-diff3 script, or we may need to do the
&gt; ChangeLog cleanup after-the-fact.

I think we should do the ChangeLog clean-up after-the-fact since we can watch for ChangeLog files with a &quot;C&quot; status, then run a diff and a patch (similar to what update-webkit-diff3 does in the patch) on the three files left in the directory.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59395</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-24 21:06:24 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I think we should do the ChangeLog clean-up after-the-fact since we can watch
&gt; for ChangeLog files with a &quot;C&quot; status, then run a diff and a patch (similar to
&gt; what update-webkit-diff3 does in the patch) on the three files left in the
&gt; directory.

I&apos;m going to implement such a script that works for both git and svn.

Note that I committed r27013 and r27014, which was some clean-up originally included in the patch in Attachment #16779.

http://trac.webkit.org/projects/webkit/changeset/27013
http://trac.webkit.org/projects/webkit/changeset/27014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59411</commentid>
    <comment_count>13</comment_count>
      <attachid>16855</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-25 00:27:17 -0700</bug_when>
    <thetext>Created attachment 16855
Patch v2

Introducing the resolve-ChangeLogs script, which does exactly what its name suggests.  It may be run in stand-alone mode (for those that like to run &apos;svn up&apos; on their own), and is integrated with prepare-ChangeLog and update-webkit in case either of those scripts run into a conflicted ChangeLog.

Note that I&apos;ve tested resolve-ChangeLogs running forwards and backwards in history, and it works both ways because it matches the current file&apos;s revision with the conflict file created with the matching extension *to find the &quot;newer&quot; version of the file).  I also assume git won&apos;t lie about the mine/ours/theirs stages regardless of how you&apos;re merging.  File names used for merging in git were made to match those used in git-mergetool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59518</commentid>
    <comment_count>14</comment_count>
      <attachid>16855</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-26 00:21:55 -0700</bug_when>
    <thetext>Comment on attachment 16855
Patch v2

looks great, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59542</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-26 08:52:14 -0700</bug_when>
    <thetext>Committed r27112</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16772</attachid>
            <date>2007-10-21 14:54:55 -0700</date>
            <delta_ts>2007-10-21 20:31:21 -0700</delta_ts>
            <desc>my script</desc>
            <filename>fix-changelog</filename>
            <type>text/plain</type>
            <size>1989</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsIC13CgojIENvcHlyaWdodCAoQykgRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KIwojIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAojIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwojIGFyZSBtZXQ6CiMKIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQojICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgojICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiMgICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCiMK
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQojIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCiMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQojIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCiMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwoj
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAojIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CiMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KCnVzZSBzdHJpY3Q7CgpvcGVuIE9MRCwgIjxDaGFuZ2VMb2ciIG9yIGRpZSAi
Tm8gQ2hhbmdlTG9nIGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkiOwpvcGVuIE5FVywgIj5DaGFu
Z2VMb2cudG1wIiBvciBkaWUgIkZhaWxlZCB0byBjcmVhdGUgQ2hhbmdlTG9nLnRtcCBmaWxlIGlu
IGN1cnJlbnQgZGlyZWN0b3J5IjsKd2hpbGUgKDxPTEQ+KSB7CiAgICBuZXh0ICBpZiAvPDw8PDw8
PC87CiAgICBuZXh0ICBpZiAvPT09PT09PS87CiAgICBuZXh0ICBpZiAvPj4+Pj4+Pi87CiAgICBw
cmludCBORVcgJF87Cn0KY2xvc2UgTkVXOwpjbG9zZSBPTEQ7CnJlbmFtZSgiQ2hhbmdlTG9nLnRt
cCIsICJDaGFuZ2VMb2ciKSBvciBkaWUgIkZhaWxlZCB0byByZXBsYWNlIENoYW5nZUxvZyB3aXRo
IENoYW5nZUxvZy50bXAiOwoKc3lzdGVtKCJzdm4gcmVzb2x2ZWQgQ2hhbmdlTG9nIik7
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16779</attachid>
            <date>2007-10-21 20:31:21 -0700</date>
            <delta_ts>2007-10-25 00:27:17 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-15600-v1.diff</filename>
            <type>text/plain</type>
            <size>11209</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI2ODU3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMTAtMjEgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2MDAKKyAgICAgICAgICBwcmVwYXJlLUNoYW5nZUxvZyBhbmQgdXBkYXRlLXdlYmtpdCBjcmVh
dGUgbmVlZGxlc3MgQ2hhbmdlTG9nIGNvbmZsaWN0cworCisgICAgICAgIFRoZSB1cGRhdGUtd2Vi
a2l0LWRpZmYzIHNjcmlwdCB3YXMgY3JlYXRlZCB0byBhY3QgYXMgYSBkaWZmMyBzdWJzdGl0dXRl
IGZvciB1c2UKKyAgICAgICAgd2l0aCB0aGUgLS1kaWZmMy1jbWQgYXJndW1lbnQgd2hlbiBydW5u
aW5nIHN2biB1cGRhdGUuICBJdCBhdHRlbXB0cyB0byBtZXJnZQorICAgICAgICBDaGFuZ2VMb2cg
ZmlsZXMgYnkgdXNpbmcgZGlmZigxKSB0byBjcmVhdGUgYSBwYXRjaCwgdGhlbiB1c2luZyB0aGUg
LS1mdXp6PTMgYXJndW1lbnQKKyAgICAgICAgd2l0aCBwYXRjaCgxKSB0byBhcHBseSBpdC4gIEl0
IHJlZnVzZXMgdG8gbWVyZ2UgYW55IGZpbGUgbm90IG5hbWVkICJDaGFuZ2VMb2ciLgorCisgICAg
ICAgICogU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZzogVXNlIHVwZGF0ZS13ZWJraXQtZGlmZjMg
d2l0aCBzdm4gdXBkYXRlIHRvIG1lcmdlIENoYW5nZUxvZyBmaWxlcy4KKyAgICAgICAgKiBTY3Jp
cHRzL3VwZGF0ZS13ZWJraXQ6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvdXBkYXRlLXdlYmtp
dC1kaWZmMzogQWRkZWQuCisKIDIwMDctMTAtMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGFyb2Jlbi4KSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy9wcmVwYXJlLUNoYW5nZUxvZwkocmV2aXNpb24gMjY4NTUpCisrKyBXZWJLaXRUb29scy9TY3Jp
cHRzL3ByZXBhcmUtQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogCiAj
CiAjICBDb3B5cmlnaHQgKEMpIDIwMDAsIDIwMDEgRWF6ZWwsIEluYy4KLSMgIENvcHlyaWdodCAo
QykgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuCisjICBDb3B5
cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgIHByZXBhcmUtQ2hhbmdlTG9nIGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCkBAIC0yNjEsMTQgKzI2MSwxNSBA
QCBmb3JlYWNoIG15ICRmaWxlIChzb3J0IGtleXMgJWZ1bmN0aW9uX2xpCiB9CiAKICMgR2V0IHRo
ZSBsYXRlc3QgQ2hhbmdlTG9nIGZpbGVzIGZyb20gc3ZuLgotbXkgJGxvZ3MgPSAiIjsKK215IEBs
b2dzID0gKCk7CiBmb3JlYWNoIG15ICRwcmVmaXggKHNvcnQga2V5cyAlZmlsZXMpIHsKLSAgICAk
bG9ncyAuPSAiICR7cHJlZml4fUNoYW5nZUxvZyI7CisgICAgcHVzaCBAbG9ncywgRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZSgkcHJlZml4LCAiQ2hhbmdlTG9nIik7CiB9CiAKLWlmICgkbG9ncyAmJiAkdXBk
YXRlQ2hhbmdlTG9ncyAmJiAkaXNTVk4pIHsKK2lmIChAbG9ncyAmJiAkdXBkYXRlQ2hhbmdlTG9n
cyAmJiAkaXNTVk4pIHsKICAgICBwcmludCBTVERFUlIgIiAgUnVubmluZyAnc3ZuIHVwZGF0ZScg
dG8gdXBkYXRlIENoYW5nZUxvZyBmaWxlcy5cbiI7Ci0gICAgb3BlbiBFUlJPUlMsICIkU1ZOIHVw
ZGF0ZSAtcSRsb2dzIHwiIG9yIGRpZSAiVGhlIHN2biB1cGRhdGUgb2YgQ2hhbmdlTG9nIGZpbGVz
IGZhaWxlZDogJCEuXG4iOworICAgIG9wZW4gRVJST1JTLCAiLXwiLCAkU1ZOLCAidXBkYXRlIiwg
Ii1xIiwgIi0tZGlmZjMtY21kIiwgRmlsZTo6U3BlYy0+Y2F0ZmlsZShkaXJuYW1lKCQwKSwgInVw
ZGF0ZS13ZWJraXQtZGlmZjMiKSwgQGxvZ3MKKyAgICAgICAgb3IgZGllICJUaGUgc3ZuIHVwZGF0
ZSBvZiBDaGFuZ2VMb2cgZmlsZXMgZmFpbGVkOiAkIS5cbiI7CiAgICAgcHJpbnQgU1RERVJSICIg
ICAgJF8iIHdoaWxlIDxFUlJPUlM+OwogICAgIGNsb3NlIEVSUk9SUzsKIH0KQEAgLTMxNiwxMyAr
MzE3LDEzIEBAIGlmICgkc3Bld0RpZmYgJiYgQGNoYW5nZWRfZmlsZXMpIHsKIH0KIAogIyBPcGVu
IENoYW5nZUxvZ3MuCi1pZiAoJG9wZW5DaGFuZ2VMb2dzICYmICRsb2dzKSB7CitpZiAoJG9wZW5D
aGFuZ2VMb2dzICYmIEBsb2dzKSB7CiAgICAgcHJpbnQgU1RERVJSICIgIE9wZW5pbmcgdGhlIGVk
aXRlZCBDaGFuZ2VMb2cgZmlsZXMuXG4iOwogICAgIG15ICRlZGl0b3IgPSAkRU5WeyJDSEFOR0Vf
TE9HX0VESVRfQVBQTElDQVRJT04ifTsKICAgICBpZiAoJGVkaXRvcikgewotICAgICAgICBzeXN0
ZW0gIm9wZW4gLWEgJyRlZGl0b3InJGxvZ3MiOworICAgICAgICBzeXN0ZW0gIm9wZW4iLCAiLWEi
LCAkZWRpdG9yLCBAbG9nczsKICAgICB9IGVsc2UgewotICAgICAgICBzeXN0ZW0gIm9wZW4gLWUk
bG9ncyI7CisgICAgICAgIHN5c3RlbSAib3BlbiIsICItZSIsIEBsb2dzOwogICAgIH0KIH0KIApJ
bmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAkocmV2aXNpb24gMjY4NTUpCisrKyBXZWJL
aXRUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAjIS91c3IvYmluL3BlcmwgLXcKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMSwyNCArMzEsNDMgQEAKIHVzZSBzdHJpY3Q7CiB1c2UgRmlu
ZEJpbjsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBH
ZXRvcHQ6Okxvbmc7CiB1c2Ugd2Via2l0ZGlyczsKIAogIyBIYW5kbGUgb3B0aW9ucwogbXkgJHF1
aWV0ID0nJzsKLW15ICRzdm5vcHRpb25zID0gJyc7Ci1HZXRPcHRpb25zKCdxdWlldHxxJyA9PiBc
JHF1aWV0KTsgCi0kc3Zub3B0aW9ucyA9ICctcScgaWYgJHF1aWV0OworbXkgJHNob3dIZWxwOwor
CitteSAkZ2V0T3B0aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgJ2h8aGVscCcgID0+IFwk
c2hvd0hlbHAsCisgICAgJ3F8cXVpZXQnID0+IFwkcXVpZXQsCispOyAKKworaWYgKCEkZ2V0T3B0
aW9uc1Jlc3VsdCB8fCAkc2hvd0hlbHApIHsKKyAgICBwcmludCBTVERFUlIgPDxfX0VORF9fOwor
VXNhZ2U6IEB7WyBiYXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdCisgIC1ofC0taGVscCAgIHNob3cg
dGhlIGhlbHAgbWVzc2FnZQorICAtcXwtLXF1aWV0ICBwYXNzIC1xIHRvIHN2biB1cGRhdGUgZm9y
IHF1aWV0IHVwZGF0ZXMKK19fRU5EX18KKyAgICBleGl0IDE7Cit9CisKK215IEBzdm5PcHRpb25z
OworcHVzaCBAc3ZuT3B0aW9ucywgJy1xJyBpZiAkcXVpZXQ7CisKKyMgVXNlIHVwZGF0ZS13ZWJr
aXQtZGlmZjMgdG8gY2xlYW5seSBtZXJnZSBDaGFuZ2VMb2cgZmlsZXMKK3B1c2ggQHN2bk9wdGlv
bnMsIHF3KC0tZGlmZjMtY21kIFdlYktpdFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1kaWZm
Myk7CiAKIGNoZGlyV2ViS2l0KCk7CiBwcmludCAiVXBkYXRpbmcgT3BlblNvdXJjZVxuIiB1bmxl
c3MgJHF1aWV0OwotKHN5c3RlbSgic3ZuICRzdm5vcHRpb25zIHVwIikgPT0gMCkgb3IgZGllOwor
KHN5c3RlbSgic3ZuIiwgInVwZGF0ZSIsIEBzdm5PcHRpb25zKSA9PSAwKSBvciBkaWU7CiBpZiAo
aXNDeWd3aW4oKSkgewotICAgIChzeXN0ZW0oInBlcmwgV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRh
dGUtd2Via2l0LWF1eGlsaWFyeS1saWJzIikgPT0gMCkgb3IgZGllOworICAgIChzeXN0ZW0oInBl
cmwiLCAiV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWF1eGlsaWFyeS1saWJzIikg
PT0gMCkgb3IgZGllOwogfQogCi1pZiAoLXggIi4uL0ludGVybmFsIikgeworaWYgKC1kICIuLi9J
bnRlcm5hbCIpIHsKICAgICBjaGRpcigiLi4vSW50ZXJuYWwiKTsKICAgICBwcmludCAiVXBkYXRp
bmcgSW50ZXJuYWxcbiIgdW5sZXNzICRxdWlldDsKLSAgICAoc3lzdGVtKCJzdm4gJHN2bm9wdGlv
bnMgdXAiKSA9PSAwKSBvciBkaWU7CisgICAgKHN5c3RlbSgic3ZuIiwgInVwZGF0ZSIsIEBzdm5P
cHRpb25zKSA9PSAwKSBvciBkaWU7CiB9CkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3VwZGF0
ZS13ZWJraXQtZGlmZjMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRhdGUt
d2Via2l0LWRpZmYzCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRhdGUt
d2Via2l0LWRpZmYzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NiBAQAorIyEvdXNyL2Jpbi9w
ZXJsIC13CisKKyMgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgZGlmZjMgcHNldWRvLXJlcGxh
Y2VtZW50IGNvbW1hbmQgdXNlZCB0byBtZXJnZSBDaGFuZ2VMb2cgZmlsZXMgZHVyaW5nIHN2biB1
cGRhdGUKKwordXNlIHN0cmljdDsKKwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEdldG9wdDo6
TG9uZzsKKworc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOworCitteSBAbGFiZWxzOworbXkgJG91
dHB1dE1lcmdlZEZpbGU7CitteSAkc2hvd0hlbHA7CitteSAkc2hvd092ZXJsYXA7CitteSAkdHJl
YXRGaWxlc0FzVGV4dDsKKworIyBQYXJzZSBzb21lLCBidXQgbm90IGFsbCwgb2YgdGhlIGRpZmYz
IGNvbW1hbmQtbGluZSBzd2l0Y2hlcworbXkgJGdldE9wdGlvbnNSZXN1bHQgPSBHZXRPcHRpb25z
KAorICAgICdhfHRleHQnICAgICAgICAgPT4gXCR0cmVhdEZpbGVzQXNUZXh0LAorICAgICdFfHNo
b3ctb3ZlcmxhcCcgPT4gXCRzaG93T3ZlcmxhcCwKKyAgICAnaHxoZWxwJyAgICAgICAgID0+IFwk
c2hvd0hlbHAsCisgICAgJ218bWVyZ2UnICAgICAgICA9PiBcJG91dHB1dE1lcmdlZEZpbGUsCisg
ICAgJ0x8bGFiZWw9cycgICAgICA9PiBcQGxhYmVscywKKyk7CisKK2lmIChzY2FsYXIoQEFSR1Yp
ICE9IDMpIHsKKyAgICBwcmludCBTVERFUlIgIkVSUk9SOiBFeGFjdGx5IDMgZmlsZXMgZXhwZWN0
ZWQgb24gY29tbWFuZCBsaW5lLCBnb3QgQHtbIHNjYWxhcihAQVJHVikgXX0uXG4iOworICAgIHVu
ZGVmICRnZXRPcHRpb25zUmVzdWx0OworfQorCitpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICRz
aG93SGVscCkgeworICAgIHByaW50IFNUREVSUiA8PF9fRU5EX187CitVc2FnZTogQHtbIGJhc2Vu
YW1lKCQwKSBdfSBbb3B0aW9uc10gZmlsZS5taW5lIGZpbGUucHJldmlvdXMgZmlsZS5uZXdlcgor
ICAtYXwtLXRleHQgICAgICAgICAgdHJlYXQgYWxsIGZpbGVzIGFzIHRleHQgZmlsZXMKKyAgLUV8
LS1zaG93LW92ZXJsYXAgIHdyaXRlIG91dCB1bm1lcmdlZCBjaGFuZ2VzIHdpdGggY29uZmxpY3Qg
bWFya2VycworICAtaHwtLWhlbHAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZQorICAt
bXwtLW1lcmdlICAgICAgICAgb3V0cHV0IG1lcmdlIHJlc3VsdHMgdG8gc3Rkb3V0CisgIC1MfC0t
bGFiZWw9c3RyaW5nICB1c2UgJ3N0cmluZycgYXMgdGhlIGxhYmVsIGZvciAobWluZSwgcHJldmlv
dXMsIG5ld2VyKSBmaWxlCitfX0VORF9fCisgICAgZXhpdCAxOworfQorCitteSAoJGZpbGVNaW5l
LCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSA9IEBBUkdWOworbXkgJG9yaWdpbmFsTmFtZSA9IGJh
c2VuYW1lKCRmaWxlTWluZSwgcXcoLnRtcCkpOworCisjIEhhbmRsZSBtZXJnaW5nIENoYW5nZUxv
ZyBmaWxlcyBieSBwYXRjaGluZyB3aXRoIGZ1enogbGV2ZWwgMworaWYgKCRvcmlnaW5hbE5hbWUg
ZXEgIkNoYW5nZUxvZyIpIHsKKyAgICBsb2NhbCAkLyA9IHVuZGVmOworCisgICAgb3BlbihESUZG
LCAiZGlmZiAtdSAkZmlsZU9sZGVyICRmaWxlTWluZSB8IikgfHwgZGllOworICAgIG15ICRwYXRj
aCA9IDxESUZGPjsKKyAgICBjbG9zZShESUZGKTsKKworICAgICMgUmVkaXJlY3QgcGF0Y2ggc3Rk
b3V0IHRvIHN0ZGVyciBzbyBpdCBkb2Vzbid0IGFwcGVhciBpbiB0aGUgbWVyZ2VkIGZpbGUgb3V0
cHV0IQorICAgIG9wZW4oUEFUQ0gsICJ8IHBhdGNoIC0tZnV6ej0zICRmaWxlTmV3ZXIgMT4mMiIp
IHx8IGRpZTsKKyAgICBwcmludCBQQVRDSCBmaXhDaGFuZ2VMb2dQYXRjaCgkcGF0Y2gpOworICAg
IGNsb3NlKFBBVENIKTsKKyAgICB1bmxpbmsoIiR7ZmlsZU5ld2VyfS5vcmlnIikgaWYgLWUgIiR7
ZmlsZU5ld2VyfS5vcmlnIjsKKworICAgIG9wZW4oRklMRSwgIjwgJGZpbGVOZXdlciIpOworICAg
IHByaW50IDxGSUxFPjsKKyAgICBjbG9zZShGSUxFKTsKKworICAgIGV4aXQgMDsKK30KKworIyBD
b3dhcmRseSByZWZ1c2UgdG8gbWVyZ2UgYW55dGhpbmcgb3RoZXIgdGhhbiBDaGFuZ2VMb2cgZmls
ZXMKK2V4aXQgMTsKKworc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpCit7CisgICAgbXkgJHBhdGNo
ID0gc2hpZnQ7CisgICAgbXkgJGNvbnRleHRMaW5lQ291bnQgPSAzOworCisgICAgcmV0dXJuICRw
YXRjaCBpZiAkcGF0Y2ggIX4gL1xuQEAgLTEsKFxkKykgXCsxLChcZCspIEBAXG4oIC4qXG4pKyhc
Ky4qXG4pKyggLipcbil7JGNvbnRleHRMaW5lQ291bnR9JC9tOworICAgIG15ICgkb2xkTGluZUNv
dW50LCAkbmV3TGluZUNvdW50KSA9ICgkMSwgJDIpOworICAgIHJldHVybiAkcGF0Y2ggaWYgJG9s
ZExpbmVDb3VudCA8PSAkY29udGV4dExpbmVDb3VudDsKKworICAgICMgVGhlIGRpZmYoMSkgY29t
bWFuZCBpcyBncmVlZHkgd2hlbiBtYXRjaGluZyBsaW5lcywgc28gYSBuZXcgQ2hhbmdlTG9nIGVu
dHJ5IHdpbGwKKyAgICAjIGhhdmUgbGluZXMgb2YgY29udGV4dCBhdCB0aGUgdG9wIG9mIGEgcGF0
Y2ggd2hlbiB0aGUgZXhpc3RpbmcgZW50cnkgaGFzIHRoZSBzYW1lCisgICAgIyBkYXRlIGFuZCBh
dXRob3IgYXMgdGhlIG5ldyBlbnRyeS4gIFRoaXMgbmlmdHkgbG9vcCBhbHRlcnMgYSBDaGFuZ2VM
b2cgcGF0Y2ggc28KKyAgICAjIHRoYXQgdGhlIGFkZGVkIGxpbmVzICgiKyIpIGluIHRoZSBwYXRj
aCBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAjIHBhdGNoIGFuZCB0
aGVyZSBhcmUgbm8gaW5pdGlhbCBsaW5lcyBvZiBjb250ZXh0LgorICAgIG15ICRuZXdQYXRjaDsK
KyAgICBteSAkbGluZUNvdW50SW5TdGF0ZSA9IDA7CisgICAgbXkgJG9sZENvbnRlbnRMaW5lQ291
bnRSZWR1Y3Rpb24gPSAkb2xkTGluZUNvdW50IC0gJGNvbnRleHRMaW5lQ291bnQ7CisgICAgbXkg
JG5ld0NvbnRlbnRMaW5lQ291bnRXaXRob3V0Q29udGV4dCA9ICRuZXdMaW5lQ291bnQgLSAkb2xk
TGluZUNvdW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb247CisgICAgbXkgKCRzdGF0
ZUhlYWRlciwgJHN0YXRlUHJlQ29udGV4dCwgJHN0YXRlTmV3Q2hhbmdlcywgJHN0YXRlUG9zdENv
bnRleHQpID0gKDEuLjQpOworICAgIG15ICRzdGF0ZSA9ICRzdGF0ZUhlYWRlcjsKKyAgICBmb3Jl
YWNoIG15ICRsaW5lIChzcGxpdCgvXG4vLCAkcGF0Y2gpKSB7CisgICAgICAgICRsaW5lQ291bnRJ
blN0YXRlKys7CisgICAgICAgIGlmICgkc3RhdGUgPT0gJHN0YXRlSGVhZGVyICYmICRsaW5lID1+
IC9eQEAgLTEsJG9sZExpbmVDb3VudCBcKzEsJG5ld0xpbmVDb3VudCBAXEAkLykgeworICAgICAg
ICAgICAgJGxpbmUgPSAiQEAgLTEsJGNvbnRleHRMaW5lQ291bnQgKzEsIiAuICgkbmV3TGluZUNv
dW50IC0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIC4gIiBAQCI7CisgICAgICAgICAg
ICAkbGluZUNvdW50SW5TdGF0ZSA9IDA7CisgICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVQcmVD
b250ZXh0OworICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlUHJlQ29udGV4dCAmJiBz
dWJzdHIoJGxpbmUsIDAsIDEpIGVxICIgIikgeworICAgICAgICAgICAgJGxpbmUgPSAiKyIgLiBz
dWJzdHIoJGxpbmUsIDEpOworICAgICAgICAgICAgaWYgKCRsaW5lQ291bnRJblN0YXRlID09ICRv
bGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uKSB7CisgICAgICAgICAgICAgICAgJGxpbmVDb3Vu
dEluU3RhdGUgPSAwOworICAgICAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZU5ld0NoYW5nZXM7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzaWYgKCRzdGF0ZSA9PSAkc3RhdGVOZXdDaGFu
Z2VzICYmIHN1YnN0cigkbGluZSwgMCwgMSkgZXEgIisiKSB7CisgICAgICAgICAgICAjIE5vIGNo
YW5nZXMgdG8gdGhlc2UgbGluZXMKKyAgICAgICAgICAgIGlmICgkbGluZUNvdW50SW5TdGF0ZSA9
PSAkbmV3Q29udGVudExpbmVDb3VudFdpdGhvdXRDb250ZXh0KSB7CisgICAgICAgICAgICAgICAg
JGxpbmVDb3VudEluU3RhdGUgPSAwOworICAgICAgICAgICAgICAgICRzdGF0ZSA9ICRzdGF0ZVBv
c3RDb250ZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0
YXRlUG9zdENvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDEpIGVx
ICIrIiAmJiAkbGluZUNvdW50SW5TdGF0ZSA8PSAkb2xkQ29udGVudExpbmVDb3VudFJlZHVjdGlv
bikgeworICAgICAgICAgICAgICAgICRsaW5lID0gIiAiIC4gc3Vic3RyKCRsaW5lLCAxKTsKKyAg
ICAgICAgICAgIH0gZWxzaWYgKCRsaW5lQ291bnRJblN0YXRlID4gJGNvbnRleHRMaW5lQ291bnQg
JiYgc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiICIpIHsKKyAgICAgICAgICAgICAgICBuZXh0OyAj
IERpc2NhcmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAkbmV3UGF0Y2ggLj0g
JGxpbmUgLiAiXG4iOworICAgIH0KKworICAgIHJldHVybiAkbmV3UGF0Y2g7Cit9CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBXZWJLaXRUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtZGlmZjMKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16855</attachid>
            <date>2007-10-25 00:27:17 -0700</date>
            <delta_ts>2007-10-26 00:21:55 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-15600-v2.diff</filename>
            <type>text/plain</type>
            <size>13354</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5NmQyOGYxLi4yOThjNmUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDctMTAt
MjQgIERhdmlkIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+CisKKyAgICAgICAgcHJlcGFy
ZS1DaGFuZ2VMb2cgYW5kIHVwZGF0ZS13ZWJraXQgY3JlYXRlIG5lZWRsZXNzIENoYW5nZUxvZyBj
b25mbGljdHMKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjAwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSByZXNvbHZlLUNoYW5nZUxvZyBzY3JpcHQgbWVyZ2VzIGNvbmZsaWN0ZWQgQ2hhbmdlTG9n
cyBpbiBzdm4gb3IgZ2l0IGJ5IGNyZWF0aW5nCisgICAgICAgIGEgcGF0Y2ggb2YgdGhlIGxvY2Fs
IGNoYW5nZXMgYW5kIGFwcGx5aW5nIGl0IHdpdGggYSBmdXp6IGxldmVsIG9mIDMgdG8gdGhlIG5l
dyBmaWxlLgorICAgICAgICBJZiB0aGUgcGF0Y2ggaXMgc3VjY2Vzc2Z1bCwgaXQgcnVucyAnc3Zu
IHJlc29sdmVkJyBvciAnZ2l0IGFkZCcgb24gdGhlIG5ldyBDaGFuZ2VMb2cKKyAgICAgICAgZmls
ZS4gIE5vdGUgdGhhdCBpdCBtYXkgYWxzbyBiZSB1c2VkIGFzIGEgc3RhbmQtYWxvbmUgc2NyaXB0
LgorCisgICAgICAgICogU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZzogQ2FsbCByZXNvbHZlLUNo
YW5nZUxvZ3MgZm9yIGNvbmZsaWN0ZWQgQ2hhbmdlTG9nIGZpbGVzLgorICAgICAgICAqIFNjcmlw
dHMvcmVzb2x2ZS1DaGFuZ2VMb2dzOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13
ZWJraXQ6IENhbGwgcmVzb2x2ZS1DaGFuZ2VMb2dzIGZvciBjb25mbGljdGVkIENoYW5nZUxvZyBm
aWxlcy4KKwogMjAwNy0xMC0yNCAgR2VvcmdlIFN0YWlrb3MgIDxzdGFpa29zQGtkZS5vcmc+CiAK
ICAgICAgICAgVW5icmVhayBRdCBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdl
TG9nCmluZGV4IGEwOTViZjcuLjNlZDBiZjQgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNo
YW5nZUxvZwpAQCAtMjY4LDEwICsyNjgsMjMgQEAgZm9yZWFjaCBteSAkcHJlZml4IChzb3J0IGtl
eXMgJWZpbGVzKSB7CiAKIGlmIChAbG9ncyAmJiAkdXBkYXRlQ2hhbmdlTG9ncyAmJiAkaXNTVk4p
IHsKICAgICBwcmludCBTVERFUlIgIiAgUnVubmluZyAnc3ZuIHVwZGF0ZScgdG8gdXBkYXRlIENo
YW5nZUxvZyBmaWxlcy5cbiI7Ci0gICAgb3BlbiBFUlJPUlMsICItfCIsICRTVk4sICJ1cGRhdGUi
LCAiLXEiLCBAbG9ncworICAgIG9wZW4gRVJST1JTLCAiLXwiLCAkU1ZOLCAidXBkYXRlIiwgQGxv
Z3MKICAgICAgICAgb3IgZGllICJUaGUgc3ZuIHVwZGF0ZSBvZiBDaGFuZ2VMb2cgZmlsZXMgZmFp
bGVkOiAkIS5cbiI7Ci0gICAgcHJpbnQgU1RERVJSICIgICAgJF8iIHdoaWxlIDxFUlJPUlM+Owor
ICAgIG15IEBjb25mbGljdGVkQ2hhbmdlTG9nczsKKyAgICB3aGlsZSAobXkgJGxpbmUgPSA8RVJS
T1JTPikgeworICAgICAgICBwcmludCBTVERFUlIgIiAgICAiLCAkbGluZTsKKyAgICAgICAgcHVz
aCBAY29uZmxpY3RlZENoYW5nZUxvZ3MsICQxIGlmICRsaW5lID1+IG0vXkNccysoLispXHMqJC87
CisgICAgfQogICAgIGNsb3NlIEVSUk9SUzsKKworICAgIGlmIChAY29uZmxpY3RlZENoYW5nZUxv
Z3MpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIEF0dGVtcHRpbmcgdG8gbWVyZ2UgY29uZmxp
Y3RlZCBDaGFuZ2VMb2dzLlxuIjsKKyAgICAgICAgbXkgJHJlc29sdmVDaGFuZ2VMb2dzUGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoZGlybmFtZSgkMCksICJyZXNvbHZlLUNoYW5nZUxvZ3MiKTsK
KyAgICAgICAgb3BlbiBSRVNPTFZFLCAiLXwiLCAkcmVzb2x2ZUNoYW5nZUxvZ3NQYXRoLCAiLS1u
by13YXJuaW5ncyIsIEBjb25mbGljdGVkQ2hhbmdlTG9ncworICAgICAgICAgICAgb3IgZGllICJD
b3VsZCBub3Qgb3BlbiByZXNvbHZlLUNoYW5nZUxvZ3Mgc2NyaXB0OiAkIS5cbiI7CisgICAgICAg
IHByaW50IFNUREVSUiAiICAgICRfIiB3aGlsZSA8UkVTT0xWRT47CisgICAgICAgIGNsb3NlIFJF
U09MVkU7CisgICAgfQogfQogCiAjIFdyaXRlIG91dCBhIG5ldyBDaGFuZ2VMb2cgZmlsZS4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcmVzb2x2ZS1DaGFuZ2VMb2dzIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMC4uMmNkNjEzZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvcmVzb2x2ZS1DaGFuZ2VMb2dzCkBAIC0wLDAgKzEsMjU0IEBACisjIS91c3IvYmluL3Blcmwg
LXcKKworIyBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBNZXJnZSBhbmQgcmVzb2x2ZSBDaGFu
Z2VMb2cgY29uZmxpY3RzIGZvciBzdm4gYW5kIGdpdCByZXBvc2l0b3JpZXMKKwordXNlIHN0cmlj
dDsKKwordXNlIEZpbmRCaW47Cit1c2UgbGliICRGaW5kQmluOjpCaW47CisKK3VzZSBGaWxlOjpC
YXNlbmFtZTsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgVkNTVXRpbHM7CisKK3N1YiBjb25mbGlj
dEZpbGVzKCQpOworc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOworc3ViIG1lcmdlQ2hhbmdlcygk
JCQpOworc3ViIHJlc29sdmVDb25mbGljdCgkKTsKKworbXkgJFNWTiA9ICJzdm4iOworbXkgJEdJ
VCA9ICJnaXQiOworCitteSAkcHJpbnRXYXJuaW5ncyA9IDE7CitteSAkc2hvd0hlbHA7CisKK215
ICRnZXRPcHRpb25zUmVzdWx0ID0gR2V0T3B0aW9ucygKKyAgICAnaHxoZWxwJyAgICAgICAgID0+
IFwkc2hvd0hlbHAsCisgICAgJ3d8d2FybmluZ3MhJyAgICA9PiBcJHByaW50V2FybmluZ3MsCisp
OworCitteSBAY2hhbmdlTG9nRmlsZXMgPSBncmVwIHsgYmFzZW5hbWUoJF8pIGVxICJDaGFuZ2VM
b2ciIH0gQEFSR1Y7CisKK2lmIChzY2FsYXIoQGNoYW5nZUxvZ0ZpbGVzKSAhPSBzY2FsYXIoQEFS
R1YpKSB7CisgICAgcHJpbnQgU1RERVJSICJFUlJPUjogRmlsZXMgbGlzdGVkIG9uIGNvbW1hbmQt
bGluZSB0aGF0IGFyZSBub3QgQ2hhbmdlTG9ncy5cbiI7CisgICAgdW5kZWYgJGdldE9wdGlvbnNS
ZXN1bHQ7Cit9IGVsc2lmIChzY2FsYXIoQGNoYW5nZUxvZ0ZpbGVzKSA9PSAwKSB7CisgICAgcHJp
bnQgU1RERVJSICJFUlJPUjogTm8gQ2hhbmdlTG9nIGZpbGVzIGxpc3RlZCBvbiBjb21tYW5kLWxp
bmUuXG4iOworICAgIHVuZGVmICRnZXRPcHRpb25zUmVzdWx0OworfQorCitpZiAoISRnZXRPcHRp
b25zUmVzdWx0IHx8ICRzaG93SGVscCkgeworICAgIHByaW50IFNUREVSUiA8PF9fRU5EX187CitV
c2FnZTogQHtbIGJhc2VuYW1lKCQwKSBdfSBbb3B0aW9uc10gcGF0aC90by9DaGFuZ2VMb2cgW3Bh
dGgvdG8vYW5vdGhlci9DaGFuZ2VMb2cgLi4uXQorICAtaHwtLWhlbHAgICAgICAgICAgIHNob3cg
dGhpcyBoZWxwIG1lc3NhZ2UKKyAgLXd8LS1bbm8tXXdhcm5pbmdzICBzaG93IG9yIHN1cHByZXNz
IHdhcm5pbmdzIChkZWZhdWx0OiBzaG93IHdhcm5pbmdzKQorX19FTkRfXworICAgIGV4aXQgMTsK
K30KKworZm9yIG15ICRmaWxlIChAY2hhbmdlTG9nRmlsZXMpIHsKKyAgICBteSAoJGZpbGVNaW5l
LCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSA9IGNvbmZsaWN0RmlsZXMoJGZpbGUpOworICAgIGlm
ICghJGZpbGVNaW5lIHx8ICEkZmlsZU9sZGVyIHx8ICEkZmlsZU5ld2VyKSB7CisgICAgICAgIG5l
eHQ7CisgICAgfQorICAgIGlmIChtZXJnZUNoYW5nZXMoJGZpbGVNaW5lLCAkZmlsZU9sZGVyLCAk
ZmlsZU5ld2VyKSkgeworICAgICAgICB1bmxpbmsoJGZpbGUpOworICAgICAgICByZW5hbWUoJGZp
bGVOZXdlciwgJGZpbGUpIHx8IGRpZTsKKyAgICAgICAgdW5saW5rKCRmaWxlTWluZSwgJGZpbGVP
bGRlcik7CisgICAgICAgIHJlc29sdmVDb25mbGljdCgkZmlsZSk7CisgICAgICAgIHByaW50ICJN
ICAgICR7ZmlsZX1cbiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkMgICAgJHtmaWxl
fVxuIjsKKyAgICAgICAgcHJpbnQgU1RERVJSICJXQVJOSU5HOiAke2ZpbGV9IGNvdWxkIG5vdCBi
ZSBtZXJnZWQgdXNpbmcgZnV6eiBsZXZlbCAzLlxuIiBpZiAkcHJpbnRXYXJuaW5nczsKKyAgICAg
ICAgdW5saW5rKCRmaWxlTWluZSwgJGZpbGVPbGRlciwgJGZpbGVOZXdlcikgaWYgaXNHaXQoKTsK
KyAgICB9Cit9CisKK2V4aXQgMDsKKworc3ViIGNvbmZsaWN0RmlsZXMoJCkKK3sKKyAgICBteSAo
JGZpbGUpID0gQF87CisgICAgbXkgJGZpbGVNaW5lOworICAgIG15ICRmaWxlT2xkZXI7CisgICAg
bXkgJGZpbGVOZXdlcjsKKworICAgIGlmIChpc1NWTigpKSB7CisgICAgICAgIG9wZW4gU1RBVCwg
Ii18IiwgJFNWTiwgInN0YXR1cyIsICRmaWxlIHx8IGRpZTsKKyAgICAgICAgbXkgJHN0YXR1cyA9
IDxTVEFUPjsKKyAgICAgICAgY2xvc2UgU1RBVDsKKyAgICAgICAgaWYgKCEkc3RhdHVzIHx8ICRz
dGF0dXMgIX4gbS9eQ1xzKy8pIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzog
JHtmaWxlfSBpcyBub3QgaW4gYSBjb25mbGljdGVkIHN0YXRlLlxuIiBpZiAkcHJpbnRXYXJuaW5n
czsKKyAgICAgICAgICAgIHJldHVybiAoKTsKKyAgICAgICAgfQorCisgICAgICAgICRmaWxlTWlu
ZSA9ICIke2ZpbGV9Lm1pbmUiIGlmIC1lICIke2ZpbGV9Lm1pbmUiOworCisgICAgICAgIG15ICRj
dXJyZW50UmV2aXNpb247CisgICAgICAgIG9wZW4gSU5GTywgIi18IiwgJFNWTiwgImluZm8iLCAk
ZmlsZSB8fCBkaWU7CisgICAgICAgIHdoaWxlIChteSAkbGluZSA9IDxJTkZPPikgeworICAgICAg
ICAgICAgJGN1cnJlbnRSZXZpc2lvbiA9ICQxIGlmICRsaW5lID1+IG0vXlJldmlzaW9uOiAoWzAt
OV0rKS87CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UgSU5GTzsKKyAgICAgICAgJGZpbGVOZXdl
ciA9ICIke2ZpbGV9LnIke2N1cnJlbnRSZXZpc2lvbn0iIGlmIC1lICIke2ZpbGV9LnIke2N1cnJl
bnRSZXZpc2lvbn0iOworCisgICAgICAgIG15IEBtYXRjaGluZ0ZpbGVzID0gZ3JlcCB7ICRfIG5l
ICRmaWxlTmV3ZXIgfSBnbG9iKCIke2ZpbGV9LnJbMC05XVswLTldKiIpOworICAgICAgICBpZiAo
c2NhbGFyKEBtYXRjaGluZ0ZpbGVzKSA+IDEpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAi
V0FSTklORzogVG9vIG1hbnkgY29uZmxpY3QgZmlsZXMgZXhpc3QgZm9yICR7ZmlsZX0hXG4iIGlm
ICRwcmludFdhcm5pbmdzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGZpbGVPbGRl
ciA9IHNoaWZ0IEBtYXRjaGluZ0ZpbGVzOworICAgICAgICB9CisgICAgfSBlbHNpZiAoaXNHaXQo
KSkgeworICAgICAgICBteSAkZ2l0UHJlZml4ID0gYCRHSVQgcmV2LXBhcnNlIC0tc2hvdy1wcmVm
aXhgOworICAgICAgICBjaG9tcCAkZ2l0UHJlZml4OworICAgICAgICBvcGVuIEdJVCwgIi18Iiwg
JEdJVCwgImxzLWZpbGVzIiwgIi0tdW5tZXJnZWQiLCAkZmlsZSB8fCBkaWU7CisgICAgICAgIHdo
aWxlIChteSAkbGluZSA9IDxHSVQ+KSB7CisgICAgICAgICAgICBteSAoJG1vZGUsICRoYXNoLCAk
c3RhZ2UsICRmaWxlTmFtZSkgPSBzcGxpdCgnICcsICRsaW5lKTsKKyAgICAgICAgICAgIG15ICRv
dXRwdXRGaWxlOworICAgICAgICAgICAgaWYgKCRzdGFnZSA9PSAxKSB7CisgICAgICAgICAgICAg
ICAgJGZpbGVPbGRlciA9ICIke2ZpbGV9LkJBU0UuJCQiOworICAgICAgICAgICAgICAgICRvdXRw
dXRGaWxlID0gJGZpbGVPbGRlcjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRzdGFnZSA9PSAyKSB7
CisgICAgICAgICAgICAgICAgJGZpbGVOZXdlciA9ICIke2ZpbGV9LkxPQ0FMLiQkIjsKKyAgICAg
ICAgICAgICAgICAkb3V0cHV0RmlsZSA9ICRmaWxlTmV3ZXI7CisgICAgICAgICAgICB9IGVsc2lm
ICgkc3RhZ2UgPT0gMykgeworICAgICAgICAgICAgICAgICRmaWxlTWluZSA9ICIke2ZpbGV9LlJF
TU9URS4kJCI7CisgICAgICAgICAgICAgICAgJG91dHB1dEZpbGUgPSAkZmlsZU1pbmU7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpZSAiVW5rbm93biBmaWxlIHN0YWdl
OiAkc3RhZ2UiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3lzdGVtKCIkR0lUIGNhdC1m
aWxlIGJsb2IgOiR7c3RhZ2V9OiR7Z2l0UHJlZml4fSR7ZmlsZX0gPiAkb3V0cHV0RmlsZSIpOwor
ICAgICAgICB9CisgICAgICAgIGNsb3NlIEdJVDsKKyAgICB9IGVsc2UgeworICAgICAgICBkaWUg
IlVua25vd24gdmVyc2lvbiBjb250cm9sIHN5c3RlbSI7CisgICAgfQorCisgICAgaWYgKCEkZmls
ZU1pbmUgJiYgISRmaWxlT2xkZXIgJiYgISRmaWxlTmV3ZXIpIHsKKyAgICAgICAgcHJpbnQgU1RE
RVJSICJXQVJOSU5HOiAke2ZpbGV9IGRvZXMgbm90IG5lZWQgbWVyZ2luZy5cbiIgaWYgJHByaW50
V2FybmluZ3M7CisgICAgfSBlbHNpZiAoISRmaWxlTWluZSB8fCAhJGZpbGVPbGRlciB8fCAhJGZp
bGVOZXdlcikgeworICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6ICR7ZmlsZX0gaXMgbWlz
c2luZyBzb21lIGNvbmZsaWN0IGZpbGVzLlxuIiBpZiAkcHJpbnRXYXJuaW5nczsKKyAgICB9CisK
KyAgICByZXR1cm4gKCRmaWxlTWluZSwgJGZpbGVPbGRlciwgJGZpbGVOZXdlcik7Cit9CisKK3N1
YiBmaXhDaGFuZ2VMb2dQYXRjaCgkKQoreworICAgIG15ICRwYXRjaCA9IHNoaWZ0OworICAgIG15
ICRjb250ZXh0TGluZUNvdW50ID0gMzsKKworICAgIHJldHVybiAkcGF0Y2ggaWYgJHBhdGNoICF+
IC9cbkBAIC0xLChcZCspIFwrMSwoXGQrKSBAQFxuKCAuKlxuKSsoXCsuKlxuKSsoIC4qXG4peyRj
b250ZXh0TGluZUNvdW50fSQvbTsKKyAgICBteSAoJG9sZExpbmVDb3VudCwgJG5ld0xpbmVDb3Vu
dCkgPSAoJDEsICQyKTsKKyAgICByZXR1cm4gJHBhdGNoIGlmICRvbGRMaW5lQ291bnQgPD0gJGNv
bnRleHRMaW5lQ291bnQ7CisKKyAgICAjIFRoZSBkaWZmKDEpIGNvbW1hbmQgaXMgZ3JlZWR5IHdo
ZW4gbWF0Y2hpbmcgbGluZXMsIHNvIGEgbmV3IENoYW5nZUxvZyBlbnRyeSB3aWxsCisgICAgIyBo
YXZlIGxpbmVzIG9mIGNvbnRleHQgYXQgdGhlIHRvcCBvZiBhIHBhdGNoIHdoZW4gdGhlIGV4aXN0
aW5nIGVudHJ5IGhhcyB0aGUgc2FtZQorICAgICMgZGF0ZSBhbmQgYXV0aG9yIGFzIHRoZSBuZXcg
ZW50cnkuICBUaGlzIG5pZnR5IGxvb3AgYWx0ZXJzIGEgQ2hhbmdlTG9nIHBhdGNoIHNvCisgICAg
IyB0aGF0IHRoZSBhZGRlZCBsaW5lcyAoIisiKSBpbiB0aGUgcGF0Y2ggYWx3YXlzIHN0YXJ0IGF0
IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisgICAgIyBwYXRjaCBhbmQgdGhlcmUgYXJlIG5vIGluaXRp
YWwgbGluZXMgb2YgY29udGV4dC4KKyAgICBteSAkbmV3UGF0Y2g7CisgICAgbXkgJGxpbmVDb3Vu
dEluU3RhdGUgPSAwOworICAgIG15ICRvbGRDb250ZW50TGluZUNvdW50UmVkdWN0aW9uID0gJG9s
ZExpbmVDb3VudCAtICRjb250ZXh0TGluZUNvdW50OworICAgIG15ICRuZXdDb250ZW50TGluZUNv
dW50V2l0aG91dENvbnRleHQgPSAkbmV3TGluZUNvdW50IC0gJG9sZExpbmVDb3VudCAtICRvbGRD
b250ZW50TGluZUNvdW50UmVkdWN0aW9uOworICAgIG15ICgkc3RhdGVIZWFkZXIsICRzdGF0ZVBy
ZUNvbnRleHQsICRzdGF0ZU5ld0NoYW5nZXMsICRzdGF0ZVBvc3RDb250ZXh0KSA9ICgxLi40KTsK
KyAgICBteSAkc3RhdGUgPSAkc3RhdGVIZWFkZXI7CisgICAgZm9yZWFjaCBteSAkbGluZSAoc3Bs
aXQoL1xuLywgJHBhdGNoKSkgeworICAgICAgICAkbGluZUNvdW50SW5TdGF0ZSsrOworICAgICAg
ICBpZiAoJHN0YXRlID09ICRzdGF0ZUhlYWRlciAmJiAkbGluZSA9fiAvXkBAIC0xLCRvbGRMaW5l
Q291bnQgXCsxLCRuZXdMaW5lQ291bnQgQFxAJC8pIHsKKyAgICAgICAgICAgICRsaW5lID0gIkBA
IC0xLCRjb250ZXh0TGluZUNvdW50ICsxLCIgLiAoJG5ld0xpbmVDb3VudCAtICRvbGRDb250ZW50
TGluZUNvdW50UmVkdWN0aW9uKSAuICIgQEAiOworICAgICAgICAgICAgJGxpbmVDb3VudEluU3Rh
dGUgPSAwOworICAgICAgICAgICAgJHN0YXRlID0gJHN0YXRlUHJlQ29udGV4dDsKKyAgICAgICAg
fSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVByZUNvbnRleHQgJiYgc3Vic3RyKCRsaW5lLCAwLCAx
KSBlcSAiICIpIHsKKyAgICAgICAgICAgICRsaW5lID0gIisiIC4gc3Vic3RyKCRsaW5lLCAxKTsK
KyAgICAgICAgICAgIGlmICgkbGluZUNvdW50SW5TdGF0ZSA9PSAkb2xkQ29udGVudExpbmVDb3Vu
dFJlZHVjdGlvbikgeworICAgICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRlID0gMDsKKyAg
ICAgICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVOZXdDaGFuZ2VzOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2lmICgkc3RhdGUgPT0gJHN0YXRlTmV3Q2hhbmdlcyAmJiBzdWJzdHIoJGxp
bmUsIDAsIDEpIGVxICIrIikgeworICAgICAgICAgICAgIyBObyBjaGFuZ2VzIHRvIHRoZXNlIGxp
bmVzCisgICAgICAgICAgICBpZiAoJGxpbmVDb3VudEluU3RhdGUgPT0gJG5ld0NvbnRlbnRMaW5l
Q291bnRXaXRob3V0Q29udGV4dCkgeworICAgICAgICAgICAgICAgICRsaW5lQ291bnRJblN0YXRl
ID0gMDsKKyAgICAgICAgICAgICAgICAkc3RhdGUgPSAkc3RhdGVQb3N0Q29udGV4dDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJHN0YXRlID09ICRzdGF0ZVBvc3RDb250ZXh0KSB7
CisgICAgICAgICAgICBpZiAoc3Vic3RyKCRsaW5lLCAwLCAxKSBlcSAiKyIgJiYgJGxpbmVDb3Vu
dEluU3RhdGUgPD0gJG9sZENvbnRlbnRMaW5lQ291bnRSZWR1Y3Rpb24pIHsKKyAgICAgICAgICAg
ICAgICAkbGluZSA9ICIgIiAuIHN1YnN0cigkbGluZSwgMSk7CisgICAgICAgICAgICB9IGVsc2lm
ICgkbGluZUNvdW50SW5TdGF0ZSA+ICRjb250ZXh0TGluZUNvdW50ICYmIHN1YnN0cigkbGluZSwg
MCwgMSkgZXEgIiAiKSB7CisgICAgICAgICAgICAgICAgbmV4dDsgIyBEaXNjYXJkCisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgJG5ld1BhdGNoIC49ICRsaW5lIC4gIlxuIjsKKyAg
ICB9CisKKyAgICByZXR1cm4gJG5ld1BhdGNoOworfQorCitzdWIgbWVyZ2VDaGFuZ2VzKCQkJCkK
K3sKKyAgICBteSAoJGZpbGVNaW5lLCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSA9IEBfOworCisg
ICAgbG9jYWwgJC8gPSB1bmRlZjsKKworICAgIG9wZW4oRElGRiwgImRpZmYgLXUgJGZpbGVPbGRl
ciAkZmlsZU1pbmUgfCIpIHx8IGRpZTsKKyAgICBteSAkcGF0Y2ggPSA8RElGRj47CisgICAgY2xv
c2UoRElGRik7CisKKyAgICB1bmxpbmsoIiR7ZmlsZU5ld2VyfS5vcmlnIik7CisgICAgdW5saW5r
KCIke2ZpbGVOZXdlcn0ucmVqIik7CisKKyAgICBvcGVuKFBBVENILCAifCBwYXRjaCAtLWZ1eno9
MyAkZmlsZU5ld2VyID4gL2Rldi9udWxsIikgfHwgZGllOworICAgIHByaW50IFBBVENIIGZpeENo
YW5nZUxvZ1BhdGNoKCRwYXRjaCk7CisgICAgY2xvc2UoUEFUQ0gpOworCisgICAgIyBSZWZ1c2Ug
dG8gbWVyZ2UgdGhlIHBhdGNoIGlmIGl0IGRpZCBub3QgYXBwbHkgY2xlYW5seQorICAgIGlmICgt
ZSAiJHtmaWxlTmV3ZXJ9LnJlaiIpIHsKKyAgICAgICAgdW5saW5rKCIke2ZpbGVOZXdlcn0ucmVq
Iik7CisgICAgICAgIHVubGluaygkZmlsZU5ld2VyKTsKKyAgICAgICAgcmVuYW1lKCIke2ZpbGVO
ZXdlcn0ub3JpZyIsICRmaWxlTmV3ZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICB1bmxpbmsoIiR7ZmlsZU5ld2VyfS5vcmlnIik7CisKKyAgICByZXR1cm4gMTsKK30KKworc3Vi
IHJlc29sdmVDb25mbGljdCgkKQoreworICAgIG15ICgkZmlsZSkgPSBAXzsKKworICAgIGlmIChp
c1NWTigpKSB7CisgICAgICAgIHN5c3RlbSgkU1ZOLCAicmVzb2x2ZWQiLCAkZmlsZSk7CisgICAg
fSBlbHNpZiAoaXNHaXQoKSkgeworICAgICAgICBzeXN0ZW0oJEdJVCwgImFkZCIsICRmaWxlKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBkaWUgIlVua25vd24gdmVyc2lvbiBjb250cm9sIHN5c3Rl
bSI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Vi
a2l0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0CmluZGV4IGUyMDZkMzIuLjA4
YTVhNTEgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQKQEAgLTMyLDkgKzMyLDEyIEBAIHVz
ZSBzdHJpY3Q7CiB1c2UgRmluZEJpbjsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSBGaWxl
OjpCYXNlbmFtZTsKK3VzZSBGaWxlOjpTcGVjOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSB3ZWJr
aXRkaXJzOwogCitzdWIgcnVuU3ZuVXBkYXRlKCk7CisKICMgSGFuZGxlIG9wdGlvbnMKIG15ICRx
dWlldCA9ICcnOwogbXkgJHNob3dIZWxwOwpAQCAtNTgsNyArNjEsNyBAQCBwdXNoIEBzdm5PcHRp
b25zLCAnLXEnIGlmICRxdWlldDsKIAogY2hkaXJXZWJLaXQoKTsKIHByaW50ICJVcGRhdGluZyBP
cGVuU291cmNlXG4iIHVubGVzcyAkcXVpZXQ7Ci0oc3lzdGVtKCJzdm4iLCAidXBkYXRlIiwgQHN2
bk9wdGlvbnMpID09IDApIG9yIGRpZTsKK3J1blN2blVwZGF0ZSgpOwogaWYgKGlzQ3lnd2luKCkp
IHsKICAgICAoc3lzdGVtKCJwZXJsIiwgIldlYktpdFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtp
dC1hdXhpbGlhcnktbGlicyIpID09IDApIG9yIGRpZTsKIH0KQEAgLTY2LDUgKzY5LDI1IEBAIGlm
IChpc0N5Z3dpbigpKSB7CiBpZiAoLWQgIi4uL0ludGVybmFsIikgewogICAgIGNoZGlyKCIuLi9J
bnRlcm5hbCIpOwogICAgIHByaW50ICJVcGRhdGluZyBJbnRlcm5hbFxuIiB1bmxlc3MgJHF1aWV0
OwotICAgIChzeXN0ZW0oInN2biIsICJ1cGRhdGUiLCBAc3ZuT3B0aW9ucykgPT0gMCkgb3IgZGll
OworICAgIHJ1blN2blVwZGF0ZSgpOworfQorCitleGl0IDA7CisKK3N1YiBydW5Tdm5VcGRhdGUo
KQoreworICAgIG9wZW4gVVBEQVRFLCAiLXwiLCAic3ZuIiwgInVwZGF0ZSIsIEBzdm5PcHRpb25z
IG9yIGRpZTsKKyAgICBteSBAY29uZmxpY3RlZENoYW5nZUxvZ3M7CisgICAgd2hpbGUgKG15ICRs
aW5lID0gPFVQREFURT4pIHsKKyAgICAgICAgcHJpbnQgJGxpbmU7CisgICAgICAgIHB1c2ggQGNv
bmZsaWN0ZWRDaGFuZ2VMb2dzLCAkMSBpZiAkbGluZSA9fiBtL15DXHMrKC4rKVxzKiQvICYmIGJh
c2VuYW1lKCQxKSBlcSAiQ2hhbmdlTG9nIjsKKyAgICB9CisgICAgY2xvc2UgVVBEQVRFOworCisg
ICAgaWYgKEBjb25mbGljdGVkQ2hhbmdlTG9ncykgeworICAgICAgICBwcmludCAiQXR0ZW1wdGlu
ZyB0byBtZXJnZSBjb25mbGljdGVkIENoYW5nZUxvZ3MuLi5cbiI7CisgICAgICAgIG15ICRyZXNv
bHZlQ2hhbmdlTG9nc1BhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKGRpcm5hbWUoJDApLCAicmVz
b2x2ZS1DaGFuZ2VMb2dzIik7CisgICAgICAgIChzeXN0ZW0oJHJlc29sdmVDaGFuZ2VMb2dzUGF0
aCwgIi0tbm8td2FybmluZ3MiLCBAY29uZmxpY3RlZENoYW5nZUxvZ3MpID09IDApCisgICAgICAg
ICAgICBvciBkaWUgIkNvdWxkIG5vdCBvcGVuIHJlc29sdmUtQ2hhbmdlTG9ncyBzY3JpcHQ6ICQh
LlxuIjsKKyAgICB9CiB9Cg==
</data>
<flag name="review"
          id="7135"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>