Merge branch 'omaha_16.2.1' into omaha_16.2.1-lx
Former-commit-id: 1e036fcfb95f06535c34cef573b9f7a5f7218374
This commit is contained in:
commit
dc134621d8
12 changed files with 125 additions and 102 deletions
|
@ -47,6 +47,7 @@ import com.raytheon.uf.common.monitor.xml.SourceXML;
|
|||
* 05/22/13 1902 mpduff Added methods to get forced values.
|
||||
* 06/17/13 2085 njensen Made forceIt() more thread safe
|
||||
* 12 Oct, 2015 4948 dhladky Simplified Forcings, forcings now work for interpolated "fake" guidance.
|
||||
* 16 Feb, 2016 5372 dhladky Defensive code for empty pfaf lists.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -158,68 +159,74 @@ public class FFFGForceUtil {
|
|||
|
||||
FFFGDataMgr fdm = FFFGDataMgr.getInstance();
|
||||
|
||||
if ((sliderTime >= src1Hr) && (sliderTime <= src2Hr)) {
|
||||
// Slider falls between the source times
|
||||
if (sliderTime == src1Hr) {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
forcedPfafList = this.getForcedBasins(
|
||||
sourceXML1.getSourceName(), pfafList, ft);
|
||||
} else if (sliderTime == src2Hr) {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
forcedPfafList = this.getForcedBasins(
|
||||
sourceXML2.getSourceName(), pfafList, ft);
|
||||
} else {
|
||||
if (cBasin.getAggregated()) {
|
||||
// If pfafList is null, you can't process forcings.
|
||||
if (pfafList != null && !pfafList.isEmpty()) {
|
||||
if ((sliderTime >= src1Hr) && (sliderTime <= src2Hr)) {
|
||||
// Slider falls between the source times
|
||||
if (sliderTime == src1Hr) {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
forcedPfafList = this.getForcedBasins(
|
||||
sourceXML1.getSourceName(), pfafList, ft);
|
||||
} else if (sliderTime == src2Hr) {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
forcedPfafList = this.getForcedBasins(
|
||||
sourceXML2.getSourceName(), pfafList, ft);
|
||||
} else {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
pfafList.get(0));
|
||||
}
|
||||
forcedPfafList = this.getForcedBasins(
|
||||
sourceXML1.getSourceName(), pfafList, ft);
|
||||
if ((sourceXML2 != null)
|
||||
&& (forced == false)
|
||||
&& ((forcedPfafList == null) || (forcedPfafList.size() == 0))) {
|
||||
if (cBasin.getAggregated()) {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
} else {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
pfafList.get(0));
|
||||
}
|
||||
forcedPfafList.addAll(this.getForcedBasins(
|
||||
sourceXML2.getSourceName(), pfafList, ft));
|
||||
}
|
||||
}
|
||||
|
||||
// Check if the aggregate is forced if the individual basin isn't
|
||||
if ((forced == false) && (forcedPfafList.size() == 0)) {
|
||||
if (!cBasin.getAggregated()) {
|
||||
Long aggregate = ft.getAggregatedPfaf(cBasin.getPfaf(),
|
||||
resource.getSiteKey(), resource.getHuc());
|
||||
if (sourceXML1 != null) {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
aggregate);
|
||||
if (!forced && (sourceXML2 != null)) {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
aggregate);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (sourceXML1 != null) {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
if (!forced && (sourceXML2 != null)) {
|
||||
forcedPfafList = this.getForcedBasins(
|
||||
sourceXML1.getSourceName(), pfafList, ft);
|
||||
if ((sourceXML2 != null)
|
||||
&& (forced == false)
|
||||
&& ((forcedPfafList == null) || (forcedPfafList
|
||||
.size() == 0))) {
|
||||
if (cBasin.getAggregated()) {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
} else {
|
||||
forced = fdm.isForced(sourceXML2.getSourceName(),
|
||||
pfafList.get(0));
|
||||
}
|
||||
forcedPfafList.addAll(this.getForcedBasins(
|
||||
sourceXML2.getSourceName(), pfafList, ft));
|
||||
}
|
||||
}
|
||||
} else if (!forcedPfafList.isEmpty()) {
|
||||
forced = true;
|
||||
|
||||
// Check if the aggregate is forced if the individual basin
|
||||
// isn't
|
||||
if ((forced == false) && (forcedPfafList.size() == 0)) {
|
||||
if (!cBasin.getAggregated()) {
|
||||
Long aggregate = ft.getAggregatedPfaf(cBasin.getPfaf(),
|
||||
resource.getSiteKey(), resource.getHuc());
|
||||
if (sourceXML1 != null) {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
aggregate);
|
||||
if (!forced && (sourceXML2 != null)) {
|
||||
forced = fdm.isForced(
|
||||
sourceXML2.getSourceName(), aggregate);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (sourceXML1 != null) {
|
||||
forced = fdm.isForced(sourceXML1.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
if (!forced && (sourceXML2 != null)) {
|
||||
forced = fdm.isForced(
|
||||
sourceXML2.getSourceName(),
|
||||
cBasin.getPfaf());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!forcedPfafList.isEmpty()) {
|
||||
forced = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,6 +234,7 @@ public class FFFGForceUtil {
|
|||
retVal.pfafList = pfafList;
|
||||
retVal.forcedPfafList = forcedPfafList;
|
||||
return retVal;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -58,6 +58,7 @@ import com.raytheon.uf.viz.monitor.ffmp.ui.rsc.FFMPResourceData;
|
|||
* Jun 04, 2013 2075 njensen Initial creation
|
||||
* Jun 07, 2013 2075 njensen Added progress monitoring
|
||||
* Oct 26, 2015 5056 dhladky Removed println.
|
||||
* Feb 16, 2016 5372 dhladky Make missing mosaic messages debug.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -183,8 +184,8 @@ public class InitialLoadJob extends AbstractLoadJob {
|
|||
record = SerializationUtil.transformFromThrift(
|
||||
FFMPAggregateRecord.class, bytes);
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.WARN,
|
||||
"Couldn't read Aggregate Record" + sourceSiteDataKey);
|
||||
statusHandler.handle(Priority.DEBUG,
|
||||
"Couldn't read Aggregate Record: " + sourceSiteDataKey, e);
|
||||
}
|
||||
|
||||
return record;
|
||||
|
|
|
@ -6,8 +6,10 @@ import java.util.List;
|
|||
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.npp.nucaps.NucapsRecord;
|
||||
import com.raytheon.uf.common.dataplugin.npp.sounding.NPPSoundingRecord;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.viz.core.DrawableCircle;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||
|
@ -27,6 +29,7 @@ import com.raytheon.uf.viz.npp.sounding.rsc.NPPSoundingMapResourceData;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Dec 16, 2015 18191 pwang Initial version.
|
||||
* Feb 03, 2016 18588 wkwock Fix update nucaps data issue.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -35,6 +38,13 @@ import com.raytheon.uf.viz.npp.sounding.rsc.NPPSoundingMapResourceData;
|
|||
*/
|
||||
|
||||
public class NucapsSoundingMapResource extends NPPSoundingMapResource {
|
||||
private RGB green = new RGB(0, 255, 0);
|
||||
|
||||
private RGB yellow = new RGB(255, 255, 0);
|
||||
|
||||
private RGB red = new RGB(255, 0, 0);
|
||||
|
||||
private RGB gray = new RGB(190, 190, 190);
|
||||
|
||||
protected NucapsSoundingMapResource(
|
||||
NPPSoundingMapResourceData resourceData,
|
||||
|
@ -47,14 +57,19 @@ public class NucapsSoundingMapResource extends NPPSoundingMapResource {
|
|||
LoadProperties loadProperties) {
|
||||
super(resourceData, loadProperties);
|
||||
}
|
||||
|
||||
private RGB green = new RGB(0, 255, 0);
|
||||
|
||||
private RGB yellow = new RGB(255, 255, 0);
|
||||
|
||||
private RGB red = new RGB(255, 0, 0);
|
||||
|
||||
private RGB gray = new RGB(190, 190, 190);
|
||||
|
||||
@Override
|
||||
public synchronized void addRecords (PluginDataObject... records){
|
||||
try {
|
||||
PluginDataObject[] allRecords=((NucapsSoundingMapResourceData)this.resourceData).updatePluginDataObjects(records);
|
||||
super.addRecords(allRecords);
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(
|
||||
Priority.PROBLEM,
|
||||
"Error adding record from update: "
|
||||
+ e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Color code dots base on QC value
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.raytheon.viz.pointdata.PointDataRequest;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ------- ---------- --------------------------
|
||||
* Dec 16, 2015 18191 pwang Initial creation. Color code dots base on QC value
|
||||
* Feb 03, 2016 18588 wkwock Fix update nucaps data issue.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -63,6 +64,21 @@ public class NucapsSoundingMapResourceData extends NPPSoundingMapResourceData {
|
|||
return resource;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Quality_flag data from HDF5 for each record.
|
||||
*
|
||||
* @param records
|
||||
* @return
|
||||
* @throws VizException
|
||||
*/
|
||||
public PluginDataObject[] updatePluginDataObjects(PluginDataObject[] records) throws VizException {
|
||||
List<DataTime> timesToLoad = new ArrayList<DataTime>();
|
||||
for (PluginDataObject record : records){
|
||||
timesToLoad.add(record.getDataTime());
|
||||
}
|
||||
return requestPluginDataObjects(timesToLoad);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get nucaps data
|
||||
* @param Collection<DataTime> loadSet
|
||||
|
|
|
@ -447,8 +447,6 @@ public class ClimateDataManager implements PyProcessListener {
|
|||
.get("results");
|
||||
win.populateSiteInfoList(ident, list);
|
||||
win.assessBtn(true);
|
||||
win.scriptsBtn(false);
|
||||
win.processBtn(false);
|
||||
win.validateBtn(false);
|
||||
} else if (method.equals("updateMonitor")) {
|
||||
String msg = (String) returnMap.get("msg");
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
from Init import *
|
||||
import os
|
||||
|
||||
class nwpsTrkngCG0localForecaster(Forecaster):
|
||||
class nwpsTrkngCG0Forecaster(Forecaster):
|
||||
def __init__(self):
|
||||
Forecaster.__init__(self, "nwpsTrkngCG0local", "nwpsTrkngCG0local")
|
||||
Forecaster.__init__(self, "nwpsTrkngCG0", "nwpsTrkngCG0")
|
||||
|
||||
def _calcPeriodN(self, swper):
|
||||
return swper
|
||||
|
@ -56,21 +56,21 @@ class nwpsTrkngCG0localForecaster(Forecaster):
|
|||
return self._calcWaveN(swell_OSEQD10, swdir_OSEQD10)
|
||||
|
||||
def main():
|
||||
nwpsTrkngCG0localForecaster().run()
|
||||
chkfile = "/tmp/nwpslocal/CGTrack"
|
||||
chkfiledir = "/tmp/nwpslocal"
|
||||
nwpsTrkngCG0Forecaster().run()
|
||||
chkfile = "/tmp/nwps/CGTrack"
|
||||
chkfiledir = "/tmp/nwps"
|
||||
try:
|
||||
os.makedirs(chkfiledir)
|
||||
except OSError:
|
||||
pass
|
||||
if not os.path.isfile(chkfile):
|
||||
open(chkfile, 'a').close()
|
||||
os.system('/awips2/GFESuite/bin/sendGfeMessage -s -m "BOOO TRACKING WAVE GRIDS ARE NOW IN GFE"')
|
||||
os.system('/awips2/GFESuite/bin/sendGfeMessage -s -m "TRACKING WAVE GRIDS ARE NOW IN GFE"')
|
||||
filemodtime = os.stat(chkfile).st_mtime
|
||||
twominutesago = time.time() - 120
|
||||
if (twominutesago - filemodtime) > 0:
|
||||
os.utime(chkfile, None)
|
||||
os.system('/awips2/GFESuite/bin/sendGfeMessage -s -m "STOP TRACKING ME! TRACKING WAVE GRIDS ARE NOW IN GFE"')
|
||||
os.system('/awips2/GFESuite/bin/sendGfeMessage -s -m "TRACKING WAVE GRIDS ARE NOW IN GFE"')
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
|
@ -99,6 +99,7 @@ import com.vividsolutions.jts.io.WKTWriter;
|
|||
* Jul 13, 2015 4500 rjpeter Fix SQL Injection concerns.
|
||||
* Aug 08, 2015 4722 dhladky Added Grid coverage and parsing methods.
|
||||
* Sep 17, 2015 4756 dhladky Multiple guidance source bugs.
|
||||
* Feb 12, 2016 5370 dhladky Camel case for insertTime.
|
||||
* </pre>
|
||||
*
|
||||
* @author dhladky
|
||||
|
@ -1460,7 +1461,7 @@ public class FFMPUtils {
|
|||
query.setLimit(1); // only need one response
|
||||
query.addConstraint(GridConstants.DATASET_ID, new RequestConstraint(
|
||||
datasetID));
|
||||
query.setOrderByField("inserttime", OrderMode.DESC);
|
||||
query.setOrderByField("insertTime", OrderMode.DESC);
|
||||
|
||||
DbQueryResponse resp = (DbQueryResponse) RequestRouter.route(query);
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
Copyright (c) 2006-2009, Aleksei Valikov
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
• Redistributions of source code must retain the abov e copyright notice, this list of conditions and the following disclaimer.
|
||||
• Redistributions in binary form must reproduce the a bove copyright notice, this list of conditions and the following disclaimer in the docu mentation and/or other materials provided with the distribution.
|
||||
• Neither the name of Alexey Valikov nor the name of Highsource nor the names of its contributors may be used to endorse or promote prod ucts derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WAR RANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTI ES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOS E ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, IN CIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERV ICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HO WEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT , STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWI SE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF AD VISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -1,11 +0,0 @@
|
|||
Copyright (c) 2006-2011, Aleksei Valikov
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
Neither the name of Alexey Valikov nor the name of Highsource nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
|
||||
|
17
rpms/legal/FOSS_licenses/John_D_Hunter_c_2002-2008.txt
Normal file
17
rpms/legal/FOSS_licenses/John_D_Hunter_c_2002-2008.txt
Normal file
|
@ -0,0 +1,17 @@
|
|||
Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved.
|
||||
|
||||
1. This LICENSE AGREEMENT is between John D. Hunter (“JDH”), and the Individual or Organization (“Licensee”) accessing and otherwise using matplotlib software in source or binary form and its associated documentation.
|
||||
|
||||
2. Subject to the terms and conditions of this License Agreement, JDH hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use matplotlib 0.98.3 alone or in any derivative version, provided, however, that JDH’s License Agreement and JDH’s notice of copyright, i.e., “Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved” are retained in matplotlib 0.98.3 alone or in any derivative version prepared by Licensee.
|
||||
|
||||
3. In the event Licensee prepares a derivative work that is based on or incorporates matplotlib 0.98.3 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to matplotlib 0.98.3.
|
||||
|
||||
4. JDH is making matplotlib 0.98.3 available to Licensee on an “AS IS” basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 0.98.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
|
||||
|
||||
5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB 0.98.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING MATPLOTLIB 0.98.3, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
||||
|
||||
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
|
||||
|
||||
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between JDH and Licensee. This License Agreement does not grant permission to use JDH trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
|
||||
|
||||
8. By copying, installing or otherwise using matplotlib 0.98.3, Licensee agrees to be bound by the terms and conditions of this License Agreement.
|
|
@ -1,14 +0,0 @@
|
|||
W3C® SOFTWARE NOTICE AND LICENSE
|
||||
Copyright © 1994-2002 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
|
||||
|
||||
This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license.
|
||||
|
||||
By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
|
||||
1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
|
||||
2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/"
|
||||
3. Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)
|
||||
THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
|
||||
|
||||
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
|
Binary file not shown.
Loading…
Add table
Reference in a new issue