<?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>75707</bug_id>
          
          <creation_ts>2012-01-06 09:10:49 -0800</creation_ts>
          <short_desc>[Windows] Many css2.1 tests fail on Apple&apos;s Windows port under NRWT</short_desc>
          <delta_ts>2013-05-28 16:20:35 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NRWT, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38756</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>abarth</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531094</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-06 09:10:49 -0800</bug_when>
    <thetext>To reproduce (after working around bug 64468):

1. new-run-webkit-tests css2.1

Many tests fail. Compare this to &quot;old-run-webkit-tests css2.1&quot;, where all the tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531095</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-01-06 09:11:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/10654655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531096</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-06 09:12:23 -0800</bug_when>
    <thetext>It looks like NRWT doesn&apos;t support epilogues/prologues like ORWT does, which we use to set up custom font fallback for tests in the css2.1 and svg/W3C-SVG-1.1 directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531097</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-06 09:12:52 -0800</bug_when>
    <thetext>ORWT&apos;s support was added in http://trac.webkit.org/changeset/29822</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531151</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-06 10:34:25 -0800</bug_when>
    <thetext>Wow.  I never knew these existed!  I guess they&apos;re only used for Win currently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531215</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-06 11:46:38 -0800</bug_when>
    <thetext>Yes, I think only Windows uses them currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531362</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-06 13:50:50 -0800</bug_when>
    <thetext>Hm. This is a problematic feature in the face of parallelism.

How would this be supposed to work with multiple DRTs running at the same time? Does the persistent user style sheet affect any DRT running on the machine, or is it only in memory? I.e., how do I keep this from affecting DRTs running tests in other directories?

I&apos;m actually working on a slightly different approach to this sort of thing where NRWT will change the command line flags passed to the process on a per-directory configurable basis (as part of getting rid of the chromium GPU configuration).

Could we maybe do something like that instead where every test would be told to do something different before/after/during the test but it was in-memory?

Failing that, given that this seems to only be used on the Windows port at the moment, I suggest we hack this into the windows Driver.run_test() to detect when it&apos;s entering and leaving directories with these files, and fix the windows # of workers at 1 until we can figure out a better way to get this sort of functionality.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531379</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-06 14:01:50 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Hm. This is a problematic feature in the face of parallelism.
&gt; 
&gt; How would this be supposed to work with multiple DRTs running at the same time? Does the persistent user style sheet affect any DRT running on the machine, or is it only in memory? I.e., how do I keep this from affecting DRTs running tests in other directories?

Right now I think it gets persisted out to disk with the rest of DRT&apos;s preferences, but I don&apos;t think that is a requirement. In fact, it&apos;s probably an accident that DRT&apos;s preferences get written to disk. So I don&apos;t think this presents a problem for concurrent testing, as long as we stop writing out preferences to disk.

&gt; Could we maybe do something like that instead where every test would be told to do something different before/after/during the test but it was in-memory?

Perhaps. Presumably that would require DRT changes. I also wonder if it would slow things down, since we&apos;d be loading 3 files (prologue + test + epilogue) for every css2.1 test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531385</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-06 14:07:21 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Hm. This is a problematic feature in the face of parallelism.
&gt; &gt; 
&gt; &gt; How would this be supposed to work with multiple DRTs running at the same time? Does the persistent user style sheet affect any DRT running on the machine, or is it only in memory? I.e., how do I keep this from affecting DRTs running tests in other directories?
&gt; 
&gt; Right now I think it gets persisted out to disk with the rest of DRT&apos;s preferences, but I don&apos;t think that is a requirement. In fact, it&apos;s probably an accident that DRT&apos;s preferences get written to disk. So I don&apos;t think this presents a problem for concurrent testing, as long as we stop writing out preferences to disk.
&gt; 
&gt; &gt; Could we maybe do something like that instead where every test would be told to do something different before/after/during the test but it was in-memory?
&gt; 
&gt; Perhaps. Presumably that would require DRT changes. I also wonder if it would slow things down, since we&apos;d be loading 3 files (prologue + test + epilogue) for every css2.1 test.

The general model I have in mind is that the command lines would potentially change per directory, and so when DRT was handed a test in a new directory, it would get restarted with the change. 

So, for something like this we could add a --use-user-style=$foo flag (or some equivalent) for this directory, and any test run in that directory would get handed that flag. We could add a more general --prologue and --epilogue flags to run those files on startup and shutdown (and the epilogue might not even be needed if the scripts weren&apos;t changing persistent settings).

Obviously this would require some DRT changes, but it doesn&apos;t seem like they&apos;d be too bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532234</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-09 09:07:46 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; The general model I have in mind is that the command lines would potentially change per directory, and so when DRT was handed a test in a new directory, it would get restarted with the change. 

I wonder what effect this would have on performance for directories that don&apos;t contain many tests? I guess we could optimize by comparing the old and new command lines and just reusing the existing DRT if they are the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532280</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-09 10:29:40 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; The general model I have in mind is that the command lines would potentially change per directory, and so when DRT was handed a test in a new directory, it would get restarted with the change. 
&gt; 
&gt; I wonder what effect this would have on performance for directories that don&apos;t contain many tests? I guess we could optimize by comparing the old and new command lines and just reusing the existing DRT if they are the same.

Right, that was what I had in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532345</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-09 11:17:36 -0800</bug_when>
    <thetext>Alternately, we could just hard-code this logic into Apple&apos;s WIN DRT and save ourselves a lot of work of trying to make this general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893360</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-24 10:20:22 -0700</bug_when>
    <thetext>It appears that the only cases where the prologue/epilogue feature is being used is to support the setting of a persistent user style sheet.  No other ports appear to be using this feature.

Given that roughly five years have passed since this mechanism was created with no additional use cases, I think it makes sense to build this into Window&apos;s DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894223</commentid>
    <comment_count>13</comment_count>
      <attachid>203022</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-27 23:02:38 -0700</bug_when>
    <thetext>Created attachment 203022
Initial work in progress. UTF-8 encoding is not being handled properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894374</commentid>
    <comment_count>14</comment_count>
      <attachid>203022</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-28 09:09:50 -0700</bug_when>
    <thetext>Comment on attachment 203022
Initial work in progress. UTF-8 encoding is not being handled properly.

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

r=me if you fix the storage leak

&gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:962
&gt; +String createPathIfURLHasLogueDirectory(const CFURLRef&amp; url)

Crazy use of the word “logue” here to mean prologue or epilogue!?

Type here should just be CFURLRef, not const CFURLRef&amp;.

&gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:967
&gt; +        return &quot;&quot;;

empytString() is the more efficient alternative to &quot;&quot; when returning a String.

&gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:971
&gt; +    UInt8* buffer = new UInt8[length];

This buffer leaks. One fix is to use an OwnArrayPtr. Another is to use Vector&lt;UInt8&gt;.

&gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:973
&gt; +    if (-1 == length)

Normally we don’t do the “constant on the left” thing like this. Also, it’s impossible for CFURLGetBytes to return length if we are passing it a length we got from calling it the first time, so this check is guaranteed dead code.

&gt; Tools/DumpRenderTree/win/DumpRenderTree.cpp:978
&gt; +    String loguePath(buffer + pathRange.location, pathRange.length);
&gt; +
&gt; +    loguePath = WebCore::pathByAppendingComponent(loguePath, &quot;resources/&quot;);

Seems like we could do this with CFURL and CFString functions rather than dropping into WebCore internal types to do it.

CFURLCreateCopyAppendingPathComponent and CFURLGetFileSystemRepresentation could be used to do the job this function does without involving the CFURLGetByte functions.

But I suppose this is OK as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894467</commentid>
    <comment_count>15</comment_count>
      <attachid>203080</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-28 13:03:49 -0700</bug_when>
    <thetext>Created attachment 203080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894468</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-28 13:04:36 -0700</bug_when>
    <thetext>The attached patch permits the css2.1 tests to now pass under NRWT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894483</commentid>
    <comment_count>17</comment_count>
      <attachid>203080</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-28 13:34:55 -0700</bug_when>
    <thetext>Comment on attachment 203080
Patch

Attachment 203080 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/738123</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894517</commentid>
    <comment_count>18</comment_count>
      <attachid>203088</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-28 14:28:27 -0700</bug_when>
    <thetext>Created attachment 203088
Updated to include export definition changes needed for clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894520</commentid>
    <comment_count>19</comment_count>
      <attachid>203088</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-28 14:33:16 -0700</bug_when>
    <thetext>Comment on attachment 203088
Updated to include export definition changes needed for clean build.

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

I’d like to see these patches make less use of internal WebCore data structures and functions.

&gt; Source/WebKit/ChangeLog:9
&gt; +        * WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:
&gt; +        Export the WebCore::directoryName method for use by DRT.

I don’t think this is a step in the right direction. Ideally DumpRenderTree is “outside WebKit” code, and we should not be exporting more functions for it to use. Especially functions that are just file system helpers that have no special WebKit magic in them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894591</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-28 16:17:55 -0700</bug_when>
    <thetext>Committed r150851: &lt;http://trac.webkit.org/changeset/150851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894594</commentid>
    <comment_count>21</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-28 16:20:35 -0700</bug_when>
    <thetext>See Bug 116898 to reduce use of private WebCore methods.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203022</attachid>
            <date>2013-05-27 23:02:38 -0700</date>
            <delta_ts>2013-05-28 13:03:46 -0700</delta_ts>
            <desc>Initial work in progress. UTF-8 encoding is not being handled properly.</desc>
            <filename>bug-75707-20130527230118.patch</filename>
            <type>text/plain</type>
            <size>3540</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MDc4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTA1LTI3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2luZG93c10gTWFueSBDU1MyLjEgdGVzdHMgZmFpbCB1bmRlciBOUldU
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChjcmVhdGVQYXRoSWZV
UkxIYXNMb2d1ZURpcmVjdG9yeSk6IEFkZGVkCisgICAgICAgIChwcm9jZXNzUHJvbG9ndWVJZlBy
ZXNlbnQpOiBBZGRlZAorICAgICAgICAocHJvY2Vzc0VwaWxvZ3VlSWZQcmVzZW50KTogQWRkZWQK
KyAgICAgICAgKHJ1blRlc3QpOiBTZXQgdXAgcHJvbG9ndWUvZXBpbG9ndWUgaWYgcHJlc2VudAor
CiAyMDEzLTA1LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFlldCBhbm90aGVyIFdLUiBidWlsZCBmaXguIFNvcnJ5IGZvciB0aGUgbWVzcy4gSXQgc2VlbXMg
bGlrZSBJIGNhbid0IHdpbiB0b2RheSA6KApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiAxNTA3ODUpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTksNiAr
OTU5LDU4IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogICAgIDo6
U2V0V2luZG93UG9zKHdlYlZpZXdXaW5kb3csIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIFNXUF9O
T01PVkUpOwogfQogCitTdHJpbmcgY3JlYXRlUGF0aElmVVJMSGFzTG9ndWVEaXJlY3RvcnkoY29u
c3QgQ0ZVUkxSZWYmIHVybCkKK3sKKyAgICBDRlJhbmdlIHJhbmdlSW5jbHVkaW5nU2VwYXJhdG9y
czsKKyAgICBDRlJhbmdlIHBhdGhSYW5nZSA9IENGVVJMR2V0Qnl0ZVJhbmdlRm9yQ29tcG9uZW50
KHVybCwga0NGVVJMQ29tcG9uZW50UGF0aCwgJnJhbmdlSW5jbHVkaW5nU2VwYXJhdG9ycyk7Cisg
ICAgaWYgKHBhdGhSYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
ICIiOworCisgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7CisK
KyAgICBVSW50OCogYnVmZmVyID0gbmV3IFVJbnQ4W2xlbmd0aF07CisgICAgbGVuZ3RoID0gQ0ZV
UkxHZXRCeXRlcyh1cmwsIGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICBpZiAoLTEgPT0gbGVuZ3RoKQor
ICAgICAgICByZXR1cm4gIiI7IC8vIFNvbWV0aGluZyB3ZW50IHZlcnkgd3JvbmcKKworICAgIFN0
cmluZyBsb2d1ZVBhdGgoYnVmZmVyICsgcGF0aFJhbmdlLmxvY2F0aW9uLCBwYXRoUmFuZ2UubGVu
Z3RoKTsKKworICAgIGxvZ3VlUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChsb2d1ZVBhdGgsICJyZXNvdXJjZXMvIik7CisKKyAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNX
KGxvZ3VlUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkKKyAgICAgICAgcmV0
dXJuICIiOworCisgICAgcmV0dXJuIGxvZ3VlUGF0aDsKK30KKworc3RhdGljIHZvaWQgcHJvY2Vz
c1Byb2xvZ3VlSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgcHJvbG9ndWVQYXRoKQoreworICAgIGlm
ICghcHJvbG9ndWVQYXRoKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgcHJvbG9ndWUg
PSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocHJvbG9ndWVQYXRoLCAicnVuLXdl
YmtpdC10ZXN0cy1wcm9sb2d1ZS5odG1sIik7CisKKyAgICBpZiAoITo6UGF0aEZpbGVFeGlzdHNX
KHByb2xvZ3VlLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHByb2xvZ3VlLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsK
KworICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oZm9udEZhbGxiYWNr
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBwcm9jZXNzRXBpbG9n
dWVJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBlcGlsb2d1ZVBhdGgpCit7CisgICAgaWYgKCFlcGls
b2d1ZVBhdGgpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBlcGlsb2d1ZSA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChlcGlsb2d1ZVBhdGgsICJydW4td2Via2l0LXRl
c3RzLXByb2xvZ3VlLmh0bWwiKTsKKworICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZXBpbG9n
dWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oMCk7Cit9CisKIHN0YXRp
YyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dExpbmUpCiB7CiAgICAgVGVzdENvbW1h
bmQgY29tbWFuZCA9IHBhcnNlSW5wdXRMaW5lKGlucHV0TGluZSk7CkBAIC05NzcsNiArMTAyOSw4
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKIAogICAgIENGUmVs
ZWFzZShzdHIpOwogCisgICAgU3RyaW5nIGxvZ3VlUGF0aCA9IGNyZWF0ZVBhdGhJZlVSTEhhc0xv
Z3VlRGlyZWN0b3J5KHVybCk7CisKICAgICBzdHIgPSBDRlVSTEdldFN0cmluZyh1cmwpOwogCiAg
ICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChzdHIpOwpAQCAtOTkyLDYgKzEw
NDYsOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgZG9u
ZSA9IGZhbHNlOwogICAgIHRvcExvYWRpbmdGcmFtZSA9IDA7CiAKKyAgICBwcm9jZXNzUHJvbG9n
dWVJZlByZXNlbnQobG9ndWVQYXRoKTsKKwogICAgIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3Qo
KTsKICAgICBnVGVzdFJ1bm5lci0+c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChmYWxzZSk7CiAKQEAg
LTEwODMsNiArMTEzOSw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1
dEwKICAgICB9CiAKIGV4aXQ6CisgICAgcHJvY2Vzc0VwaWxvZ3VlSWZQcmVzZW50KGxvZ3VlUGF0
aCk7CiAgICAgU3lzRnJlZVN0cmluZyh1cmxCU3RyKTsKICAgICA6OmdUZXN0UnVubmVyLmNsZWFy
KCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203080</attachid>
            <date>2013-05-28 13:03:49 -0700</date>
            <delta_ts>2013-05-28 14:28:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75707-20130528130249.patch</filename>
            <type>text/plain</type>
            <size>4434</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MDgwNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEzLTA1LTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2luZG93c10gTWFueSBDU1MyLjEgdGVzdHMgZmFpbCB1bmRlciBOUldU
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChmaW5kRm9udEZhbGxi
YWNrKTogQWRkZWQKKyAgICAgICAgKGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudCk6IEFkZGVkCisg
ICAgICAgIChyZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQpOiBBZGRlZAorICAgICAgICAocnVu
VGVzdCk6IFNldCB1cC9yZW1vdmUgZm9udCBmYWxsYmFja3Mgd2hlbiBuZWVkZWQuCisKIDIwMTMt
MDUtMjggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFt3
ZWJraXRweV0gRXhwbGljaXRseSBzcGVjaWZ5IHRoZSByZWZlcmVuY2UgZmlsZSBleHRlbnNpb25z
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJl
dmlzaW9uIDE1MDgwNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1OSw2ICs5NTksNzUgQEAgc3RhdGljIHZvaWQgc2l6
ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAgICAgOjpTZXRXaW5kb3dQb3Mod2ViVmlld1dpbmRv
dywgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgU1dQX05PTU9WRSk7CiB9CiAKK3N0YXRpYyBTdHJp
bmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCit7CisgICAgU3RyaW5n
IHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsK
KworICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKKyAgICBpZiAoIV93ZnVsbHBhdGgo
ZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLCBfTUFYX1BBVEgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIGlm
ICghOjpQYXRoSXNEaXJlY3RvcnlXKGZ1bGxQYXRoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisKKyAgICBTdHJpbmcgcGF0aFRvQ2hlY2sgPSBmdWxsUGF0aDsKKworICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiOworCisgICAgLy8gRmlu
ZCB0aGUgbGF5b3V0IHRlc3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgorICAgIHNpemVfdCBs
b2NhdGlvbiA9IHBhdGhUb0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOworICAgIGlmIChXVEY6Om5v
dEZvdW5kID09IGxvY2F0aW9uKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAg
IFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3RyaW5nKGxvY2F0aW9uICsgbGF5
b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKKyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmco
MCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiIp
OworCisgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRoczsKKyAgICBwb3NzaWJsZVBhdGhz
LmFwcGVuZChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9M
b2d1ZSwgcGF0aFRvVGVzdCkpOworCisgICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRo
VG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOworICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYm
IG5leHRDYW5kaWRhdGVFbmQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBwYXRoVG9UZXN0
ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmcoMCwgbmV4dENhbmRpZGF0ZUVuZCk7CisgICAgICAgIHBv
c3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3Nz
aWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAgICAgIG5leHRDYW5kaWRhdGVFbmQg
PSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOworICAgIH0KKworICAgIGZvciAoVmVjdG9y
PFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBv
c3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7CisgICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsg
CisKKyAgICAgICAgaWYgKDo6UGF0aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gcGF0aFRv
Rm9udEZhbGxiYWNrOworICAgIH0KKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCitz
dGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFs
bGJhY2tQYXRoKQoreworICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1m
YWxsYmFjay5jc3MiKTsKKworICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKQorICAgICAgICByZXR1cm47CisKKyAg
ICA6OnNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGZvbnRGYWxsYmFjay5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNr
SWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKK3sKKyAgICBpZiAoZm9u
dEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBm
b250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxi
YWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisKKyAgICBpZiAo
ITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgOjpzZXRQZXJzaXN0ZW50VXNlclN0eWxl
U2hlZXRMb2NhdGlvbigwKTsKK30KKwogc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcm
IGlucHV0TGluZSkKIHsKICAgICBUZXN0Q29tbWFuZCBjb21tYW5kID0gcGFyc2VJbnB1dExpbmUo
aW5wdXRMaW5lKTsKQEAgLTk3Nyw2ICsxMDQ2LDggQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdHJpbmcmIGlucHV0TAogCiAgICAgQ0ZSZWxlYXNlKHN0cik7CiAKKyAgICBTdHJpbmcgZmFs
bGJhY2tQYXRoID0gZmluZEZvbnRGYWxsYmFjayhwYXRoT3JVUkwuY19zdHIoKSk7CisKICAgICBz
dHIgPSBDRlVSTEdldFN0cmluZyh1cmwpOwogCiAgICAgQ0ZJbmRleCBsZW5ndGggPSBDRlN0cmlu
Z0dldExlbmd0aChzdHIpOwpAQCAtOTkyLDYgKzEwNjMsOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0
KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgZG9uZSA9IGZhbHNlOwogICAgIHRvcExvYWRpbmdG
cmFtZSA9IDA7CiAKKyAgICBhZGRGb250RmFsbGJhY2tJZlByZXNlbnQoZmFsbGJhY2tQYXRoKTsK
KwogICAgIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKTsKICAgICBnVGVzdFJ1bm5lci0+c2V0
SWNvbkRhdGFiYXNlRW5hYmxlZChmYWxzZSk7CiAKQEAgLTEwODMsNiArMTE1Niw3IEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKICAgICB9CiAKIGV4aXQ6CisgICAg
cmVtb3ZlRm9udEZhbGxiYWNrSWZQcmVzZW50KGZhbGxiYWNrUGF0aCk7CiAgICAgU3lzRnJlZVN0
cmluZyh1cmxCU3RyKTsKICAgICA6OmdUZXN0UnVubmVyLmNsZWFyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203088</attachid>
            <date>2013-05-28 14:28:27 -0700</date>
            <delta_ts>2013-05-28 14:33:16 -0700</delta_ts>
            <desc>Updated to include export definition changes needed for clean build.</desc>
            <filename>bug-75707-20130528142726.patch</filename>
            <type>text/plain</type>
            <size>7067</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTA4MzEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA1LTI4ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBNYW55IGNzczIu
MSB0ZXN0cyBmYWlsIG9uIEFwcGxlJ3MgV2luZG93cyBwb3J0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9y
dEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKyAgICAgICAgRXhwb3J0IHRoZSBXZWJD
b3JlOjpkaXJlY3RvcnlOYW1lIG1ldGhvZCBmb3IgdXNlIGJ5IERSVC4KKwogMjAxMy0wNS0yNyAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgSUNV
X0lOQ0xVREVfRElSUyBpbiBCbGFja0JlcnJ5IENNYWtlIGZpbGVzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4
cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTUwODMxKQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCBFWFBPUlRT
CiAgICAgICAgID9jdXJyZW50VGhyZWFkQFdURkBAWUFJWFoKICAgICAgICAgP2RldGFjaFRocmVh
ZEBXVEZAQFlBWElAWgogICAgICAgICA/ZGVzdHJveUBTdHJpbmdJbXBsQFdURkBAU0FYUEFWMTJA
QFoKKyAgICAgICAgP2RpcmVjdG9yeU5hbWVAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBBQlYy
M0BAWgogICAgICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgICAgICA/
aW5pdGlhbGl6ZVRocmVhZGluZ0BXVEZAQFlBWFhaCiAgICAgICAgID9pbnN0cnVtZW50YXRpb25G
b3JQYWdlQFdlYkNvcmVAQFlBUEFWSW5zdHJ1bWVudGluZ0FnZW50c0AxQFBBVlBhZ2VAMUBAWgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwODMxKQorKysgU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDUtMjgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dpbmRvd3Nd
IE1hbnkgY3NzMi4xIHRlc3RzIGZhaWwgb24gQXBwbGUncyBXaW5kb3dzIHBvcnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9X
ZWJLaXRFeHBvcnRzLmRlZi5pbjogRXhwb3J0IHRoZQorICAgICAgICBXZWJDb3JlOjpkaXJlY3Rv
cnlOYW1lIG1ldGhvZCBmb3IgRFJUIHVzZS4KKwogMjAxMy0wNS0yOCAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKCkg
c2hvdWxkIGJlIHNldEZvY3VzZWRFbGVtZW50KCkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE1
MDgzMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5k
ZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCBFWFBPUlRTCiAgICAgICAg
ID9jdXJyZW50VGhyZWFkQFdURkBAWUFJWFoKICAgICAgICAgP2RldGFjaFRocmVhZEBXVEZAQFlB
WElAWgogICAgICAgICA/ZGVzdHJveUBTdHJpbmdJbXBsQFdURkBAU0FYUEFWMTJAQFoKKyAgICAg
ICAgP2RpcmVjdG9yeU5hbWVAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBBQlYyM0BAWgogICAg
ICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgICAgICA/aW5pdGlhbGl6
ZVRocmVhZGluZ0BXVEZAQFlBWFhaCiAgICAgICAgID9pbnN0cnVtZW50YXRpb25Gb3JQYWdlQFdl
YkNvcmVAQFlBUEFWSW5zdHJ1bWVudGluZ0FnZW50c0AxQFBBVlBhZ2VAMUBAWgpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTUw
ODMxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTMtMDUtMjggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtXaW5kb3dzXSBNYW55IENTUzIuMSB0ZXN0cyBmYWlsIHVuZGVyIE5SV1QuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2spOiBBZGRl
ZAorICAgICAgICAoYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KTogQWRkZWQKKyAgICAgICAgKHJl
bW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudCk6IEFkZGVkCisgICAgICAgIChydW5UZXN0KTogU2V0
IHVwL3JlbW92ZSBmb250IGZhbGxiYWNrcyB3aGVuIG5lZWRlZC4KKwogMjAxMy0wNS0yOCAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IEdUSysg
Q01ha2UgYnVpbGQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAkocmV2aXNpb24gMTUwODMxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU5LDYgKzk1OSw3NSBAQCBzdGF0
aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKICAgICA6OlNldFdpbmRvd1Bvcyh3
ZWJWaWV3V2luZG93LCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBTV1BfTk9NT1ZFKTsKIH0KIAor
c3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKK3sK
KyAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShw
YXRoT3JVcmwpOworCisgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOworICAgIGlmICgh
X3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCksIF9NQVhfUEFUSCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworCisgICAgaWYgKCE6OlBhdGhJc0RpcmVjdG9yeVcoZnVsbFBhdGgpKQorICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0cmluZyBwYXRoVG9DaGVjayA9IGZ1bGxQYXRoOwor
CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJMYXlvdXRUZXN0cyI7CisK
KyAgICAvLyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9uIHRoZSBjdXJyZW50IHBhdGg6Cisg
ICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmluZChsYXlvdXRUZXN0cyk7CisgICAg
aWYgKFdURjo6bm90Rm91bmQgPT0gbG9jYXRpb24pCisgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworCisgICAgU3RyaW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9j
YXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpOworICAgIFN0cmluZyBwb3NzaWJsZVBh
dGhUb0xvZ3VlID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNr
LnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0
Zm9ybVxcd2luIik7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBhdGhzOworICAgIHBv
c3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3Nz
aWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisKKyAgICBzaXplX3QgbmV4dENhbmRpZGF0
ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CisgICAgd2hpbGUgKG5leHRDYW5k
aWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgICAg
IHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsK
KyAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgbmV4dENh
bmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CisgICAgfQorCisgICAg
Zm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigp
OyBwb3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKKyAgICAgICAgcGF0aFRvRm9u
dEZhbGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNv
dXJjZXNcXCIpOyAKKworICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0ZvbnRG
YWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkKKyAgICAgICAgICAgIHJl
dHVybiBwYXRoVG9Gb250RmFsbGJhY2s7CisgICAgfQorCisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Cit9CisKK3N0YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJp
bmcmIGZvbnRGYWxsYmFja1BhdGgpCit7CisgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0
aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworCisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhm
b250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIDo6c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oZm9udEZh
bGxiYWNrLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCByZW1vdmVG
b250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQorewor
ICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsK
KworICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkpKQorICAgICAgICByZXR1cm47CisKKyAgICA6OnNldFBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKDApOworfQorCiBzdGF0aWMgdm9pZCBydW5UZXN0KGNv
bnN0IHN0cmluZyYgaW5wdXRMaW5lKQogewogICAgIFRlc3RDb21tYW5kIGNvbW1hbmQgPSBwYXJz
ZUlucHV0TGluZShpbnB1dExpbmUpOwpAQCAtOTc3LDYgKzEwNDYsOCBAQCBzdGF0aWMgdm9pZCBy
dW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAKICAgICBDRlJlbGVhc2Uoc3RyKTsKIAorICAg
IFN0cmluZyBmYWxsYmFja1BhdGggPSBmaW5kRm9udEZhbGxiYWNrKHBhdGhPclVSTC5jX3N0cigp
KTsKKwogICAgIHN0ciA9IENGVVJMR2V0U3RyaW5nKHVybCk7CiAKICAgICBDRkluZGV4IGxlbmd0
aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cik7CkBAIC05OTIsNiArMTA2Myw4IEBAIHN0YXRpYyB2
b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKICAgICBkb25lID0gZmFsc2U7CiAgICAg
dG9wTG9hZGluZ0ZyYW1lID0gMDsKIAorICAgIGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudChmYWxs
YmFja1BhdGgpOworCiAgICAgc2l6ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpOwogICAgIGdUZXN0
UnVubmVyLT5zZXRJY29uRGF0YWJhc2VFbmFibGVkKGZhbHNlKTsKIApAQCAtMTA4Myw2ICsxMTU2
LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIH0KIAog
ZXhpdDoKKyAgICByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoZmFsbGJhY2tQYXRoKTsKICAg
ICBTeXNGcmVlU3RyaW5nKHVybEJTdHIpOwogICAgIDo6Z1Rlc3RSdW5uZXIuY2xlYXIoKTsKIAo=
</data>
<flag name="review"
          id="224545"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>