<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by ICT (Stichting Deltares) -->
<!--Delft FEWS (Copyright 2008 Deltares (Delft Hydraulics)) -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:fews="http://www.wldelft.nl/fews" targetNamespace="http://www.wldelft.nl/fews" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
	<include schemaLocation="sharedTypes.xsd"/>
	<include schemaLocation="lookupSets.xsd"/>
	<include schemaLocation="interpolationSets.xsd"/>
	<complexType name="TransformationFunctionComplexType">
		<annotation>
			<documentation>Contains a function that will be executed using the input and output variables for that function.</documentation>
		</annotation>
		<sequence>
			<choice>
				<group ref="fews:FunctionChoiceGroup">
					<annotation>
						<documentation>Function type for this transformation.</documentation>
					</annotation>
				</group>
				<group ref="fews:RangeTransformationsSequenceGroup">
					<annotation>
						<documentation>One or more transformations that are valid for different ranges of a certain limit variable.</documentation>
					</annotation>
				</group>
				<element name="periodTransformation" type="fews:PeriodDependentTransformationComplexType" maxOccurs="unbounded">
					<annotation>
						<documentation>One or more transformations that are valid for different periods and contain multiple transformations that are valid for different ranges.</documentation>
					</annotation>
				</element>
			</choice>
			<element name="description" type="string" minOccurs="0">
				<annotation>
					<documentation>Available since 2019.02. Optional field. If configured, the text will be shown as tooltip in the workflow tree, if the mouse is hovering over the function. </documentation>
				</annotation>
			</element>
		</sequence>
		<attribute name="id" type="fews:idStringType" use="required">
			<annotation>
				<documentation>Identifier of this transformation. This is only used in log messages and exception messages.</documentation>
			</annotation>
		</attribute>
		<attribute name="useRelatedInputLocationForOutputMatching" type="boolean">
			<annotation>
				<documentation>Since 2020.01. When true the related input time series will be matched with the output location. When false the original input location is used. This option is only applicable when the relation is defined in the input time series set.</documentation>
			</annotation>
		</attribute>
		<attribute name="useRelatedOutputLocationForInputMatching" type="boolean">
			<annotation>
				<documentation>Since 2020.01. When true the input time series will be matched with the related output location. When false the original output location is used. This option is only applicable when the relation is defined in the output time series set.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<group name="RangeTransformationsSequenceGroup">
		<annotation>
			<documentation>Groups rangeLimitVariableDefinitions and rangeTransformations.</documentation>
		</annotation>
		<sequence>
			<element name="rangeLimitVariableDefinition" type="fews:VariableDefinitionComplexType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Optional one or more definitions of range limit variables. The range limit variables that are defined here can only be used in the range elements in rangeTransformations inside this transformation. A limit variable has to be a scalar time series variable. Alternatively these variables can be defined at the start of this transformations file.</documentation>
				</annotation>
			</element>
			<element name="rangeTransformation" type="fews:RangeDependentTransformationComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more transformations that are valid for different ranges of a certain limit variable.</documentation>
				</annotation>
			</element>
		</sequence>
	</group>
	<complexType name="RangeDependentTransformationComplexType">
		<annotation>
			<documentation>A transformation that is valid for one or more ranges of a certain limit variable.</documentation>
		</annotation>
		<sequence>
			<element name="range" type="fews:RangeConditionComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more ranges of values of (different) limit variables for which this transformation is valid. Ranges should not overlap. For a range the lower limit is inclusive and the upper limit is exclusive.</documentation>
				</annotation>
			</element>
			<group ref="fews:FunctionChoiceGroup">
				<annotation>
					<documentation>Function type for this transformation.</documentation>
				</annotation>
			</group>
			<element name="outputValueFlag" type="fews:flagEnumStringType" minOccurs="0">
				<annotation>
					<documentation>Optional flag that will be set for all output values for this range transformation.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="RangeConditionComplexType">
		<annotation>
			<documentation>A range condition.</documentation>
		</annotation>
		<sequence>
			<element name="limitVariableId" type="fews:idStringType">
				<annotation>
					<documentation>Reference to a range limit variable. The lower and upper limits of this range will be checked against this limit variable. Can be the same as input variable. A range limit variable has to be a scalar time series variable. Range limit variables can be defined in this transformation just before the first rangeTransformation, or at the start of this transformations file. If a range limit variable definition in this transformation has the same id as a variable definition at the start of this transformations file, then the range limit variable definition in this transformation is used.</documentation>
				</annotation>
			</element>
			<element name="lowerLimit" type="fews:floatStringType">
				<annotation>
					<documentation>Lower limit for this range. The lower limit is inclusive.</documentation>
				</annotation>
			</element>
			<element name="upperLimit" type="fews:floatStringType">
				<annotation>
					<documentation>Upper limit for this range. The upper limit is exclusive.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="PeriodDependentTransformationComplexType">
		<sequence>
			<element name="period" type="fews:PeriodConditionComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more periods for which this transformation is valid. Periods should not overlap. For a period the start time is inclusive and the end time is exclusive.</documentation>
				</annotation>
			</element>
			<choice>
				<group ref="fews:FunctionChoiceGroup">
					<annotation>
						<documentation>Function type for this transformation.</documentation>
					</annotation>
				</group>
				<group ref="fews:RangeTransformationsSequenceGroup">
					<annotation>
						<documentation>One or more transformations that are valid for different ranges of a certain limit variable.</documentation>
					</annotation>
				</group>
			</choice>
			<element name="outputValueFlag" type="fews:flagEnumStringType" minOccurs="0">
				<annotation>
					<documentation>Optional flag that will be set for all output values for this period transformation.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="FunctionBaseComplexType">
		<annotation>
			<documentation>This complexType should be extended by all function complexTypes.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:ClassNameComplexType">
				<sequence>
					<element name="period" type="fews:TransformationRunPeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>This element can be used to configure the run period of the transformation.</documentation>
						</annotation>
					</element>
					<element name="trimOutput" type="fews:trimOutputEnumStringType" minOccurs="0">
						<annotation>
							<documentation>When true missing values at the start and end of the output will be removed before writing the data to the database. This can prevent existing values to be overwritten with missings.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TransformationRunPeriodComplexType">
		<sequence>
			<choice>
				<sequence>
					<element name="relativePeriod" type="fews:RelativePeriodComplexType"/>
					<sequence minOccurs="0">
						<element name="cardinalTimeStep" type="fews:TimeStepComplexType">
							<annotation>
								<documentation>Aligns the start and end time of the run period of the transformation with this time step.</documentation>
							</annotation>
						</element>
						<element name="extendStart" type="boolean">
							<annotation>
								<documentation>Determines whether the start of the run period of the transformation should be extended or cropped to match the cardinal time step</documentation>
							</annotation>
						</element>
						<element name="extendEnd" type="boolean">
							<annotation>
								<documentation>Determines whether the end of the run period of the transformation should be extended or cropped to match the cardinal time step</documentation>
							</annotation>
						</element>
					</sequence>
				</sequence>
				<group ref="fews:SingleSeasonGroup"/>
			</choice>
		</sequence>
	</complexType>
	<group name="SingleSeasonGroup">
		<sequence>
			<element name="startMonthDay" type="fews:monthDayType"/>
			<element name="endMonthDay" type="fews:monthDayType"/>
		</sequence>
	</group>
	<complexType name="FunctionWithModuleParameterBaseComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="moduleParameterFile" type="fews:nameStringType" minOccurs="0">
						<annotation>
							<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FunctionWithCoefficientSetBaseComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that need coefficientSets. This complexType contains the optional limitVariable that is required if different coefficientSets are valid for different ranges of the limitVariable.</documentation>
				</annotation>
				<sequence>
					<element name="limitVariable" type="fews:InputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Optional limit variable. For each time step the value of this variable is checked against the limiting ranges defined in coefficientSets to determine which coefficientSet is used for that time step. A limit variable has to be a scalar variable.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="VariableDefinitionComplexType">
		<sequence>
			<element name="variableId" type="fews:idStringType">
				<annotation>
					<documentation>Identifier for this variable. Use this identifier to reference to this variable in a transformation.</documentation>
				</annotation>
			</element>
			<choice>
				<group ref="fews:TimeSeriesSequenceGroup">
					<annotation>
						<documentation>A time series that can be used as input or as output for a transformation function.</documentation>
					</annotation>
				</group>
			</choice>
		</sequence>
	</complexType>
	<complexType name="InputVariableExpressionBasedFunctionComplexType">
		<sequence>
			<element name="variableId" type="fews:idStringType">
				<annotation>
					<documentation>Identifier for this variable, as used in the expression.</documentation>
				</annotation>
			</element>
			<choice>
				<sequence>
					<element name="locationId" type="fews:idStringType">
						<annotation>
							<documentation>Filter location. If the template variable contains multiple locations, then specify a filter location here.</documentation>
						</annotation>
					</element>
					<element name="templateVariableId" type="fews:idStringType">
						<annotation>
							<documentation>Variable having a time series set definition, which will be used as a template. The variable used in the expression uses the time series set from this template, after filtering for the filter location.</documentation>
						</annotation>
					</element>
				</sequence>
				<group ref="fews:TimeSeriesSequenceGroup">
					<annotation>
						<documentation>A time series that can be used as input or as output for a transformation function.</documentation>
					</annotation>
				</group>
			</choice>
		</sequence>
	</complexType>
	<complexType name="InputVariableComplexType">
		<annotation>
			<documentation>Choose between a reference to a variable or an embedded definition of a variable.</documentation>
		</annotation>
		<choice>
			<sequence>
				<element name="variableId" type="fews:idStringType">
					<annotation>
						<documentation>Identifier of a variable to use.</documentation>
					</annotation>
				</element>
				<element name="locationId" type="fews:idStringType" minOccurs="0">
					<annotation>
						<documentation>If the specified variable contains multiple locations, then specify the location to use here.</documentation>
					</annotation>
				</element>
			</sequence>
			<group ref="fews:TimeSeriesSequenceGroup">
				<annotation>
					<documentation>Use a time series as input variable.</documentation>
				</annotation>
			</group>
		</choice>
	</complexType>
	<complexType name="OutputVariableComplexType">
		<annotation>
			<documentation>Choose between a reference to a variable or an embedded definition of a variable.</documentation>
		</annotation>
		<choice>
			<sequence>
				<element name="variableId" type="fews:idStringType">
					<annotation>
						<documentation>Identifier of a variable to use.</documentation>
					</annotation>
				</element>
				<element name="locationId" type="fews:idStringType" minOccurs="0">
					<annotation>
						<documentation>If the specified variable contains multiple locations, then specify the location to use here.</documentation>
					</annotation>
				</element>
			</sequence>
			<group ref="fews:TimeSeriesSequenceGroup">
				<annotation>
					<documentation>Use a time series as output variable.</documentation>
				</annotation>
			</group>
		</choice>
	</complexType>
	<group name="TimeSeriesSequenceGroup">
		<sequence>
			<element name="timeSeriesSet" type="fews:TimeSeriesSetComplexType">
				<annotation>
					<documentation>A time series set that can be used as input or as output for a transformation function.</documentation>
				</annotation>
			</element>
			<element name="convertDatum" type="boolean" default="false" minOccurs="0">
				<annotation>
					<documentation>If true, then this time series is converted from local to ordnance datum level before a transformation and back to local datum level after the transformation. Default is false.</documentation>
				</annotation>
			</element>
			<element name="checkMissing" type="boolean" default="false" minOccurs="0">
				<annotation>
					<documentation>Option to check this timeseries for missing values. This option works in combination with the Parameter flag 'allowMissing', which can be set for a parameter in the parameters.xml configuration file. If for a given parameter allowMissing is false and checkMissing is true, then the transformation throws an exception when there are missing values for this parameter. When omitted defaults to 'false'. For grid data this option only checks whether the entire grid contains missing values or not, i.e. individual cells can still have missing values as long as there are other cells with non-missing values in the grid for the same time step.</documentation>
				</annotation>
			</element>
		</sequence>
	</group>
	<group name="CoefficientReferenceGroup">
		<sequence>
			<element name="coefficientSetId" type="fews:idStringType">
				<annotation>
					<documentation>Identifier of a coefficientSet to use. CoefficientSets are defined in a transformationCoefficientSets file in the CoefficientSetsFiles directory.</documentation>
				</annotation>
			</element>
			<element name="coefficientSetFile" type="fews:fileStringType">
				<annotation>
					<documentation>Name of the file that contains the coefficientSet to use. This name should not include the file extension. CoefficientSets are defined in a transformationCoefficientSets file in the CoefficientSetsFiles directory.</documentation>
				</annotation>
			</element>
		</sequence>
	</group>
	<complexType name="CoefficientSetBaseComplexType">
		<annotation>
			<documentation>Contains range limits. This complexType should be extended by all coefficient set complexTypes.</documentation>
		</annotation>
		<sequence>
			<element name="lowerLimit" type="float" minOccurs="0">
				<annotation>
					<documentation>Optional lower limit above which these coefficients are valid. Lower limit is inclusive. If no lower limit specified, then valid for all values below upper limit.</documentation>
				</annotation>
			</element>
			<element name="upperLimit" type="float" minOccurs="0">
				<annotation>
					<documentation>Optional upper limit below which these coefficients are valid. Upper limit is exclusive. If no upper limit specified, then valid for all values above lower limit.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="CoefficientSetFunctionsBaseComplexType">
		<annotation>
			<documentation>This complexType should be extended by all coefficient set complexTypes that refer to values that are defined as location attributes in the locationSets config file.</documentation>
		</annotation>
	</complexType>
	<group name="FunctionChoiceGroup">
		<annotation>
			<documentation>Groups all types of transformation functions.</documentation>
		</annotation>
		<choice>
			<element name="accumulation" type="fews:AccumulationTransformationChoiceComplexType"/>
			<element name="adjust" type="fews:AdjustTransformationChoiceComplexType"/>
			<element name="aggregation" type="fews:AggregationTransformationChoiceComplexType"/>
			<element name="altitude" type="fews:AltitudeTransformationChoiceComplexType"/>
			<element name="conditional" type="fews:ConditionalTransformationChoiceComplexType"/>
			<element name="copy" type="fews:CopyTransformationChoiceComplexType"/>
			<element name="custom" type="fews:CustomTransformationChoiceComplexType"/>
			<element name="deaccumulation" type="fews:DeAccumulationTransformationChoiceComplexType"/>
			<element name="disaggregation" type="fews:DisaggregationTransformationChoiceComplexType"/>
			<element name="dischargeStage" type="fews:DischargeStageTransformationChoiceComplexType"/>
			<!--			<element name="evaporation" type="fews:EvaporationTransformationChoiceComplexType"/> -->
			<element name="events" type="fews:EventsTransformationChoiceComplexType"/>
			<element name="filter" type="fews:FilterTransformationChoiceComplexType"/>
			<element name="generation" type="fews:GenerationChoiceComplexType"/>
			<element name="generationEnsemble" type="fews:GenerationEnsembleChoiceComplexType"/>
			<element name="gradient" type="fews:GradientChoiceComplexType"/>
			<element name="interpolationSerial" type="fews:InterpolationSerialTransformationChoiceComplexType"/>
			<element name="interpolationSpatial" type="fews:InterpolationSpatialTransformationChoiceComplexType"/>
			<element name="lookup" type="fews:LookupTransformationChoiceComplexType">
				<annotation>
					<documentation>Transformations to map one set of values to another set of values using lookup tables.</documentation>
				</annotation>
			</element>
			<element name="merge" type="fews:MergeTransformationChoiceComplexType"/>
			<element name="multipleLocationAttributes" type="fews:MultipleLocationAttributesComplexType"/>
			<element name="moisture" type="fews:MoistureTransformationChoiceComplexType"/>
			<element name="performanceIndicatorsLeadTimeAccuracy" type="fews:PerformanceIndicatorsLeadTimeAccuracyChoiceComplexType">
				<annotation>
					<documentation>Can be used to calculate different types of lead time accuracy performance indicators. The configured forecast search period is used to find forecasts that will be used as input. For a given forecast, the value at validTime = (forecastTime + leadTime) will be compared with the observed value at the same validTime. This comparison is done for all input forecasts to calculate a final output value for the performance indicator. The performance indicator type determines which calculations are used to make the comparison (e.g. BIAS, RMSE). The output value will be stored in the output time series at T0.</documentation>
				</annotation>
			</element>
			<element name="precipitation" type="fews:PrecipitationTransformationChoiceComplexType"/>
			<element name="profile" type="fews:ProfileTransformationChoiceComplexType"/>
			<element name="regression" type="fews:RegressieTransformationChoiceComplexType"/>
			<element name="review" type="fews:ReviewTransformationChoiceComplexType"/>
			<element name="rotation" type="fews:RotationTransformationChoiceComplexType"/>
			<element name="sample" type="fews:SampleTransformationChoiceComplexType"/>
			<element name="selection" type="fews:SelectionTransformationChoiceComplexType"/>
			<element name="stageDischarge" type="fews:StageDischargeTransformationChoiceComplexType"/>
			<element name="statisticsSameAttributeValue" type="fews:StatisticsSameAttributeValueChoiceComplexType">
				<annotation>
					<documentation>Input are multiple time series. Output are multiple time series. The output time series must have a shared attribute with the input time series (i.e. same attribute needs to exist for input and output locations). For example if "attribute1" is configured, both input and output time series must have an attribute with id "attribute1". The values of "attribute1" also need to match between input and output like "attributeValue1".
					</documentation>
				</annotation>
			</element>
			<element name="statisticsChildrenLocations" type="fews:StatisticsChildLocationsChoiceComplexType">
				<annotation>
					<documentation>Input are multiple time series. Output are multiple time series. Each output time series must have a parent location. For each output time series (with a parent location) the input time series with the corresponding child locations are selected. The selected input time series are used to get a statistic output value, per time step.</documentation>
				</annotation>
			</element>
			<element name="statisticsRelatedLocations" type="fews:StatisticsRelatedLocationsChoiceComplexType">
				<annotation>
					<documentation>You can compute some statistics on related locations. This transformation is available since 2013.01. It is possible to have the Location relation for either the input or the output locations. Relation points from input to output or from output to input. When the relation is available in both directions a config error is logged.</documentation>
				</annotation>
			</element>
			<element name="statisticsValueProperties" type="fews:StatisticsValuePropertiesChoiceComplexType">
				<annotation>
					<documentation>Input consists of time series with value properties. Based on those properties statistics are calculated.</documentation>
				</annotation>
			</element>
			<element name="statisticsEnsemble" type="fews:StatisticsEnsembleChoiceComplexType">
				<annotation>
					<documentation>Input is an ensemble with multiple time series. Output is one time series. Per time step the ensemble values for that time step are used to get a statistic output value.</documentation>
				</annotation>
			</element>
			<element name="statisticsPeriodic" type="fews:StatisticsPeriodicChoiceComplexType">
				<annotation>
					<documentation>A statisticsPeriodic transformation will compute the configured statistic function. The outputVariable has to be a timeSeries with a defined cycle period. The input periods for a given output time are acquired by repeating the aggregation period for that output time for every cycle. For a given output time the input times in all input periods are used to calculate a result value. A statisticsPeriodic transformation can e.g. be used in climatology to get e.g. the mean temperature in January over the last 100 years. E.g. input series has a temperature value for each day in 100 years and output has a temperature value for each month in the year (this means 12 values in a time series with a cycle of one year).</documentation>
				</annotation>
			</element>
			<element name="statisticsSerial" type="fews:StatisticsSerialChoiceComplexType">
				<annotation>
					<documentation>A statisticsSerial transformation will compute the configured statistic function. For each time in the output series the input values within the corresponding aggregation period are used to get a result value for that output time.</documentation>
				</annotation>
			</element>
			<element name="statisticsSummary" type="fews:StatisticsSummaryChoiceComplexType">
				<annotation>
					<documentation>A statisticsSummary transformation will compute the configured statistic function for the input values to get one result value (the summary). This uses only the input values within the relativeViewPeriod that is defined in the timeSeriesSet of the output variable. The result output value is stored at T0 (time zero) in the output timeSeries.</documentation>
				</annotation>
			</element>
			<element name="statisticsVerticalLayers" type="fews:StatisticsVerticalLayersChoiceComplexType">
				<annotation>
					<documentation>Available since 2021.01. Statistics calculated at the same time, at the same location from different z-layers or sigma layers.</documentation>
				</annotation>
			</element>
			<element name="structure" type="fews:StructureTransformationChoiceComplexType"/>
			<element name="timeShift" type="fews:TimeShiftTransformationChoiceComplexType"/>
			<element name="user" type="fews:UserTransformationChoiceComplexType"/>
			<element name="wave" type="fews:WaveTransformationChoiceComplexType"/>
		</choice>
	</group>
	<complexType name="AggregationTransformationChoiceComplexType">
		<choice>
			<element name="accumulative" type="fews:AggregationAccumulativeComplexType">
				<annotation>
					<documentation>Aggregates input data to output data by accumulation of the input data. This can be used to aggregate data from e.g. an hour timestep to e.g. a day timestep. For a given output time the output value equals the sum of all the input values within the aggregation period. If no aggregation period is configured, then it is equal to the period between the current output time and the previous output time. Alternatively the aggregation period can be configured in the time series set of the output variable. In that case the aggregation period is relative to the current output time and aggregation periods for different output times are allowed to overlap. Using overlapping aggregation periods it is possible to use this transformation to calculate a moving sum. Not designed for non-equidistant input data, this may result in unexpected output values</documentation>
				</annotation>
			</element>
			<element name="instantaneous" type="fews:AggregationInstantaneousComplexType">
				<annotation>
					<documentation>Aggregates input data to output data by copying instantaneous values from input data.</documentation>
				</annotation>
			</element>
			<element name="instantaneousToMean" type="fews:AggregationInstantaneousToMeanComplexType">
				<annotation>
					<documentation>Aggregates input data to output data by taking the mean of the input data in the aggregation period.</documentation>
				</annotation>
			</element>
			<element name="meanToMean" type="fews:AggregationMeanToMeanComplexType">
				<annotation>
					<documentation>Aggregates input data to output data by aggregating mean data with a smaller time step to mean data with a larger time step</documentation>
				</annotation>
			</element>
			<element name="nonEquidistantTimeSpan" type="fews:AggregationNonEquidistantTimeSpanComplexType">
				<annotation>
					<documentation>Aggregates input data to output data by aggregating data using a chosen statisticMethod and has nonequidistant output</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="AltitudeTransformationChoiceComplexType">
		<choice>
			<element name="elevationLapse" type="fews:AltitudeElevationLapseComplexType">
				<annotation>
					<documentation>Calculates the temperature at the output location, using the temperature at the input location, the difference in elevation between the input and output location and a temperature lapse rate. This transformation uses the following equation. outputTemperature = inputTemperature + (inputElevation - outputElevation) * temperatureLapseRate / 100. Here the temperatureLapseRate is in degrees per 100 meters of elevation (typically 0.6 degrees Celcius per 100 meters).</documentation>
				</annotation>
			</element>
			<element name="zeroDegreeAltitude" type="fews:AltitudeZeroDegreeAltitudeComplexType">
				<annotation>
					<documentation>Calculates the altitude where the temperature is zero degrees. Assumes that the temperature is lower at higher altitude. Uses the heights defined for the locations in the input time series.</documentation>
				</annotation>
			</element>
			<element name="removeDryCells" type="fews:RemoveDryCellsComplexType">
				<annotation>
					<documentation>Since 2017.01 Replace values with NaN where water level is not higher that Z</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="CriticalConditionalLookupTransformationComplexType">
		<annotation>
			<documentation>if a default value cannot be found in the rules criteria, an output value is searched in the lookup table</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariableDefinition" type="fews:InputVariableExpressionBasedFunctionComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Definitions of variables that can be used as input in this transformation. A variable is always a time series. Alternatively variables can be defined at the start of this transformations file.</documentation>
						</annotation>
					</element>
					<element name="criticalConditionLookup" type="fews:CriticalConditionLookUpComplexType"/>
					<element name="defaultValue" type="fews:RuleCriteriasComplexType" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="reportAllConditions" type="boolean" minOccurs="0">
						<annotation>
							<documentation>Optional element to disable reporting of all conditions. Default is true. Set to false to disable warnings. </documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.lookup.CriticalConditionalLookupFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ConditionalTransformationChoiceComplexType">
		<choice>
			<element name="multiple" type="fews:CriticalConditionalLookupTransformationComplexType">
				<annotation>
					<documentation>This function determines if one of the configured conditions is valid, if this is the case the ruleIndex which identifies this conditions is written to the output Time Series</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="RotationTransformationChoiceComplexType">
		<choice>
			<element name="uvVectorsFromRotatedPoleToWgs1984" type="fews:RotationUVVectorsFromRotatedPoleToWgs1984ComplexType">
				<annotation>
					<documentation>Transformation to rotate u,v vectors (velocity data) to another coordinate system. This transforms each vector's u,v components in a rotated pole geoDatum to the corresponding u,v components in the Wgs1984 geoDatum (the vector itself is not changed). The input and output time series should have the same rotated pole geometry as grid definition (which is defined in the grids.xml configuration file).</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="WaveTransformationChoiceComplexType">
		<choice>
			<element name="piersonMoskowitzSpectrum1D" type="fews:PiersonMoskowitzSpectrum1DComplexType">
				<annotation>
					<documentation>Since 2019.01 Transformation to generate Pierson-Moskowitz 1D wave spectrum from wave parameters</documentation>
				</annotation>
			</element>
			<element name="jonswapSpectrum1D" type="fews:JonswapSpectrum1DComplexType">
				<annotation>
					<documentation>Since 2019.01 Transformation to generate Jonswap 1D wave spectrum from wave parameters</documentation>
				</annotation>
			</element>
			<element name="spectrum2D" type="fews:Spectrum2DComplexType">
				<annotation>
					<documentation>Since 2019.01 Transformation to generate 2D wave spectrum from wave parameters</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="CustomTransformationChoiceComplexType">
		<choice>
			<element name="userDefined" type="fews:UserDefinedTransformationComplexType">
				<annotation>
					<documentation>This transformation can be used to define a custom transformation</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="DeAccumulationTransformationChoiceComplexType">
		<choice>
			<element name="sum" type="fews:DeAccumulationSumComplexType"/>
		</choice>
	</complexType>
	<complexType name="DeAccumulationSumComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Disaggregation for accumulative time series</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the time series which</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.deaccumulation.DeAccumulationSumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PrecipitationDeAccumulationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>De-accumulation for precipitation time series. Values will be skipped and reset based on unreliable (void) flag and reset flag</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Accumulated input variable</documentation>
						</annotation>
					</element>
					<element name="maxOutputValue" type="fews:positiveFloat">
						<annotation>
							<documentation>If difference between 2 subsequent values is higher than maxDeAccumulatedValue , then time step is set to missing in output.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>If input time series contains a gap larger than maxGapLength, then time step before gap is set to missing in output.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>DeAccumulated Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.precipitation.PrecipitationDeAccumulationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationTransformationChoiceComplexType">
		<choice>
			<element name="accumulative" type="fews:DisaggregationAccumulativeComplexType">
				<annotation>
					<documentation>Disaggregation for accumulative time series</documentation>
				</annotation>
			</element>
			<element name="accumulativeReferencePattern" type="fews:DisaggregationAccumulativeReferencePatternComplexType">
				<annotation>
					<documentation>Disaggregate using a reference pattern. For each location in the inputVariable, the same location is searched in the referencePatternVariable to get a reference pattern. The reference pattern is used for disaggregation. I.E. without the pattern, input value 6 (hourly) would disaggregate into output values 1.5, 1.5, 1.5, 1.5 (15 minutely). But with the reference pattern 0, 2, 2, 0 (15 minutely) it will disaggregate into output values 0, 3, 3, 0 (15 minutely).</documentation>
				</annotation>
			</element>
			<element name="constant" type="fews:DisaggregationConstantComplexType"/>
			<element name="instantaneous" type="fews:DisaggregationInstantaneousComplexType"/>
			<element name="meanToInstantaneous" type="fews:DisaggregationMeanToInstantaneousComplexType"/>
			<element name="meanToMean" type="fews:DisaggregationMeanToMeanComplexType"/>
			<element name="weights" type="fews:DisaggregationWeightsComplexType">
				<annotation>
					<documentation>Disaggregate using the specified weights.</documentation>
				</annotation>
			</element>
			<element name="closestTimestep" type="fews:DisaggregationClosestTimestepComplexType"/>
		</choice>
	</complexType>
	<complexType name="DisaggregationAccumulativeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the time series which </documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationAccumulativeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationAccumulativeReferencePatternComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable that is to be disaggregated.</documentation>
						</annotation>
					</element>
					<element name="referencePatternVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable from which the pattern is used for disaggregation.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationAccumulativeReferencePatternFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationInstantaneousComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Disaggregation for instantaneous time series</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the time series which </documentation>
						</annotation>
					</element>
					<element name="interpolate" type="boolean" default="true" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationInstantaneousFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationConstantComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Available since 2022.01. This function uses the same value as the input value for every disaggregated time step.</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with larger time steps, the values of which should be copied into several smaller timesteps.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with smaller time steps.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationConstantFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationClosestTimestepComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Disaggregation for instantaneous time series</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the time series to b disaggregated.</documentation>
						</annotation>
					</element>
					<element name="fillGaps" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>When true, allows filling in gaps in the input arrays when creating the disaggregated output. To fill gaps, the value will be copied from the closest closest (in time) timestep that doe not have a missing value.</documentation>
						</annotation>
					</element>
					<element name="fillGapTimeSteps" type="int" default="1" minOccurs="0">
						<annotation>
							<documentation>
								Set the maximum number of input timesteps to traverse when looking for a non-missing value to use for filling in gaps. The default value is 1, resulting in a maximum input gap size of 2 timesteps.
							</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
					<annotation>
						<documentation>Output variable.</documentation>
					</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationClosestTimestepFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationMeanToMeanComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Disaggregation for mean time series</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the time series which </documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationMeanToMeanFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DisaggregationMeanToInstantaneousComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Disaggregation for mean time series to instantaneous time series</documentation>
				</annotation>
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the time series which </documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationMeanToInstantaneousFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DischargeStageTransformationChoiceComplexType">
		<choice>
			<element name="mergedRatingCurves" type="fews:DischargeStageMergedRatingCurvesComplexType">
				<annotation>
					<documentation>Merges two rating curves using a time dependent weight variable and uses the resulting rating curve to convert discharge input values to stage output values. For each timeStep in the output time series, first the specified two rating curves are merged using the value of the weight input time series at that timeStep. If weight is 1, then uses the first rating curve. If weight is 0, then uses the second rating curve. If weight is between 0 and 1, then interpolates linearly between the first and the second rating curve to get the merged rating curve. Then the merged rating curve is used to convert the discharge input value for that timeStep to a stage output value. This can only use rating curves that are stored as time series in the dataStore. This uses the inverse of the equation Q_output = weight*Q_ratingCurve1(H_input) + (1 - weight)*Q_ratingCurve2(H_input)</documentation>
				</annotation>
			</element>
			<element name="power" type="fews:DischargeStagePowerComplexType">
				<annotation>
					<documentation>Converts discharge (Q) to stage (H) for an open cross section. Uses equation Q=a*(H+b)^c.</documentation>
				</annotation>
			</element>
			<element name="table" type="fews:DischargeStageTableComplexType">
				<annotation>
					<documentation>Converts discharge (water flow) to stage (water level) using a table with stage and discharge values.</documentation>
				</annotation>
			</element>
			<element name="ratingCurve" type="fews:DischargeStageRatingCurveComplexType">
				<annotation>
					<documentation>Converts discharge (water flow) to stage (water level) using a rating curve(table or function)</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<!--	<complexType name="EvaporationTransformationChoiceComplexType">
		<choice>
			<element name="penmanNorthEast" type="fews:EvaporationPenmanNorthEastComplexType">
				<annotation>
					<documentation>Penman evaporation specific to the UK NorthEast region. Uses the altitudes defined for the locations in the input time series. Does not need any coefficients. TODO change name...</documentation>
				</annotation>
			</element>
		</choice>
	</complexType> -->
	<complexType name="FilterTransformationChoiceComplexType">
		<choice>
			<element name="lowPass" type="fews:FilterLowPassComplexType">
				<annotation>
					<documentation>Low pass filter for discrete functions (e.g. time series). This transformation calculates the following difference equation. y(t) = b0*x(t) + b1*x(t-1) + ... + bM*x(t-M) + a1*y(t-1) + ... + aN*y(t-N). Here x is the input, y is the output, t denotes time, b0 to bM are the feedforward coefficients and a1 to aN are the feedback coefficients.</documentation>
				</annotation>
			</element>
			<element name="gaussian" type="fews:FilterGaussianComplexType">
				<annotation>
					<documentation>Smoothing transformation based on a gaussian function.</documentation>
				</annotation>
			</element>
			<!--<element name="block" type="fews:FunctionWithOnlyOneInputVariableComplexType">
				<annotation>
					<documentation>TODO should contain enumeration for average, maximum or minimum.</documentation>
				</annotation>
			</element>
			<element name="movingWindow" type="fews:FunctionWithOnlyOneInputVariableComplexType">
				<annotation>
					<documentation>TODO should contain enumeration for average, maximum or minimum.</documentation>
				</annotation>
			</element>-->
		</choice>
	</complexType>
	<complexType name="GenerationEnsembleChoiceComplexType">
		<choice>
			<element name="copy" type="fews:CopyEnsembleTransformationComplexType">
				<annotation>
					<documentation>This transformation can be used to copy the ensembles</documentation>
				</annotation>
			</element>
			<element name="selectRankedMembers" type="fews:SelectRankedMembersTransformationComplexType">
				<annotation>
					<documentation>Since 2018.02 Selects ensemble members by ranking of the (statistical) results of the ensemble members</documentation>
				</annotation>
			</element>
			<!--todo Jitka this breaks compatibility with 2012.02-->
			<element name="selectHistoricMembers" type="fews:SelectHistoricMembersTransformationComplexType">
				<annotation>
					<documentation>Since 2013.01. FEWS-7893. This transformation uses scalar time series to make a sub-selection of ensemble members</documentation>
				</annotation>
			</element>
			<element name="combineMembers" type="fews:CombineMembersEnsembleTransformationComplexType">
				<annotation>
					<documentation>Since 2013.01. FEWS-8129. This transformation merges members of two or more ensembles into one bigger ensemble. Only works when the ensemble member ids are unique over all input variables</documentation>
				</annotation>
			</element>
			<element name="combineForecastMembers" type="fews:CombineForecastMembersEnsembleTransformationComplexType">
				<annotation>
					<documentation>Since 2013.01. FEWS-8505. This transformation merges members of two or more ensemble forecasts into one bigger ensemble</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="GenerationChoiceComplexType">
		<choice>
			<element name="constant" type="fews:GenerationConstantComplexType">
				<annotation>
					<documentation>Does an even distribution of the totalAmount over the forecastPeriod period starting after the delay. The delay is a period between T0 and the start of the forecastPeriod for which 0 units defined in the output variable is generated. Example: timeLength = 1 hour, totalAmount = 10, delay = 2 hours. After running this transformation, the result will be [0, 5, 5]. Set relativeViewPeriod to [start = 0, end = delay + forecastPeriod]</documentation>
				</annotation>
			</element>
			<element name="recessionMean" type="fews:GenerationRecessionMeanComplexType">
				<annotation>
					<documentation>Will repeat the mean value defined in the history period with recession each repeat. First, the mean for the values listed in the history period is calculated. Then starting at T0 for the duration in 'length', the following is repeated: the mean value is written to the output variable for the same value of timesteps present in the historie period, after which the mean is multiplied by the resessionFactor. Example: length = 5 hour, historie = 2 hour, factor = 0.5, input = [3, 5, 3, (t0)4]. After running this transformation it would result in [(t0)4, 4, 2, 2, 1]. Set relativeViewPeriod to [start = -historie, end = length]</documentation>
				</annotation>
			</element>
			<element name="recessionPattern" type="fews:GenerationRecessionPatternComplexType">
				<annotation>
					<documentation>Will repeat the pattern in the history period with recession each repeat. First, the values listed in the history period are stored as historic amounts. Then starting at T0 for the duration in 'length', the following is repeated: all historic values are copied to the output variable for the amount timesteps present in the historie period, after which the historic values are multiplied by the resessionFactor. Example: length = 5 hour, historie = 2 hour, factor = 0.5, input = [3,5,3,(t0)4]. After running this transformation it would result in [(t0)5 ,3 ,2.5 ,1.5 ,1.25]. Set relativeViewPeriod to [start = -historie, end = length]</documentation>
				</annotation>
			</element>
			<element name="tidalConstituents" type="fews:GenerationTidalConstituentsComplexType">
				<annotation>
					<documentation>Uses one or more input harmonic tidal constituents to generate an output time series.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="InterpolationSerialTransformationChoiceComplexType">
		<choice>
			<element name="block" type="fews:InterpolationSerialBlockComplexType">
				<annotation>
					<documentation>Fills gaps in a time series. Each gap is filled with data values that are equal to the last data value before the gap.</documentation>
				</annotation>
			</element>
			<element name="default" type="fews:InterpolationSerialDefaultComplexType">
				<annotation>
					<documentation>Fills gaps in a time series with a default value</documentation>
				</annotation>
			</element>
			<element name="directionLinear" type="fews:InterpolationSerialDirectionLinearComplexType">
				<annotation>
					<documentation>Fills gaps in a time series that contains direction data values (e.g. wind direction), using linear interpolation. The direction values are interpolated over the smallest angle, e.g. halfway between directions 0 degrees and 350 degrees the interpolated value would be 355 degrees. For a gap between two directions that are completely opposite (e.g. 90 and 270 degrees) the interpolated values will be equal to the last known direction.</documentation>
				</annotation>
			</element>
			<element name="extrapolateBase" type="fews:InterpolationSerialExtrapolateBaseComplexType">
				<annotation>
					<documentation>Extrapolates by adding future values that start at the last data value and linearly approach a given base value.</documentation>
				</annotation>
			</element>
			<element name="extrapolateConstant" type="fews:InterpolationSerialExtrapolateConstantComplexType">
				<annotation>
					<documentation>Extrapolates by filling the gap between the start of the input time series and the first data value or by filling the gap between the last data value and the end of the input time series or by filling both of these gaps.</documentation>
				</annotation>
			</element>
			<element name="extrapolateExponential" type="fews:InterpolationSerialExtrapolateExponentialComplexType">
				<annotation>
					<documentation>Extrapolates by adding future values that start at the last data value and exponentially approach a given base value.</documentation>
				</annotation>
			</element>
			<element name="extrapolatePatternWithSmoothing" type="fews:InterpolationSerialExtrapolatePatternWithSmoothingComplexType">
				<annotation>
					<documentation>Extrapolates by repeating the values in the matching period. The matching period ends at the last non-missing value in the view period. The values in the matching period are referred to as the pattern. This pattern is repeated for the length of the view period. Smoothing is applied on each repetition of the pattern by adding (part of) the difference between the first and last value of the pattern. This linearly declines to zero for the length of the smoothingPeriod. Example: matchingPeriod = 8, Pattern = [4,5,5,5,8,6,7,8], smoothingPeriod = 4 would result in [8,8,7,6,8,6,7,8]</documentation>
				</annotation>
			</element>
			<element name="linear" type="fews:InterpolationSerialLinearComplexType">
				<annotation>
					<documentation>Fills gaps in a time series with linearly interpolated data values.</documentation>
				</annotation>
			</element>
			<element name="longitudinalProfileToTrack" type="fews:InterpolationSerialLongitudinalProfileToTrackComplexType">
				<annotation>
					<documentation>Since 2017.02. Extracts scalar time series for a track layer from a longitudinal profile using lat, long scalar input series.</documentation>
				</annotation>
			</element>
			<element name="trackToGrid" type="fews:InterpolationSerialTrackToGridComplexType">
				<annotation>
					<documentation>Since 2017.02. Extract grid time series from a track layer (given by scalar lat, lon and value input series).</documentation>
				</annotation>
			</element>
			<element name="persistenceTrend" type="fews:PersistenceTrendComplexType">
				<annotation>
					<documentation>Available since 2019.01</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="RemoveDryCellsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="minimumLocalWaterLevel" type="double" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the minimum water level in meters at a cell to not be considered dry. When the value at a cell is lower than the elevation (Z) + the minimum water level, it will be set to NaN in the output.
							</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.altitude.AltitudeRemoveDryCellsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialTransformationChoiceComplexType">
		<choice>
			<element name="average" type="fews:InterpolationSpatialAverageComplexType">
				<annotation>
					<documentation>calculates the average for each area in the output geometry</documentation>
				</annotation>
			</element>
			<element name="bilinear" type="fews:InterpolationSpatialBilinearComplexType">
				<annotation>
					<documentation>calculates the output value by using bilinear interpolation from a rectangular grid to any other grid, profile or scalars. Can be used to rescale or reproject a grid</documentation>
				</annotation>
			</element>
			<element name="closestDistance" type="fews:InterpolationSpatialClosestDistanceComplexType">
				<annotation>
					<documentation>interpolates by searching the closest location</documentation>
				</annotation>
			</element>
			<element name="gridToPolygons" type="fews:InterpolationSpatialGridToPolygonsComplexType">
				<annotation>
					<documentation>Converts a regular grid to contour polygons.</documentation>
				</annotation>
			</element>
			<element name="containingPolygon" type="fews:InterpolationSpatialContainingPolygonComplexType">
				<annotation>
					<documentation>For each input polygon this transformation copies the value of the input polygon to all output points that are inside the input polygon. If an output point is not contained in any input polygon, then the output is a missing value.</documentation>
				</annotation>
			</element>
			<element name="inputAverageTimesOutputArea" type="fews:InterpolationSpatialInputAverageTimesOutputAreaComplexType">
				<annotation>
					<documentation>Calculates the weighted average of input variables and multiplies the output with the output area</documentation>
				</annotation>
			</element>
			<element name="inverseDistance" type="fews:InterpolationSpatialInverseDistanceComplexType">
				<annotation>
					<documentation>With this interpolation option a new value will be computed out of existing values of neighbouring points using the power of inverse distance procedure.</documentation>
				</annotation>
			</element>
			<element name="polygonRelatedLocations" type="fews:InterpolationSpatialPolygonRelatedLocationsComplexType">
				<annotation>
					<documentation>A intermediate polygon and a location relation is used to find the locations in the input variable. An output location is first mapped to an intermediate polygon. A location relation is used to map the intermediate polygon to one or more locations in the input variable. An inverse distance is applied to all related locations</documentation>
				</annotation>
			</element>
			<element name="kriging" type="fews:InterpolationSpatialKrigingComplexType">
				<annotation>
					<documentation>With this interpolation option a new value will be computed out of existing values of neighbouring points using the normal Kriging procedure.</documentation>
				</annotation>
			</element>
			<element name="max" type="fews:InterpolationSpatialMaximumComplexType">
				<annotation>
					<documentation>calculates the maximum for each area in the output geometry</documentation>
				</annotation>
			</element>
			<element name="min" type="fews:InterpolationSpatialMinimumComplexType">
				<annotation>
					<documentation>calculates the minimum for each area in the output geometry</documentation>
				</annotation>
			</element>
			<element name="sum" type="fews:InterpolationSpatialSumComplexType">
				<annotation>
					<documentation>calculates the sum for each area in the output geometry</documentation>
				</annotation>
			</element>
			<element name="count" type="fews:InterpolationSpatialCountComplexType">
				<annotation>
					<documentation>Counts the number of stations/cell  with a non missing value for each area in the output geometry. Optionally it is possible to skip cells/stations outside a specified value range</documentation>
				</annotation>
			</element>
			<element name="percentile" type="fews:InterpolationSpatialPercentileComplexType">
				<annotation>
					<documentation>Count the percentile for stations/cell with a non missing value for each area in the output geometry. Optionally it is possible to skip cells/stations outside a
						specified value range
					</documentation>
				</annotation>
			</element>
			<element name="thiessenPolygon" type="fews:InterpolationSpatialThiessenPolygonComplexType">
				<annotation>
					<documentation>First creates a Thiessen net from the input locations, then averages this over the region inside a polygon.</documentation>
				</annotation>
			</element>
			<element name="triangulation" type="fews:InterpolationSpatialTriangulationComplexType">
				<annotation>
					<documentation>Renka and Cline triangulation.</documentation>
				</annotation>
			</element>
			<element name="verticalProfileClosestDistance" type="fews:InterpolationSpatialVerticalProfileClosestDistanceComplexType">
				<annotation>
					<documentation>Converts 2d grids to vertical profiles. Input: one or more horizontal 2D grid time series (layers), that together form one 3D grid time series. Output: one or more vertical profile time series. For each output vertical profile time series the x,y coordinates of its configured location are used to slice the input 3D grid time series to create a vertical profile. For each output x,y coordinate the corresponding values in the input grids are found using closestDistance interpolation within the specified searchRadius (optional). The z-coordinates of the values in the output vertical profiles are the same as the z-coordinates of the input grid layers.</documentation>
				</annotation>
			</element>
			<element name="weighted" type="fews:InterpolationSpatialWeightedComplexType">
				<annotation>
					<documentation>Calculates the weighted average of the input values. The weights are re-scaled so that the total weight becomes 1. If for a given time an input variable has a missing value, then for that time that input variable is ignored and the weights of the other input variables are re-scaled so that the total weight becomes 1.</documentation>
				</annotation>
			</element>
			<element name="linearChainage" type="fews:InterpolationSpatialLinearChainageComplexType">
				<annotation>
					<documentation>With this method you can copy (a part of) a longitudinal profile to another profile also when the destination profile contains more or less points. For points that are not available in the input profile a linear chainage interpolation is used between the two closest point in the input profile that are available.</documentation>
				</annotation>
			</element>
			<element name="snapTrackToLocations" type="fews:InterpolationSpatialSnapTrackToLocationsComplexType">
				<annotation>
					<documentation>Converts a track to multiple scalar time series. A maximum snap distance can be configured. The closest track point within a time step of the output time series is used.</documentation>
				</annotation>
			</element>
			<element name="riemannBoundary" type="fews:InterpolationSpatialRiemannBoundaryComplexType">
				<annotation>
					<documentation>Since 2017.02. Performs the Riemann boundary calculation to convert scalar time series on coarse grid locations to scalar time series on boundary locations of a fine grid.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="LookupTransformationChoiceComplexType">
		<choice>
			<element name="simple" type="fews:SimpleTableLookupComplexType">
				<annotation>
					<documentation>Function that is defined by [input, output] value pairs. For input values for which there is no output value defined, the output value is determined using interpolation or extrapolation, depending on the specified options.</documentation>
				</annotation>
			</element>
			<element name="twoDimensionalLookup" type="fews:TwoDimensionalLookupComplexType">
				<annotation>
					<documentation>Function that is defined by [input1, input2, output] value pairs. For input values for which there is no output value defined, the output value is determined using interpolation or extrapolation, depending on the specified options.</documentation>
				</annotation>
			</element>
			<element name="twoDimensionalTable" type="fews:MultipleTableLookupComplexType">
				<annotation>
					<documentation>This function has a coefficientSet with a two-dimensional table. For each row and each column the table contains an output value. The values of the rowIndexLookupVariable and the columnIndexLookupVariable are used to lookup a row and a column in the table to get the output value from.</documentation>
				</annotation>
			</element>
			<element name="threeDimensionalLookup" type="fews:ThreeDimensionalLookupComplexType">
				<annotation>
					<documentation>This transformation function is used to calculate an output value based on a lookup table. This function uses 3 input variables to perform the lookup. Linear interpolation only, no extrapolation.Data source is csv file.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="MultipleLocationAttributesComplexType">
		<sequence>
			<choice>
				<element name="multipleIinearRegression" type="fews:MultipleLinearRegressionComplexType">
					<annotation>
						<documentation>Since 2019.01 Calculate an output value by using multiple linear regression. The factors and constant are provided by location attributes</documentation>
					</annotation>
				</element>
				<element name="multipleVariateThresholds" type="fews:MultiVariateThresholdsComplexType">
					<annotation>
						<documentation>Since 2019.01 Calculate the threshold level by defining threshold boundaries by using location attributes</documentation>
					</annotation>
				</element>
				<element name="inputLocationSetsBasedMultivariateThresholds" type="fews:InputLocationSetsBasedMultivariateThresholdsComplexType">
					<annotation>
						<documentation>Since 2019.02 Calculate the threshold level by defining threshold lower boundaries based on location attributes of input locations within location sets</documentation>
					</annotation>
				</element>
				<element name="multipleOutputLocationThresholds" type="fews:MultipleOutputLocationThresholdsComplexType">
					<annotation>
						<documentation>Since 2023.01 Write a configured value to the output time series if any of the input time series has a treshold crossed for the output location</documentation>
					</annotation>
				</element>
			</choice>
		</sequence>
	</complexType>
	<complexType name="MergeTransformationChoiceComplexType">
		<choice>
			<element name="interpolation" type="fews:MergeInterpolationComplexType">
				<annotation>
					<documentation>Since 2017.02. Merges input time series with different grids to a single output grid by using a configured spatial interpolation.</documentation>
				</annotation>
			</element>
			<element name="mean" type="fews:MergeMeanComplexType">
				<annotation>
					<documentation>Merges mean time series with different time steps to a merged mean time series</documentation>
				</annotation>
			</element>
			<element name="relations" type="fews:MergeRelationsComplexType">
				<annotation>
					<documentation>Since 2013.01. FEWS-8619: Merges input data that is defined using one or more configured relations (expressions). Each relation contains a period for which it is valid and a free format expression that is used to determine the output value for that relation. If for a given time step the first relation produces a missing value, then the next relation is used. If that also produces a missing value, then the next relation is used, and so on, until a non-missing output value is found. The output time series contains for each time step the configured output comment (optional) of the relation that was used to determine the value for that time step. If all relations produce a missing value for a given time step, then the output for that time step is a missing value.</documentation>
				</annotation>
			</element>
			<element name="simple" type="fews:MergeSimpleComplexType">
				<annotation>
					<documentation>Merges input time series.</documentation>
				</annotation>
			</element>
			<element name="oneToMany" type="fews:MergeOneToManyComplexType">
				<annotation>
					<documentation>Merges input time series which are allowed to have one to many relations which can lead to multiple input series per input variable</documentation>
				</annotation>
			</element>
			<element name="synoptic" type="fews:MergeSynopticComplexType">
				<annotation>
					<documentation>Merges synoptic time series (data values that are accumulations over overlapping periods of time) to a time series with hourly data values.</documentation>
				</annotation>
			</element>
			<element name="toggle" type="fews:MergeToggleComplexType">
				<annotation>
					<documentation>Merges input time series. If input time series contains a gap larger than maxGapLength, then it will be replaced (toggled instead of merged) with the next input time series in the hierarchy.</documentation>
				</annotation>
			</element>
			<element name="gap" type="fews:MergeGapComplexType">
				<annotation>
					<documentation>Merges input time series. If input time series contains a gap larger than maxGapLength, then it will be replaced with the next input time series in the hierarchy.</documentation>
				</annotation>
			</element>
			<element name="weighted" type="fews:MergeWeightedComplexType">
				<annotation>
					<documentation>Merges two input time series with weights that are a function of time.</documentation>
				</annotation>
			</element>
			<element name="selectLocation" type="fews:MergeSelectLocationComplexType">
				<annotation>
					<documentation>Selects an input time series based on the value of an attribute.</documentation>
				</annotation>
			</element>
			<element name="selectDataSource" type="fews:MergeSelectDataSourceComplexType">
				<annotation>
					<documentation>Selects a data source based on the value of an attribute.</documentation>
				</annotation>
			</element>
			<element name="copy" type="fews:MergeCopyComplexType">
				<annotation>
					<documentation>Since 2021.02, copies copyFlags and/or copyFlagSourceColumns.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="MultiVariateThresholdsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="ruleAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the rule id</documentation>
						</annotation>
					</element>
					<element name="directionalParameters" type="fews:DirectionalParametersComplexType" minOccurs="0">
						<annotation>
							<documentation>The variables for which the values are always between 0-360</documentation>
						</annotation>
					</element>
					<element name="inputVariableAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the variable</documentation>
						</annotation>
					</element>
					<element name="inputLocationAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the input location</documentation>
						</annotation>
					</element>
					<element name="lowerBoundAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the lower bound</documentation>
						</annotation>
					</element>
					<element name="lowerBoundInclusiveAttributeId" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>The attribute id which defines if the lower bound is inclusive or not. If this attribute is not defined the lower bound will not be inclusive</documentation>
						</annotation>
					</element>
					<element name="upperBoundAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines if the upper bound</documentation>
						</annotation>
					</element>
					<element name="upperBoundInclusiveAttributeId" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>The attribute which defines if the upper bound is inclusive or not. If this attribute is not defined the upper bound is inclusive</documentation>
						</annotation>
					</element>
					<element name="ruleOutcomeAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the value which will be written to the output time series</documentation>
						</annotation>
					</element>
					<element name="ruleOutcomeValueToSelect" type="fews:ruleOutcomeValueToSelectEnumStringType" minOccurs="0" default="highest">
						<annotation>
							<documentation>When multiple rules apply, this element specifies which the preference based on the value of the rule outcome. By default the rule with highest outcome has preference</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.multipleLocationAttributes.MultiVariateThresholdsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InputLocationSetsBasedMultivariateThresholdsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="ruleAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the rule id</documentation>
						</annotation>
					</element>
					<element name="inputVariableAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the variable of the transformation</documentation>
						</annotation>
					</element>
					<element name="inputLocationSetIdAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the input location set containing the locations from the input variable that need to be used.</documentation>
						</annotation>
					</element>
					<choice>
						<element name="lowerBoundAttributeId" type="fews:idStringType">
							<annotation>
								<documentation>The attribute id which defines the lower bound which needs to be crossed in order for the rule to apply</documentation>
							</annotation>
						</element>
						<element name="inputLocationLowerBoundReferringAttributeId" type="fews:idStringType">
							<annotation>
								<documentation>The id of an attribute which value is another attribute id which will be used to look up the input location specific lower bound value</documentation>
							</annotation>
						</element>
					</choice>
					<element name="numberOfTimeSeriesWithinBoundariesAttributeId" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>The attribute which defines the number of time series within the input time series set that need to be within boundaries. If this attribute is not defined all time series need to be within boundaries for this rule to apply</documentation>
						</annotation>
					</element>
					<element name="ruleOutcomeAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the value which will be written to the output time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.multipleLocationAttributes.InputLocationSetsBasedMultivariateThresholdsFunction"
							 minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MultipleOutputLocationThresholdsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="thresholdValueAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the threshold value</documentation>
						</annotation>
					</element>
					<element name="crossingDirection" type="fews:crossingDirectionEnumStringType" minOccurs="0" default="up">
						<annotation>
							<documentation>The direction of crossings that should be taken into account, default is up</documentation>
						</annotation>
					</element>
					<element name="filterAttribute" type="fews:FilterAttributeComplexType">
						<annotation>
							<documentation>The attribute id and the corresponding value that should be included</documentation>
						</annotation>
					</element>
					<element name="outputValue" type="float">
						<annotation>
							<documentation>The value which will be written to the output when a threshold is crossed</documentation>
						</annotation>
					</element>
					<element name="outputLocationAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines for which output location a value should be written</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.multipleLocationAttributes.MultipleOutputLocationThresholdsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="crossingDirectionEnumStringType">
		<restriction base="string">
			<enumeration value="up"/>
			<enumeration value="down"/>
			<enumeration value="above"/>
			<enumeration value="below"/>
		</restriction>
	</simpleType>
	<complexType name="StatisticsSameAttributeValueCountThresholdCrossingsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="matchingAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which determines which input time series should be used for the output time series</documentation>
						</annotation>
					</element>
					<element name="filterAttribute" type="fews:FilterAttributeComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Attribute with a specific value that determines if input time series should be included</documentation>
						</annotation>
					</element>
					<element name="thresholdValueAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute id which defines the input location set containing the locations from the input variable that need to be used.</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.CountThresholdCrossingsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DirectionalParametersComplexType">
		<sequence>
			<element name="parameterId" type="fews:idStringType" maxOccurs="unbounded">
				<annotation>
					<documentation>the parameter id of a directional time series</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="MultipleLinearRegressionComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="constantAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the constant value</documentation>
						</annotation>
					</element>
					<element name="variableAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the variable</documentation>
						</annotation>
					</element>
					<element name="inputLocationAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the input location</documentation>
						</annotation>
					</element>
					<element name="factorAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>The attribute which defines the factor</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.multipleLocationAttributes.MultipleLinearRegressionFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MoistureTransformationChoiceComplexType">
		<choice>
			<element name="opticalDepth" type="fews:MoistureOpticalDepthComplexType">
				<annotation>
					<documentation>Calculates optical depth. For grid time series only.</documentation>
				</annotation>
			</element>
			<element name="soilMoisture" type="fews:MoistureSoilMoistureComplexType">
				<annotation>
					<documentation>Calculates soil moisture. For grid time series only.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="PerformanceIndicatorsLeadTimeAccuracyChoiceComplexType">
		<choice>
			<element name="bias" type="fews:PerformanceIndicatorsLeadTimeAccuracyComplexType">
				<annotation>
					<documentation>Error = (forecastValue - observedValue). Bias = (sum of the errors of all forecasts) / numberOfForecasts.</documentation>
				</annotation>
			</element>
			<element name="rootMeanSquareError" type="fews:PerformanceIndicatorsLeadTimeAccuracyComplexType">
				<annotation>
					<documentation>Error = (forecastValue - observedValue). RMSE = sqrt[(sum of the squared errors of all forecasts) / numberOfForecasts].</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="PrecipitationTransformationChoiceComplexType">
		<choice>
			<!--			<element name="rainfallEvent" type="fews:PrecipitationRainfallEventComplexType">
				<annotation>
					<documentation>TODO Collect the median rainfall values of rainfall events (periods with extensive rainfall).</documentation>
				</annotation>
			</element>
			<element name="rainfallEventLength" type="fews:PrecipitationRainfallEventLengthComplexType">
				<annotation>
					<documentation>TODO Collect the lengths of rainfall events (periods with extensive rainfall).</documentation>
				</annotation>
			</element> -->
			<element name="tippingBucket" type="fews:PrecipitationTippingBucketComplexType">
				<annotation>
					<documentation>Converts a non-equidistant time series with tipping bucket rainfall data to an equidistant time series with accumulated rainfall data.</documentation>
				</annotation>
			</element>
			<element name="deAccumulation" type="fews:PrecipitationDeAccumulationComplexType">
				<annotation>
					<documentation>De-accumulation for precipitation time series. Values will be skipped and reset based on unreliable (void) flag and reset flag</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="ProfileTransformationChoiceComplexType">
		<choice>
			<element name="timeSeries" type="fews:ProfileTimeSeriesComplexType">
				<annotation>
					<documentation>Converts a profile to a time series.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="SampleTransformationChoiceComplexType">
		<choice>
			<element name="daySample" type="fews:DaySampleComplexType">
				<annotation>
					<documentation>Samples the input timeseries to a dayly timeseries using the time of T0 to determine the sampling moment. Output variable should be a non-equidistant simulated timeseries to accommodate shifting sampling times.</documentation>
				</annotation>
			</element>
			<element name="dayMonthSample" type="fews:DayMonthSampleComplexType">
				<annotation>
					<documentation>Samples the input timeseries to a day month output timeseries using the day-month of T0 to determine the sampling moment. Output variable should be a non-equidistant simulated timeseries to accommodate shifting sampling times.</documentation>
				</annotation>
			</element>
			<element name="julianDaySample" type="fews:JulianDaySampleComplexType">
				<annotation>
					<documentation>Since 2013.01. FEWS-8576. samples the input time series to the output time series using the Julian Days.</documentation>
				</annotation>
			</element>
			<element name="equidistant" type="fews:SampleEquidistantComplexType">
				<annotation>
					<documentation>Transform equidistant to another equidistant or to nonEquidistant time series.</documentation>
				</annotation>
			</element>
			<element name="historical" type="fews:SampleHistoricalComplexType"/>
			<element name="nonEquidistant" type="fews:SampleNonEquidistantComplexType">
				<annotation>
					<documentation>Transform nonEquidistant to equidistant time series.</documentation>
				</annotation>
			</element>
			<element name="nonEquidistantSingleValue" type="fews:NonEquidistantSingleValueComplexType">
				<annotation>
					<documentation>For each time step in the reference time series a value is retrieved</documentation>
				</annotation>
			</element>
			<element name="sampleSingleTimeStep" type="fews:SampleSingleTimeStepComplexType">
				<annotation>
					<documentation>For each time step in the reference time series a value is retrieved</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="SelectionTransformationChoiceComplexType">
		<choice>
			<element name="independentLows" type="fews:SelectionIndependentLowsComplexType">
				<annotation>
					<documentation>Finds the low values of the input time series and writes this to the output time series.</documentation>
				</annotation>
			</element>
			<element name="lows" type="fews:SelectionLowsComplexType">
				<annotation>
					<documentation>Finds the low values of the input time series and writes this to the output time series.</documentation>
				</annotation>
			</element>
			<element name="maximum" type="fews:SelectionMaximumComplexType">
				<annotation>
					<documentation>Finds the maximum value of the input time series and writes this to the output time series. The maximum value will be written at the same time as in the input time series. Ignores unreliable values. If multiple values are equal to the maximum, then the latest value is used.</documentation>
				</annotation>
			</element>
			<element name="minimum" type="fews:SelectionMinimumComplexType">
				<annotation>
					<documentation>Finds the minimum value of the input time series and writes this to the output time series. The minimum value will be written at the same time as in the input time series. Ignores unreliable values. If multiple values are equal to the minimum, then the latest value is used.</documentation>
				</annotation>
			</element>
			<element name="independentPeaks" type="fews:SelectionIndependentPeaksComplexType">
				<annotation>
					<documentation>Finds the peak values of the input time series and writes this to the output time series.</documentation>
				</annotation>
			</element>
			<element name="peaks" type="fews:SelectionPeaksComplexType">
				<annotation>
					<documentation>Finds the peak values of the input time series and writes this to the output time series.</documentation>
				</annotation>
			</element>
			<element name="timeToSelection" type="fews:TimeToSelectionComplexType">
				<annotation>
					<documentation>Calculates for each timestep in the output time series the time (in minutes) to/from the nearest data point in the input time series, which typically is the result of any one of the other selection transformations.</documentation>
				</annotation>
			</element>
			<element name="maximumAroundPeak" type="fews:MaximumAroundPeakComplexType">
				<annotation>
					<documentation>Finds for each peak time from inputPeaksVariable a maximum value from inputVariable. The maximum value is searched in a period configured with a time window</documentation>
				</annotation>
			</element>
			<element name="valuesAfterChangeWithTimeWindow" type="fews:SelectionValuesAfterChangeWithTimeWindowComplexType">
				<annotation>
					<documentation>Since 2013.01. FEWS-8585. Copies values from the inputVariable to the outputVariable under certain conditions. The specified conditionVariable is searched for changes during the run period of the transfomation. When the conditionVariable value changes, then a time window is created. This time window starts at the time of the change. The length of the time window (in seconds) is determined by evaluating the specified timeWindowLengthExpression at the time of the change. For each change in the conditionVariable a new time window is created (time windows can overlap). If the specified selectionType is select_inside_time_window, then all inputVariable values that are within at least one time window are copied to the outputVariable and all other inputVariable values are ignored. If selectionType is select_outside_time_window then all inputVariable values that are within at least one time window are ignored and all other inputVariable values are copied to the outputVariable. This can be used e.g. to filter out measurement values during periods where the measured system is not in a (quasi) steady state due to changes happening in the system. Produces missing output values at times where there is not enough reliable or doubtful data available in the condition and/or expression variables to determine if there is a change or to determine the length of a time window. Any such missing output values are truncated from the start and end of the run period of the transformation, to avoid overwriting data from previous runs with overlapping run periods.</documentation>
				</annotation>
			</element>
			<element name="astronomicalNumberForPeaksAndLows" type="fews:AstronomicalNumberSelectedPeakComplexType">
				<annotation>
					<documentation>Since 2016.01. This transformation should be used in combination with a transformation to calculate the peak or low for a tidal time series. For each calculated peak or low the astronomical number will be calculated.</documentation>
				</annotation>
			</element>
			<element name="ensembleMemberByIndex" type="fews:EnsembleMemberByIndexSelectionComplexType">
				<annotation>
					<documentation>Since 2019.01. Select value of the (ensemble) time series that matches with member index of input time series</documentation>
				</annotation>
			</element>
			<element name="gridEnsembleMemberByIndex" type="fews:SelectionGridEnsembleMemberIndexComplexType">
				<annotation>
					<documentation>Since 2020.02. This transformation function is used to calculate an output value based on a lookup table. This function uses 3 input variables to perform the lookup. Linear interpolation only, no extrapolation.Data source is csv file.</documentation>
				</annotation>
			</element>
			<element name="selectionScalarTimeSeriesFromScalarMap" type="fews:SelectionScalarTimeSeriesFromScalarMapComplexType">
				<annotation>
					<documentation>Since 2020.02. This transformation function extracts a scalar timesSeries from a scalar map series. If a range of domain values is defined instead of one value, the average of these values will be calculated as an output.</documentation>
				</annotation>
			</element>
			<element name="selectionScalarTimeSeriesLayersFromScalarMap" type="fews:SelectionScalarTimeSeriesLayersFromScalarMapComplexType">
				<annotation>
					<documentation>Since 2020.02. This transformation function extracts a scalar timesSeries from a scalar map series. If a range of domain values is defined instead of one value, the average of these values will be calculated as an output.</documentation>
				</annotation>
			</element>
			<element name="selectNumberedTidalPeaks" type="fews:SelectNumberedTidalPeaksComplexType">
				<annotation>
					<documentation>Since 2020.02. This transformation function selects actual tidal peaks based on a astrological tide input.</documentation>
				</annotation>
			</element>
			<element name="selectNumberedTidalLows" type="fews:SelectNumberedTidalLowsComplexType">
				<annotation>
					<documentation>Since 2020.02. This transformation function selects actual tidal lows based on a astrological tide input.</documentation>
				</annotation>
			</element>
			<element name="topographicProminencePeaks" type="fews:TopographicProminencePeaksComplexType">
				<annotation>
					<documentation>Since 2020.02. This transformation function selects actual tidal lows based on a astrological tide input.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<group name="SelectionTransformationTotalNumberChoiceGroup">
		<choice>
			<element name="totalNumber" type="positiveInteger">
				<annotation>
					<documentation>total number of elements</documentation>
				</annotation>
			</element>
			<sequence>
				<element name="totalNumberBeforeT0" type="nonNegativeInteger">
					<annotation>
						<documentation>total number of elements before time zero</documentation>
					</annotation>
				</element>
				<element name="totalNumberAfterT0" type="nonNegativeInteger">
					<annotation>
						<documentation>total number of elements after time zero</documentation>
					</annotation>
				</element>
				<element name="skipJustBeforeT0" type="nonNegativeInteger" minOccurs="0">
					<annotation>
						<documentation>number of elements to skip just before time zero</documentation>
					</annotation>
				</element>
				<element name="skipJustAfterT0" type="nonNegativeInteger" minOccurs="0">
					<annotation>
						<documentation>number of elements to skip just after time zero</documentation>
					</annotation>
				</element>
			</sequence>
		</choice>
	</group>
	<complexType name="StageDischargeTransformationChoiceComplexType">
		<choice>
			<element name="mergedRatingCurves" type="fews:StageDischargeMergedRatingCurvesComplexType">
				<annotation>
					<documentation>Merges two rating curves using a time dependent weight variable and uses the resulting rating curve to convert stage input values to discharge output values. For each timeStep in the output time series, first the specified two rating curves are merged using the value of the weight input time series at that timeStep. If weight is 1, then uses the first rating curve. If weight is 0, then uses the second rating curve. If weight is between 0 and 1, then interpolates linearly between the first and the second rating curve to get the merged rating curve. Then the merged rating curve is used to convert the stage input value for that timeStep to a discharge output value. This can only use rating curves that are stored as time series in the dataStore. This uses the equation Q_output = weight*Q_ratingCurve1(H_input) + (1 - weight)*Q_ratingCurve2(H_input).</documentation>
				</annotation>
			</element>
			<element name="power" type="fews:StageDischargePowerComplexType">
				<annotation>
					<documentation>Converts stage (H) to discharge (Q) for an open cross section. Uses equation Q=a*(H+b)^c.</documentation>
				</annotation>
			</element>
			<element name="table" type="fews:StageDischargeTableComplexType">
				<annotation>
					<documentation>Converts stage (water level) to discharge (water flow) using a table with stage and discharge values.</documentation>
				</annotation>
			</element>
			<element name="ratingCurve" type="fews:StageDischargeRatingCurveComplexType">
				<annotation>
					<documentation>Converts stage (water level) to discharge (water flow) using a table with stage and discharge values.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="StatisticsValuePropertiesChoiceComplexType">
		<choice>
			<element name="forecastPeak" type="fews:ForecastPeakComplexType">
				<annotation>
					<documentation>Calculates 3 statistics, how many peaks are predicted correctly, for how many peak the height is predicted incorrectly and how many peaks are missed. For the calculation input forecast time series with value properties are compared to observed time series</documentation>
				</annotation>
			</element>
			<element name="forecastPeakMatching" type="fews:ForecastPeakMatchingComplexType">
				<annotation>
					<documentation>Matches forecast peaks with observed peaks, writes the observed peak time and value in properties to the forecast output</documentation>
				</annotation>
			</element>
			<element name="forecastPeakEvaluation" type="fews:ForecastPeakEvaluationComplexType">
				<annotation>
					<documentation>Evaluates whether forecasts matched with peaks have been predicted correctly</documentation>
				</annotation>
			</element>
			<element name="thresholdExceedanceCount" type="fews:ThresholdExceedanceCountComplexType">
				<annotation>
					<documentation>Calculates 4 statistics, how many threshold exceedences are:  forecast but not observed, observed but not forecast, forecast but not within an acceptable time range and for how many are correctly forecast. For the calculation input forecast time series with value properties are compared to observed time series</documentation>
				</annotation>
			</element>
			<element name="thresholdExceedanceMatching" type="fews:ThresholdExceedanceMatchingComplexType">
				<annotation>
					<documentation>Calculates 4 statistics, how many threshold exceedences are:  forecast but not observed, observed but not forecast, forecast but not within an acceptable time range and for how many are correctly forecast. For the calculation input forecast time series with value properties are compared to observed time series</documentation>
				</annotation>
			</element>
			<element name="thresholdExceedanceEvaluation" type="fews:ThresholdExceedanceEvaluationComplexType">
				<annotation>
					<documentation>Matches forecast threshold exceedances with observed exceedances, when a match is found the time of threshold crossing is written in a property for the forecast with id "Prediction_Value_Exceed_Time"</documentation>
				</annotation>
			</element>
			<element name="forecastsOnTimeCount" type="fews:CountForecastsOnTimeComplexType">
				<annotation>
					<documentation>Count how many forecasts where issued on time. It uses date time properties that specify when the next forecast was supposed to be issued and when it is actually issued. Needs consecutive forecasts because one contains information about the next, so will always need 1 forecast extra before the forecast search period.</documentation>
				</annotation>
			</element>
			<element name="valueCount" type="fews:ValuePropertyCountComplexType">
				<annotation>
					<documentation>Count how many time steps there are in the input time series which contain all value properties with the exact values as configured</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="StatisticsEnsembleChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsEnsembleCountComplexType"/>
			<element name="eventProbability" type="fews:StatisticsEnsembleEventProbabilityComplexType"/>
			<element name="kurtosis" type="fews:StatisticsEnsembleComplexType"/>
			<element name="max" type="fews:StatisticsEnsembleComplexType"/>
			<element name="mean" type="fews:StatisticsEnsembleComplexType"/>
			<element name="median" type="fews:StatisticsEnsembleComplexType"/>
			<element name="memberIndexOfMax" type="fews:StatisticsEnsembleMemberIndexOfMaxComplexType"/>
			<element name="rank" type="fews:StatisticsEnsembleMemberRankComplexType"/>
			<element name="min" type="fews:StatisticsEnsembleComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsEnsemblePercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsEnsemblePercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsEnsembleQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsEnsembleComplexType"/>
			<element name="rsquared" type="fews:StatisticsEnsembleComplexType"/>
			<element name="skewness" type="fews:StatisticsEnsembleComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsEnsembleComplexType"/>
			<element name="sum" type="fews:StatisticsEnsembleComplexType"/>
			<element name="variance" type="fews:StatisticsEnsembleComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsSummaryChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsSummaryCountComplexType"/>
			<element name="countFlags" type="fews:StatisticsSummaryCountFlagsComplexType">
				<annotation>
					<documentation>Counts the number of input values that have the configured reliability (flag) and for which the reason for rejection is equal to the configured validation rule (flagSource).</documentation>
				</annotation>
			</element>
			<element name="kurtosis" type="fews:StatisticsSummaryComplexType"/>
			<element name="max" type="fews:StatisticsSummaryComplexType"/>
			<element name="mean" type="fews:StatisticsSummaryComplexType"/>
			<element name="median" type="fews:StatisticsSummaryComplexType"/>
			<element name="min" type="fews:StatisticsSummaryComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsSummaryPercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsSummaryPercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsSummaryQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsSummaryComplexType"/>
			<element name="rsquared" type="fews:StatisticsSummaryComplexType"/>
			<element name="skewness" type="fews:StatisticsSummaryComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsSummaryComplexType"/>
			<element name="sum" type="fews:StatisticsSummaryComplexType"/>
			<element name="variance" type="fews:StatisticsSummaryComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsVerticalLayersChoiceComplexType">
		<choice>
			<element name="averageScalarVerticalLayers" type="fews:StatisticsVerticalAverageScalarComplexType"/>
			<element name="averageGridZLayers" type="fews:StatisticsVerticalAverageGridZLayerComplexType"/>
			<element name="averageGridSigmaLayers" type="fews:StatisticsVerticalAverageGridSigmaLayerComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsPeriodicChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsPeriodicCountComplexType"/>
			<element name="countFlags" type="fews:StatisticsPeriodicCountFlagsComplexType">
				<annotation>
					<documentation>Counts the number of input values that have the configured reliability (flag) and for which the reason for rejection is equal to the configured validation rule (flagSource).</documentation>
				</annotation>
			</element>
			<element name="kurtosis" type="fews:StatisticsPeriodicComplexType"/>
			<element name="max" type="fews:StatisticsPeriodicComplexType"/>
			<element name="mean" type="fews:StatisticsPeriodicComplexType"/>
			<element name="median" type="fews:StatisticsPeriodicComplexType"/>
			<element name="min" type="fews:StatisticsPeriodicComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsPeriodicPercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsPeriodicPercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsPeriodicQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsPeriodicComplexType"/>
			<element name="rsquared" type="fews:StatisticsPeriodicComplexType"/>
			<element name="skewness" type="fews:StatisticsPeriodicComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsPeriodicComplexType"/>
			<element name="sum" type="fews:StatisticsPeriodicComplexType"/>
			<element name="variance" type="fews:StatisticsPeriodicComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsSerialChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsSerialCountComplexType"/>
			<element name="countFlags" type="fews:StatisticsSerialCountFlagsComplexType">
				<annotation>
					<documentation>Counts the number of input values that have the configured reliability (flag) and for which the reason for rejection is equal to the configured validation rule (flagSource).</documentation>
				</annotation>
			</element>
			<element name="kurtosis" type="fews:StatisticsSerialComplexType"/>
			<element name="max" type="fews:StatisticsSerialComplexType"/>
			<element name="mean" type="fews:StatisticsSerialComplexType"/>
			<element name="median" type="fews:StatisticsSerialComplexType"/>
			<element name="min" type="fews:StatisticsSerialComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsSerialPercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsSerialPercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsSerialQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsSerialComplexType"/>
			<element name="rsquared" type="fews:StatisticsSerialComplexType"/>
			<element name="skewness" type="fews:StatisticsSerialComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsSerialComplexType"/>
			<element name="sum" type="fews:StatisticsSerialComplexType"/>
			<element name="variance" type="fews:StatisticsSerialComplexType"/>
			<element name="geometricMean" type="fews:StatisticsSerialComplexType"/>
			<element name="periodVaryingMean" type="fews:PeriodVaryingMeanComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsSameAttributeValueChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsSameAttributeValueCountComplexType"/>
			<element name="countThresholdCrossings" type="fews:StatisticsSameAttributeValueCountThresholdCrossingsComplexType"/>
			<element name="kurtosis" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="max" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="mean" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="median" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="min" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsSameAttributeValuePercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsSameAttributeValuePercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsSameAttributeValueQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="rsquared" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="skewness" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="sum" type="fews:StatisticsSameAttributeValueComplexType"/>
			<element name="variance" type="fews:StatisticsSameAttributeValueComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsChildLocationsChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsChildLocationsCountComplexType"/>
			<element name="kurtosis" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="max" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="mean" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="median" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="min" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsChildLocationsPercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsChildLocationsPercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsChildLocationsQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="rsquared" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="skewness" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="sum" type="fews:StatisticsChildLocationsComplexType"/>
			<element name="variance" type="fews:StatisticsChildLocationsComplexType"/>
		</choice>
	</complexType>
	<complexType name="StatisticsRelatedLocationsChoiceComplexType">
		<choice>
			<element name="count" type="fews:StatisticsRelatedLocationsCountComplexType"/>
			<element name="kurtosis" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="max" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="mean" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="median" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="min" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="percentileExceedence" type="fews:StatisticsRelatedLocationsPercentileExceedenceComplexType"/>
			<element name="percentileNonExceedence" type="fews:StatisticsRelatedLocationsPercentileNonExceedenceComplexType"/>
			<element name="quartile" type="fews:StatisticsRelatedLocationsQuartileComplexType"/>
			<element name="rootMeanSquareError" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="rsquared" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="skewness" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="standardDeviation" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="sum" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="variance" type="fews:StatisticsRelatedLocationsComplexType"/>
			<element name="large" type="fews:StatisticsRelatedLocationsLargeComplexType"/>
			<element name="rank" type="fews:StatisticsRankComplexType"/>
		</choice>
	</complexType>
	<complexType name="AccumulationTransformationChoiceComplexType">
		<choice>
			<element name="max" type="fews:AccumulationMaxComplexType">
				<annotation>
					<documentation>This transformation takes a time series, and replaces the values to the highest value, that has been observed up to that point. It ignores unreliable values. Available since 2019.02</documentation>
				</annotation>
			</element>
			<element name="meanInterval" type="fews:AccumulationMeanIntervalComplexType">
				<annotation>
					<documentation>This transformation calculates the accumulative mean from the input time series within several intervals. The intervals are defined by the specified intervalTimeStep. For a given interval the first output value equals the first input value within the interval and the other output values are equal to the mean of the corresponding input value and all previous input values within the interval. The startTime of an interval is exclusive and the endTime of an interval is inclusive. The output time series must have the same timeStep as the input time series. The calculation starts at the first valid interval time step within the run period. Therefore the relative view period for the input and output variables must be large enough so that it contains at least one interval time step.</documentation>
				</annotation>
			</element>
			<element name="sum" type="fews:AccumulationSumComplexType">
				<annotation>
					<documentation>This transformation creates a cumulative curve from the entire input time series. The output is one cumulative curve that starts at value 0 at the start of the run period. Each output value is the sum of the corresponding input value and all previous input values. The output time series must have the same timeStep as the input time series. In case the transformation is from instantaneous/mean to accumulated, the result is multiplied by the timestep.</documentation>
				</annotation>
			</element>
			<element name="sumInterval" type="fews:AccumulationSumIntervalComplexType">
				<annotation>
					<documentation>This transformation creates cumulative curves from the input time series within several intervals. The intervals are defined by the specified intervalTimeStep. For a given interval the first output value equals the first input value within the interval and the other output values are equal to the sum of the corresponding input value and all previous input values within the interval. The startTime of an interval is exclusive and the endTime of an interval is inclusive. The output time series must have the same timeStep as the input time series. In case the transformation is from instantaneous/mean to accumulated, the result is multiplied by the timestep. The calculation starts at the first valid interval time step within the run period. Therefore the relative view period for the input and output variables must be large enough so that it contains at least one interval time step.</documentation>
				</annotation>
			</element>
			<element name="sumIntervalWithResetCondition" type="fews:AccumulationSumIntervalWithResetConditionComplexType">
				<annotation>
					<documentation>This transformation creates cumulative curves from the input time series within several intervals. The intervals are defined by the specified intervalTimeStep. For a given interval the first output value equals the first input value within the interval and the other output values are equal to the sum of the corresponding input value and all previous input values within the interval. The startTime of an interval is exclusive and the endTime of an interval is inclusive. The output time series must have the same timeStep as the input time series. In case the transformation is from instantaneous/mean to accumulated, the result is multiplied by the timestep. The calculation starts at the first valid interval time step within the run period. Therefore the relative view period for the input and output variables must be large enough so that it contains at least one interval time step. The reset condition sets the curve during the calculation to zero when the cumulative value is positive or negative (depending on the condition selected)</documentation>
				</annotation>
			</element>
			<element name="sumOriginAtTimeZero" type="fews:AccumulationSumOriginAtTimeZeroComplexType">
				<annotation>
					<documentation>Calculates the accumulation of the forecast and the accumulation of the historical data. In this context all input values before T0 are historical data and all input values after T0 are forecast data. The sum of the historical data is accumulated backwards in time starting at T0. The sum of the forecast data is accumulated forwards in time starting at T0. The output time series must have the same timeStep as the input time series. In case the transformation is from instantaneous/mean to accumulated, the result is multiplied by the timestep.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="AdjustTransformationChoiceComplexType">
		<choice>
			<element name="adjustQ" type="fews:AdjustQComplexType">
				<annotation>
					<documentation>Adjusts the simulated discharge values by using instantaneous discharge values and/or mean daily discharge values. If both time series are available both time series will be used in the adjustment procedure.</documentation>
				</annotation>
			</element>
			<element name="adjustQUsingMeanDailyDischarge" type="fews:AdjustQUsingMeanDailyDischargeComplexType">
				<annotation>
					<documentation>Adjusts the simulated discharge values by using mean daily discharge values.</documentation>
				</annotation>
			</element>
			<element name="adjustQUsingObservedInstantaneousDischarge" type="fews:AdjustQUsingObservedInstantaneousDischargeComplexType">
				<annotation>
					<documentation>Adjusts the simulated discharge values by using instantaneous discharge values.</documentation>
				</annotation>
			</element>
			<element name="adjustStage" type="fews:AdjustStageComplexType">
				<annotation>
					<documentation>adjust the forecast with the input from stagerev</documentation>
				</annotation>
			</element>
			<element name="adjustTide" type="fews:AdjustTideComplexType">
				<annotation>
					<documentation>Adjusts the tidal time series by using the adjustments created by operation tideBalanceReview</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="RegressieTransformationChoiceComplexType">
		<choice>
			<element name="principalComponentAnalysis" type="fews:PrincipalComponentAnalysisComplexType">
				<annotation>
					<documentation>This transformations derives an equation to estimate the historical model results with historical observations. The rmse of the estimated model results is also calculated. By using the equation the current model results are estimated by using the current observations.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="PrincipalComponentAnalysisComplexType">
		<annotation>
			<documentation>This transformations derives an equation to estimate the historical model results with historical observations. The rmse of the estimated model results is also calculated. By using the equation the current model results are estimated by using the current observations.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="historicalObserved" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Input variable with the historical observed value</documentation>
						</annotation>
					</element>
					<element name="historicalSimulated" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the historical simulated values</documentation>
						</annotation>
					</element>
					<element name="currentObserved" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Current observed values. These values are used to estimate the current simulated values.</documentation>
						</annotation>
					</element>
					<element name="currentSimulated" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>current simulated values. These values are used to compare the estimated current value with.</documentation>
						</annotation>
					</element>
					<element name="enableCombinationAnalysis" type="boolean" default="true">
						<annotation>
							<documentation>The error of the estimates of the current simulation values</documentation>
						</annotation>
					</element>
					<element name="rmseCalculationMethod" type="fews:rmseCalculationMethodSimpleType" minOccurs="0"/>
					<element name="maxEstimatedValue" type="float" minOccurs="0">
						<annotation>
							<documentation>maximum allowed value for the estimated value. If the value is higher, the derived equation will be skipped.</documentation>
						</annotation>
					</element>
					<element name="estimatedCurrentSimulated" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Estimates for the simulated values. The estimates are calculated by using the derived equation.</documentation>
						</annotation>
					</element>
					<element name="errorStatistics" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>The error of the estimates of the current simulation values</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.regression.PCAFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="rmseCalculationMethodSimpleType">
		<restriction base="string">
			<enumeration value="standard"/>
			<enumeration value="jackKnife"/>
		</restriction>
	</simpleType>
	<complexType name="ReviewTransformationChoiceComplexType">
		<choice>
			<element name="tidalCorrectionByMatchingAstronomicalNumber" type="fews:TidalCorrectionByAstronomicalNumberComplexType">
				<annotation>
					<documentation>This transformation corrects the events in a time series based on corrections from another time series. The events are matched by astronical number</documentation>
				</annotation>
			</element>
			<element name="stageReview" type="fews:AdjustStageRevComplexType">
				<annotation>
					<documentation>Divides the stage into equal ranges and calculates the difference between the forecast and the measured data for each range</documentation>
				</annotation>
			</element>
			<element name="tidalBalanceReview" type="fews:TidalBalanceReviewComplexType">
				<annotation>
					<documentation>Calculates the balance between observed and forecasted tides, creates estimates for future tides.</documentation>
				</annotation>
			</element>
			<element name="historicalErrorResampler" type="fews:HistoricalErrorResamplerComplexType">
				<annotation>
					<documentation>Resamples error for a forecast based on historical forecasts and observations.</documentation>
				</annotation>
			</element>
			<element name="tidalPeakCorrection" type="fews:TidalPeakCorrectionComplexType">
				<annotation>
					<documentation>Resamples error for a forecast based on historical forecasts and observations.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="StructureTransformationChoiceComplexType">
		<choice>
			<element name="crumpWeir" type="fews:StructureCrumpWeirComplexType">
				<annotation>
					<documentation>Converts stage to discharge.</documentation>
				</annotation>
			</element>
			<element name="crumpWeirBackwater" type="fews:StructureCrumpWeirBackwaterComplexType">
				<annotation>
					<documentation>Converts stage to discharge, taking tailLevel into account.</documentation>
				</annotation>
			</element>
			<element name="flatVWeir" type="fews:StructureFlatVWeirComplexType">
				<annotation>
					<documentation>Converts stage to discharge.</documentation>
				</annotation>
			</element>
			<element name="flatVWeirBackwater" type="fews:StructureFlatVWeirBackwaterComplexType">
				<annotation>
					<documentation>Converts stage to discharge, taking tailLevel into account.</documentation>
				</annotation>
			</element>
			<element name="generalWeirFixedHeight" type="fews:StructureGeneralWeirFixedHeightComplexType">
				<annotation>
					<documentation>General weir function which has a fixed height. The height is configured in the coefficient set.</documentation>
				</annotation>
			</element>
			<element name="generalWeirVariableHeight" type="fews:StructureGeneralWeirVariableHeightComplexType">
				<annotation>
					<documentation>General weir function which has a variable height. The height is one of the input variables.</documentation>
				</annotation>
			</element>
			<element name="pumpFixedDischarge" type="fews:StructurePumpFixedDischargeComplexType">
				<annotation>
					<documentation>Calculates discharge of a pump, using a fixed discharge when the pump is on. The fixed discharge is equal to the capacity of the pump and is defined in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="pumpHeadDischargeTable" type="fews:StructurePumpHeadDischargeTableComplexType">
				<annotation>
					<documentation>Calculates discharge of a pump. When the pump is on, then the discharge equals the capacity of the pump. The capacity of the pump depends on the head. The discharges for different heads are defined in a table in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="pumpSpeedDischargeTable" type="fews:StructurePumpSpeedDischargeTableComplexType">
				<annotation>
					<documentation>Calculates discharge of a speed-controlled pump with a fixed capacity. When the pump is on, then the discharge of the pump depends only on the speed. The discharges for different speeds are defined in a table in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="pumpSpeedHeadDischargeTable" type="fews:StructurePumpSpeedHeadDischargeTableComplexType">
				<annotation>
					<documentation>Calculates discharge of a speed-controlled pump with a head-dependent capacity. When the pump is on, then the discharge of the pump depends on both the speed and the head. The discharges for different speeds and heads are defined in a table in a coefficientSet.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="TimeShiftTransformationChoiceComplexType">
		<choice>
			<element name="constant" type="fews:TimeShiftConstantComplexType">
				<annotation>
					<documentation>Function to shift time series data by a fixed number of time steps. Note: this transformation produces output only for the relative view period of the output variable. In other words, input values that are shifted outside the output period will be lost. To avoid this, make the output period large enough to contain all the shifted input data values. Note that a negative shift forward in time is the same as a positive shift backward in time.</documentation>
				</annotation>
			</element>
			<element name="referenceDateTime" type="fews:TimeShiftReferenceDateTimeComplexType">
				<annotation>
					<documentation>Function to shift time series data by a fixed number of time steps, using a fixed absolute reference date time. The number of time steps to shift, is determined as follows: periodToShift = T0 - referenceDateTime. Where T0 is the timeZero of the workflow in which this transformation runs. If T0 and/or referenceDateTime are not valid times according to the output timeStep, then they are rounded to the nearest valid times. The specified direction determines whether the shift is applied toward T0, or toward the referenceDateTime. This transformation can be used to shift values from the configured referenceDateTime to T0, or from T0 to the referenceDateTime. Note: this transformation produces output only for the relative view period of the output variable. In other words, input values that are shifted outside the output period will be lost. To avoid this, make the output period large enough to contain all the shifted input data values.</documentation>
				</annotation>
			</element>
			<element name="length" type="fews:TimeShiftLengthComplexType">
				<annotation>
					<documentation>For a given time in the outputVariable series and inputVariable series (inputVariable and outputVariable must have the same times), this function searches for the nearest time (in forward, backward or both of these directions) in the lookupVariable series. The result is the difference between the nearest time found in the lookupVariable series and the time in the inputVariable series, rounded to seconds.</documentation>
				</annotation>
			</element>
			<element name="variable" type="fews:TimeShiftVariableComplexType">
				<annotation>
					<documentation>Shift input time series in time using shifts defined in another time series. For each entry in the input variable, it looks for a value in the shiftValues variable that shared the same time. This value represents the amount of seconds the input value will be shifted. Example: Let's say the 3 variables all have a 1 second timestep and the first value for each variable is at the same time. The values are as follows: input [5, 3, 12, 2], timeshift [0, 1, 0, -2], output [ , , , ]. This is what the output variable would look like after processing the first element from the input variable: [5, , , ], after 2nd [5, , 3, ] after 3rd [5, , 12, ] and after 4th [5, 2, 12, ].</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="UserDefinedInputElementTransformationComplexType">
		<sequence>
			<element name="fieldName" type="string">
				<annotation>
					<documentation>name of the field in the function in which the defined input time series will be loaded.</documentation>
				</annotation>
			</element>
			<element name="inputVariable" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Input variable which will be loaded into the field of the function with the corresponding name</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="UserDefinedOutputElementTransformationComplexType">
		<sequence>
			<element name="fieldName" type="string">
				<annotation>
					<documentation>name of the field in the function in which the defined output time series will be loaded.</documentation>
				</annotation>
			</element>
			<element name="outputVariable" type="fews:OutputVariableComplexType">
				<annotation>
					<documentation>Output variable which will be loaded into the field of the function with the corresponding name</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="UserDefinedTransformationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:UserDefinedInputElementTransformationComplexType" maxOccurs="unbounded"/>
					<element name="options" type="fews:PropertiesComplexType" minOccurs="0">
						<annotation>
							<documentation>the options group can be used to pass configuration options to the custom transformation. The value of the option will be loaded into the field of the function which has the same name as the key. The framework will check if the defined type in the function is the same as defined in the configuration</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:UserDefinedOutputElementTransformationComplexType" maxOccurs="unbounded"/>
					<element name="binDir" type="fews:directoryStringType" minOccurs="0">
						<annotation>
							<documentation>Directory which contains the jar(s) with the userdefined function and (possible) helper classes</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType">
						<annotation>
							<documentation>class which implements the user defined transformation</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="UserTransformationChoiceComplexType">
		<choice>
			<element name="periodic" type="fews:UserPeriodicComplexType">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients. Output values will be shifted periodically to within a given range, e.g. [0, 360].</documentation>
				</annotation>
			</element>
			<element name="simple" type="fews:UserSimpleComplexType">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<group name="CoefficientSetChoiceGroup">
		<annotation>
			<documentation>Groups all types of coefficient sets.</documentation>
		</annotation>
		<choice>
			<element name="adjust" type="fews:AdjustCoefficientSetChoiceComplexType"/>
			<element name="altitude" type="fews:AltitudeCoefficientSetChoiceComplexType"/>
			<element name="filter" type="fews:FilterCoefficientSetChoiceComplexType"/>
			<element name="generation" type="fews:GenerationCoefficientSetChoiceComplexType"/>
			<element name="lookup" type="fews:LookupCoefficientSetChoiceComplexType"/>
			<element name="merge" type="fews:MergeCoefficientSetChoiceComplexType"/>
			<element name="moisture" type="fews:MoistureCoefficientSetChoiceComplexType"/>
			<!--			<element name="precipitation" type="fews:PrecipitationCoefficientSetChoiceComplexType"/> -->
			<element name="selection" type="fews:SelectionCoefficientSetChoiceComplexType"/>
			<element name="stageDischarge" type="fews:StageDischargeCoefficientSetChoiceComplexType"/>
			<element name="structure" type="fews:StructureCoefficientSetChoiceComplexType"/>
			<element name="user" type="fews:UserCoefficientSetChoiceComplexType"/>
		</choice>
	</group>
	<complexType name="AdjustCoefficientSetChoiceComplexType">
		<choice>
			<element name="adjustQ" type="fews:AdjustQCoefficientSetComplexType" maxOccurs="unbounded"/>
			<element name="adjustQUsingInstantaneousDischarge" type="fews:AdjustQUsingInstantaneousDischargeCoefficientSetComplexType" maxOccurs="unbounded"/>
			<element name="adjustQUsingMeanDialyDischarge" type="fews:AdjustQUsingMeanDailyDischargeCoefficientSetComplexType" maxOccurs="unbounded"/>
		</choice>
	</complexType>
	<complexType name="AltitudeCoefficientSetChoiceComplexType">
		<choice>
			<element name="elevationLapse" type="fews:AltitudeElevationLapseCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates the temperature at the output location, using the temperature at the input location, the difference in elevation between the input and output location and a temperature lapse rate. This transformation uses the following equation. outputTemperature = inputTemperature + (inputElevation - outputElevation) * temperatureLapseRate / 100. Here the temperatureLapseRate is in degrees per 100 meters of elevation (typically 0.6 degrees Celsius per 100 meters).</documentation>
				</annotation>
			</element>
			<element name="zeroDegreeAltitude" type="fews:AltitudeZeroDegreeAltitudeCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates the altitude where the temperature is zero degrees. Assumes that the temperature is lower at higher altitude. Uses the heights defined for the locations in the input time series.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="FilterCoefficientSetChoiceComplexType">
		<choice>
			<element name="lowPass" type="fews:FilterLowPassCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Low pass filter for discrete functions (e.g. time series). This transformation calculates the following difference equation. y(t) = b0*x(t) + b1*x(t-1) + ... + bM*x(t-M) + a1*y(t-1) + ... + aN*y(t-N). Here x is the input, y is the output, t denotes time, b0 to bM are the feedforward coefficients and a1 to aN are the feedback coefficients.</documentation>
				</annotation>
			</element>
			<element name="gaussian" type="fews:FilterGaussianCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Smoothing transformation based on a gaussian function.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="GenerationCoefficientSetChoiceComplexType">
		<choice>
			<element name="constant" type="fews:GenerationConstantCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
				</annotation>
			</element>
			<element name="recessionMean" type="fews:GenerationRecessionMeanCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
				</annotation>
			</element>
			<element name="recessionPattern" type="fews:GenerationRecessionPatternCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
				</annotation>
			</element>
			<element name="tidalConstituents" type="fews:GenerationTidalConstituentsCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="LookupCoefficientSetChoiceComplexType">
		<choice>
			<element name="simple" type="fews:SimpleTableLookupCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Table lookup in a 1 dimension table.</documentation>
				</annotation>
			</element>
			<element name="twoDimensionalLookup" type="fews:TwoDimensionalLookupCoefficientSetComplexType" maxOccurs="unbounded"/>
			<element name="twoDimensionalTable" type="fews:MultipleTableLookupCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Table lookup in 1 matrix with 2 lookup variables. The first one determine the row position, the second one the column position</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="MergeCoefficientSetChoiceComplexType">
		<choice>
			<element name="relations" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Since 2013.01. FEWS-8619. Data hierarchy using relations.</documentation>
				</annotation>
			</element>
			<element name="simple" type="fews:MergeSimpleCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Data hierarchy</documentation>
				</annotation>
			</element>
			<element name="weighted" type="fews:MergeWeightedCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Since 2013.01. FEWS-8619</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="MoistureCoefficientSetChoiceComplexType">
		<choice>
			<element name="opticalDepth" type="fews:MoistureOpticalDepthCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates optical depth. For grid time series only.</documentation>
				</annotation>
			</element>
			<element name="soilMoisture" type="fews:MoistureSoilMoistureCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates soil moisture. For grid time series only.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<!--	<complexType name="PrecipitationCoefficientSetChoiceComplexType">
		<choice>
			<element name="rainfallEvent" type="fews:PrecipitationRainfallEventCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Collect the median rainfall values of rainfall events (periods with extensive rainfall).</documentation>
				</annotation>
			</element>
			<element name="rainfallEventLength" type="fews:PrecipitationRainfallEventLengthCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Collect the lengths of rainfall events (periods with extensive rainfall).</documentation>
				</annotation>
			</element>
		</choice>
	</complexType> -->
	<complexType name="SelectionCoefficientSetChoiceComplexType">
		<choice>
			<element name="valuesAfterChangeWithTimeWindow" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Copies values from the inputVariable to the outputVariable under certain conditions. The specified condition variable is searched for changes during the run period of the transfomation. When the condition variable value changes, then a time window is created. This time window starts at the time of the change. The length of the time window (in seconds) is determined by evaluating the specified expression at the time of the change. For each change in the condition variable a new time window is created (time windows can overlap). If the specified option selectOrDeselect is equal to select, then all inputVariable values that are within a time window are copied to the outputVariable and all other inputVariable values are ignored. If the specified option selectOrDeselect is equal to deselect, then all inputVariable values that are within a time window are ignored and all other inputVariable values are copied to the outputVariable. This can be used e.g. to filter out measurement values during periods where the measured system is not in a (quasi) steady state due to changes happening in the system.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="StageDischargeCoefficientSetChoiceComplexType">
		<choice>
			<element name="power" type="fews:StageDischargePowerCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Converts stage (H) to discharge (Q) or discharge to stage for an open cross section. Uses equation Q=a*(H+b)^c.</documentation>
				</annotation>
			</element>
			<element name="table" type="fews:StageDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Converts stage (H) to discharge (Q) or discharge to stage.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="StructureCoefficientSetChoiceComplexType">
		<choice>
			<element name="crumpWeir" type="fews:StructureCrumpWeirCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Converts stage to discharge.</documentation>
				</annotation>
			</element>
			<element name="crumpWeirBackwater" type="fews:StructureCrumpWeirCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Converts stage to discharge, taking tailLevel into account.</documentation>
				</annotation>
			</element>
			<element name="flatVWeir" type="fews:StructureFlatVWeirCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Converts stage to discharge.</documentation>
				</annotation>
			</element>
			<element name="flatVWeirBackwater" type="fews:StructureFlatVWeirCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Converts stage to discharge, taking tailLevel into account.</documentation>
				</annotation>
			</element>
			<element name="pumpFixedDischarge" type="fews:StructurePumpFixedDischargeCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates discharge of a pump, using a fixed discharge when the pump is on. The fixed discharge is equal to the capacity of the pump and is defined in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="pumpHeadDischargeTable" type="fews:StructurePumpHeadDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates discharge of a pump. When the pump is on, then the discharge equals the capacity of the pump. The capacity of the pump depends on the head. The discharges for different heads are defined in a table in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="pumpSpeedDischargeTable" type="fews:StructurePumpSpeedDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates discharge of a speed-controlled pump with a fixed capacity. When the pump is on, then the discharge of the pump depends only on the speed. The discharges for different speeds are defined in a table in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="pumpSpeedHeadDischargeTable" type="fews:StructurePumpSpeedHeadDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Calculates discharge of a speed-controlled pump with a head-dependent capacity. When the pump is on, then the discharge of the pump depends on both the speed and the head. The discharges for different speeds and heads are defined in a table in a coefficientSet.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="UserCoefficientSetChoiceComplexType">
		<choice>
			<element name="periodic" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients. Output values will be shifted periodically to within a given range, e.g. [0, 360].</documentation>
				</annotation>
			</element>
			<element name="simple" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="AccumulationMaxComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.accumulation.AccumulationMaxFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AccumulationMeanIntervalComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="intervalTimeStep" type="fews:TimeStepComplexType">
						<annotation>
							<documentation>This time step defines the intervals that are used for the accumulation. Each time in this time step is the boundary between two intervals. The calculation starts at the first valid interval time step within the run period. Therefore the relative view period for the input and output variables must be large enough so that it contains at least one interval time step.</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then output values will be set to missing values starting from the first missing input value in an interval until the end of that interval. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.accumulation.AccumulationMeanIntervalFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AccumulationSumComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored and treated as 0. If false, then output values will be set to missing values starting from the first missing input value. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.accumulation.AccumulationSumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AccumulationSumIntervalComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="preCalculatedInputVariable" type="fews:InputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Input variable which contains values that can immediatly be written to the output, the accumulation can then continue from the last available time step. This can save loading lots of data and calculating output values that have been calculated and written before.</documentation>
						</annotation>
					</element>
					<element name="intervalTimeStep" type="fews:TimeStepComplexType">
						<annotation>
							<documentation>This time step defines the intervals that are used for the accumulation. Each time in this time step is the boundary between two intervals. The calculation starts at the first valid interval time step within the run period. Therefore the relative view period for the input and output variables must be large enough so that it contains at least one interval time step.</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored and treated as 0. If false, then output values will be set to missing values starting from the first missing input value in an interval until the end of that interval. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.accumulation.AccumulationSumIntervalFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AccumulationSumIntervalWithResetConditionComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="intervalTimeStep" type="fews:TimeStepComplexType">
						<annotation>
							<documentation>This time step defines the intervals that are used for the accumulation. Each time in this time step is the boundary between two intervals. The calculation starts at the first valid interval time step within the run period. Therefore the relative view period for the input and output variables must be large enough so that it contains at least one interval time step.</documentation>
						</annotation>
					</element>
					<element name="resetCondition" type="fews:resetConditionTypeEnumStringType">
						<annotation>
							<documentation>During the calculation, if the cumulative value is either positive or negative (depending on condition chosen), it is set to zero. This zero value will then be used to base the next cumulative value on. i.e. If resetCondition is set to negative, the serie 4,-3,-3,1,2 would result in 4,1,0,1,3 and NOT 4,1,0,0,1</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored and treated as 0. If false, then output values will be set to missing values starting from the first missing input value in an interval until the end of that interval. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.accumulation.AccumulationSumIntervalWithResetConditionFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="resetConditionTypeEnumStringType">
		<annotation>
			<documentation>TODO </documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="positive"/>
			<enumeration value="negative"/>
		</restriction>
	</simpleType>
	<complexType name="AccumulationSumOriginAtTimeZeroComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored and treated as 0. If false, then output values will be set to missing values starting from the first missing input value. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.accumulation.AccumulationSumOriginAtTimeZeroFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustStageRevComplexType">
		<annotation>
			<documentation>Divides the stage into equal ranges and calculates the difference between the forecast and the measurements for each range</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="observedStage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the observed stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="forecastStage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the computed stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="averageBalanceFirstSegment" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Balance for the first segment. The first segment is segment with the lowest stage ranges</documentation>
						</annotation>
					</element>
					<element name="averageBalanceSecondSegment" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Balance for the second segment</documentation>
						</annotation>
					</element>
					<element name="averageBalanceThirdSegment" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Balance for the third segment</documentation>
						</annotation>
					</element>
					<element name="averageBalanceFourthSegment" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Balance for the fourth segment</documentation>
						</annotation>
					</element>
					<element name="startFirstStageRange" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>start of the first segment</documentation>
						</annotation>
					</element>
					<element name="startSecondStageRange" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>end of the first segment and the start of the second segment</documentation>
						</annotation>
					</element>
					<element name="startThirdStageRange" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>start of the third segment</documentation>
						</annotation>
					</element>
					<element name="startFourthStageRange" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>start of the fourth segment</documentation>
						</annotation>
					</element>
					<element name="endFourthStageRange" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>end of the fourth segment</documentation>
						</annotation>
					</element>
					<element name="maxDifference" type="float" minOccurs="0">
						<annotation>
							<documentation>If the difference between the forecast stage and the observed stage is larger then the maxDifference this difference will not be used for the calculation of the average balance.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.review.StageRevFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustTideComplexType">
		<annotation>
			<documentation>adjusts the tidal time series by using the output from tideBalanceReview</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="observedTidalStage" type="fews:InputVariableComplexType"/>
					<element name="forecastTidalStage" type="fews:InputVariableComplexType"/>
					<element name="tideBalance" type="fews:InputVariableComplexType"/>
					<element name="adjustedTidalStage" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.adjust.AdjustTideFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQComplexType">
		<annotation>
			<documentation>adjusts the simulated discharge values with observed discharge data</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="correctNegativeFlowValuesToZero" type="boolean" minOccurs="0" default="true"/>
					<element name="observedInstantaneousDischarge" type="fews:InputVariableComplexType"/>
					<element name="observedMeanDailyDischarge" type="fews:InputVariableComplexType"/>
					<element name="simulatedDischarge" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:AdjustQCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variables. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:AdjustQCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>Since 2014.01. A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
						<element name="moduleParameterFile" type="fews:nameStringType">
							<annotation>
								<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
							</annotation>
						</element>
					</choice>
					<element name="adjustedSimulatedDischarge" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.adjust.AdjustQFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="blendingSteps" type="positiveInteger"/>
					<element name="errorTolerance" type="float" default="0.025"/>
					<element name="maxNumberOfIterations" type="fews:positiveInteger" default="15"/>
					<element name="interpolationType" type="fews:adjustQUsingObservedInstantaneousDischargeInterpolationTypeEnumStringType"/>
					<element name="disableAdjustment" type="boolean" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="blendingSteps" type="string"/>
					<element name="errorTolerance" type="string"/>
					<element name="maxNumberOfIterations" type="string"/>
					<element name="interpolationType" type="string"/>
					<element name="disableAdjustment" type="string" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQUsingMeanDailyDischargeComplexType">
		<annotation>
			<documentation>Adjusts the simulated discharge values with a adjustment method which uses mean daily discharge values</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="observedMeanDailyDischarge" type="fews:InputVariableComplexType"/>
					<element name="simulatedDischarge" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:AdjustQUsingMeanDailyDischargeCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variables. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:AdjustQUsingMeanDailyDischargeCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>Since 2014.01. A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="adjustedSimulatedDischarge" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.adjust.AdjustQUsingMeanDailyDischargeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQUsingMeanDailyDischargeCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="errorTolerance" type="float" default="0.01"/>
					<element name="maxNumberOfIterations" type="positiveInteger" default="15"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQUsingMeanDailyDischargeCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="errorTolerance" type="string"/>
					<element name="maxNumberOfIterations" type="string"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQUsingObservedInstantaneousDischargeComplexType">
		<annotation>
			<documentation>interpolates the missing values in the observed data with simulated data</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="correctNegativeFlowValuesToZero" type="boolean" minOccurs="0" default="true"/>
					<element name="observedDischarge" type="fews:InputVariableComplexType"/>
					<element name="simulatedInstantaneousDischarge" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:AdjustQUsingInstantaneousDischargeCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variables. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:AdjustQUsingInstantaneousDischargeCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>Since 2014.01. A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
						<element name="moduleParameterFile" type="fews:nameStringType">
							<annotation>
								<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
							</annotation>
						</element>
					</choice>
					<element name="adjustedForecastDischarge" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.adjust.AdjustQUsingObservedInstantaneousDischargeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQUsingInstantaneousDischargeCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="blendingSteps" type="positiveInteger"/>
					<element name="interpolationType" type="fews:adjustQUsingObservedInstantaneousDischargeInterpolationTypeEnumStringType"/>
					<element name="disableAdjustment" type="boolean" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AdjustQUsingInstantaneousDischargeCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="blendingSteps" type="string"/>
					<element name="interpolationType" type="string"/>
					<element name="disableAdjustment" type="string" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ValidationRuleComplexType">
		<sequence>
			<element name="minimumInputValuesCount" type="fews:intStringAttributeType" minOccurs="0">
				<annotation>
					<documentation>Only works for non-equidistant data. When there are less than the minimum number of input values available the validation rule is not considered valid.</documentation>
				</annotation>
			</element>
			<element name="inputDoubtfulPercentage" type="fews:floatStringAttributeType" minOccurs="0"/>
			<element name="inputMissingPercentage" type="fews:floatStringAttributeType" minOccurs="0"/>
			<element name="outputValueFlag" type="fews:validationRuleFlagEnumStringType"/>
			<element name="outputCustomFlagSourceId" type="fews:idStringType" minOccurs="0"/>
		</sequence>
	</complexType>
	<simpleType name="validationRuleFlagEnumStringType">
		<restriction base="string">
			<enumeration value="missing"/>
			<enumeration value="doubtful"/>
			<enumeration value="reliable"/>
		</restriction>
	</simpleType>
	<complexType name="AggregationAccumulativeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. The time step of this output variable is used as the period to aggregate values over.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.aggregation.AggregationAccumulativeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<group name="ValidationRulesGroup">
		<sequence>
			<element name="validationRule" type="fews:ValidationRuleComplexType" minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<documentation>Since 2013.01. FEWS-8586</documentation>
				</annotation>
			</element>
		</sequence>
	</group>
	<complexType name="AggregationInstantaneousComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. The time step of this output variable is used as the period to aggregate values over.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.aggregation.AggregationInstantaneousFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AggregationMeanToMeanComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
						<element name="ignoreMissings" type="boolean" default="false">
							<annotation>
								<documentation>Default is false</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. The time step of this output variable is used as the period to aggregate values over.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.aggregation.AggregationMeanToMeanFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AggregationInstantaneousToMeanComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice id="sdfghuiiuj">
						<element name="allowMissingValues" type="boolean" default="false" minOccurs="0"/>
						<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					</choice>
					<element name="includeFirstValueOfAggregationPeriodInCalculation" type="boolean" default="true" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. The time step of this output variable is used as the period to aggregate values over.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.aggregation.AggregationInstantaneousToMeanFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AggregationNonEquidistantTimeSpanComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="includeMissingValues" type="boolean" minOccurs="0" default="false">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="statisticMethod" type="fews:statisticsEnumStringType"/>
					<element name="aggregationTimespan" type="fews:TimeSpanComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. The time step of this output variable is used as the period to aggregate values over.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="statisticsEnumStringType">
		<annotation>
			<documentation>Supported statistics for nonequidistant aggregation</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="max"/>
			<enumeration value="min"/>
			<enumeration value="mean"/>
			<enumeration value="sum"/>
		</restriction>
	</simpleType>
	<complexType name="AltitudeElevationLapseComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input temperature.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:AltitudeElevationLapseCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputTemperature" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output temperature.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.altitude.AltitudeElevationLapseFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AltitudeElevationLapseCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="temperatureLapseRate" type="float">
						<annotation>
							<documentation>Temperature lapse rate in degrees per 100 meters of elevation (typically 0.6 degrees Celsius per 100 meters).</documentation>
						</annotation>
					</element>
					<element name="inputElevation" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional. If present, then this number is used for the inputElevation. If not present, then the inputElevation is derived from the input location or the input grid geometry.</documentation>
						</annotation>
					</element>
					<element name="outputElevation" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional. If present, then this number is used for the outputElevation. If not present, then the outputElevation is derived from the output location.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AltitudeZeroDegreeAltitudeComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<annotation>
					<documentation>Calculates the altitude where the temperature is zero degrees. Assumes that the temperature is lower at higher altitude. Uses the heights defined for the locations in the input time series.</documentation>
				</annotation>
				<sequence>
					<element name="temperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:AltitudeZeroDegreeAltitudeCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="altitude" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.altitude.AltitudeZeroDegreeAltitudeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AltitudeZeroDegreeAltitudeCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="minAltitude" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional minimum altitude. If zero degrees altitude is below all input locations, then returns this minAltitude value, if present. If in this case minAltitude is not present, then returns the altitude of the lowest input location.</documentation>
						</annotation>
					</element>
					<element name="maxAltitude" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional maximum altitude. If zero degrees altitude is above all input locations, then returns this maxAltitude value, if present. If in this case maxAltitude is not present, then returns the altitude of the highest input location.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="RotationUVVectorsFromRotatedPoleToWgs1984ComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputU" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable that contains the u component values of the velocity vectors in the rotated pole geoDatum.</documentation>
						</annotation>
					</element>
					<element name="inputV" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable that contains the v component values of the velocity vectors in the rotated pole geoDatum.</documentation>
						</annotation>
					</element>
					<element name="outputU" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable to store the u component values of the velocity vectors in the Wgs1984 geoDatum.</documentation>
						</annotation>
					</element>
					<element name="outputV" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable to store the v component values of the velocity vectors in the Wgs1984 geoDatum.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.rotation.RotationUVVectorsFromRotatedPoleToWgs1984Function" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PiersonMoskowitzSpectrum1DComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="frequencyAxis" type="fews:FrequencyAxisComplexType">
						<annotation>
							<documentation>Definition of the frequency axis</documentation>
						</annotation>
					</element>
					<element name="significantWaveHeight" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of significant wave height [m]</documentation>
						</annotation>
					</element>
					<element name="peakWavePeriod" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of peak wave period [s]</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>output scalar time series of 1D Pierson-Moskowitz spectrum</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.wave.PiersonMoskowitzSpectrum1DFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="JonswapSpectrum1DComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="frequencyAxis" type="fews:FrequencyAxisComplexType">
						<annotation>
							<documentation>Definition of the frequency axis</documentation>
						</annotation>
					</element>
					<element name="significantWaveHeight" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of significant wave height [m]</documentation>
						</annotation>
					</element>
					<element name="peakWavePeriod" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of peak wave period [s]</documentation>
						</annotation>
					</element>
					<element name="peakShapeGamma" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of non-dimensional peak shape parameter [-]</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>output scalar time series of 1D JONSWAP spectrum</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.wave.JonswapSpectrum1DFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="Spectrum2DComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="frequencyAxis" type="fews:FrequencyAxisComplexType">
						<annotation>
							<documentation>Definition of the frequency axis</documentation>
						</annotation>
					</element>
					<element name="directionAxis" type="fews:DirectionAxisComplexType">
						<annotation>
							<documentation>Definition of the direction axis</documentation>
						</annotation>
					</element>
					<element name="significantWaveHeight" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of significant wave height [m]</documentation>
						</annotation>
					</element>
					<element name="peakWavePeriod" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of peak wave period [s]</documentation>
						</annotation>
					</element>
					<element name="peakShapeGamma" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of non-dimensional peak shape parameter [-]</documentation>
						</annotation>
					</element>
					<element name="direction" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of nautical mean wave direction [deg], used to compute output variable spectrum2D</documentation>
						</annotation>
					</element>
					<element name="directionalSpreading" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>scalar time series of directional spreading [deg], used to compute  output variable spectrum2D</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>output scalar time series of wave energy density with two domainParameters (bins_freq, bins_dir) for a single location [m2/Hz/deg]</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.wave.Spectrum2DFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FrequencyAxisComplexType">
		<sequence>
			<element name="frequencyLow" type="double"/>
			<element name="frequencyHigh" type="double"/>
			<element name="frequencyNumBins" type="positiveInteger"/>
		</sequence>
	</complexType>
	<complexType name="DirectionAxisComplexType">
		<sequence>
			<element name="directionalResolution" type="positiveInteger">
				<annotation>
					<documentation>directional bin resolution in degrees</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="DisaggregationWeightsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="weight" type="float" maxOccurs="unbounded">
						<annotation>
							<documentation>Weights used for disaggregation.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.disaggregation.DisaggregationWithWeightsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DischargeStageMergedRatingCurvesComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="discharge" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<element name="weight" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with weight values.</documentation>
						</annotation>
					</element>
					<element name="ratingCurve" type="fews:MergedRatingCurvesTransformationRatingCurveComplexType" minOccurs="2" maxOccurs="2">
						<annotation>
							<documentation>References to two rating curves that are merged and used to convert discharge to stage values for this transformation. This can only use rating curves that are stored as time series in the dataStore. To import ratingCurves into the dataStore use timeSeriesImport module with importType pi_ratingcurves to import a file in the pi_ratingcurves.xsd format.</documentation>
						</annotation>
					</element>
					<element name="stage" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.dischargestage.DischargeStageMergedRatingCurvesFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DischargeStagePowerComplexType">
		<annotation>
			<documentation>Converts discharge (Q) to stage (H) for an open cross section. Uses equation Q=a*(H+b)^c.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="discharge" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StageDischargePowerCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StageDischargePowerCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="stage" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.dischargestage.DischargeStagePowerFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DischargeStageRatingCurveComplexType">
		<annotation>
			<documentation>Converts discharge (water flow) to stage (water level) using a table with stage and discharge values.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="discharge" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<element name="ratingCurve" type="fews:RatingCurveLocationQualifierComplexType"/>
						<element name="qualifierId" type="fews:idStringType"/>
					</choice>
					<element name="stage" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.dischargestage.DischargeStageRatingCurveFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DischargeStageTableComplexType">
		<annotation>
			<documentation>Converts discharge (water flow) to stage (water level) using a table with stage and discharge values.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="discharge" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StageDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="stage" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.dischargestage.DischargeStageTableFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!--	<complexType name="EvaporationPenmanNorthEastComplexType">
		<annotation>
			<documentation>Penman evaporation specific to the UK NorthEast region. TODO change name...</documentation>
		</annotation>
		<sequence>
			<element name="dryBulbTemperature" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Input variable.</documentation>
				</annotation>
			</element>
			<element name="wetBulbTemperature" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Input variable.</documentation>
				</annotation>
			</element>
			<element name="netSolarRadiation" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Input variable.</documentation>
				</annotation>
			</element>
			<element name="windRun" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Input variable.</documentation>
				</annotation>
			</element>
			<element name="penmanEvaporation" type="fews:OutputVariableComplexType">
				<annotation>
					<documentation>Output variable.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType> -->
	<complexType name="FilterLowPassComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable (x). If one or more of the required (previous) input values for a calculation are NaN, then the output value will be NaN.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:FilterLowPassCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:FilterLowPassCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable (y). If one or more of the required previous output values for a calculation are NaN, then these will be ignored, effectively this means that it behaves as if all previous NaN output values would be 0.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.filter.FilterLowPassFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FilterLowPassCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="a" type="float" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more feedback coefficients (a1 to aN).</documentation>
						</annotation>
					</element>
					<element name="b" type="float" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more feed forward coefficients (b0 to bM).</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FilterLowPassCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="a" type="string" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more feedback coefficients (a1 to aN).</documentation>
						</annotation>
					</element>
					<element name="b" type="string" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more feed forward coefficients (b0 to bM).</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FilterGaussianComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:FilterGaussianCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>CoefficientSet wich can be used to configure the bandwidth</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:FilterGaussianCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.filter.FilterGaussianFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FilterGaussianCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="bandWidth" type="float"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="FilterGaussianCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="bandWidth" type="string"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialBlockComplexType">
		<annotation>
			<documentation>Fills gaps in a time series with the last value before the start of the gap</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:positiveIntegerAttributeType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap in number of time steps. Gaps equal to or smaller than maxGapLength will be filled with interpolated values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with interpolated values.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialBlockFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialDefaultComplexType">
		<annotation>
			<documentation>Fills gaps in a time series with linearly interpolated data values.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:positiveIntegerAttributeType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap in number of time steps. Gaps equal to or smaller than maxGapLength will be filled with interpolated values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with interpolated values.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<element name="defaultValue" type="fews:floatStringType">
							<annotation>
								<documentation>Optional default value. If not defined, then uses 0 by default.</documentation>
							</annotation>
						</element>
						<element name="defaultValueFunction" type="string">
							<annotation>
								<documentation>Optional location dependent default value function that contains location attribute ids, e.g. @DEFAULT_VALUE@. If an attribute is missing for a location, then the default value will be 0 by default for that location.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="extrapolateDirection" type="fews:extrapolateDirectionEnumStringType" default="both" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialDefaultFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialDirectionLinearComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="directionRange" type="fews:InterpolationSerialDirectionLinearDirectionRangeComplexType">
						<annotation>
							<documentation>The range of the values in the input and output time series. For degrees this range could be e.g. 0 to 360 or e.g. -180 to 180. For radians this range could be e.g. 0 to 2*PI. Input values outside the specified range will be handled like missing values (gaps).</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:positiveIntegerAttributeType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap in number of time steps. Gaps equal to or smaller than maxGapLength will be filled with interpolated values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with interpolated values.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialDirectionLinearFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialDirectionLinearDirectionRangeComplexType">
		<sequence>
			<element name="lowerLimit" type="float"/>
			<element name="upperLimit" type="float"/>
		</sequence>
	</complexType>
	<complexType name="InterpolationSerialExtrapolateBaseComplexType">
		<annotation>
			<documentation>Extrapolates by adding future values that start at the last data value and linearly approach a given base value.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="positiveInteger" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap in number of time steps. Gaps equal to or smaller than maxGapLength will be filled with interpolated values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with interpolated values.</documentation>
						</annotation>
					</element>
					<element name="baseValue" type="float"/>
					<element name="window" type="fews:TimeSpanComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialExtrapolateBaseFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialExtrapolateConstantComplexType">
		<annotation>
			<documentation>Extrapolates by filling the gap between the start of the input time series and the first data value or by filling the gap between the last data value and the end of the input time series or by filling both of these gaps.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="extrapolateDirection" type="fews:interpolationSerialExtrapolateConstantDirectionEnumStringType">
						<annotation>
							<documentation>If direction is start, then fills only the gap between the start of the input time series and the first data value, with values that are equal to the first data value. If direction is end, then fills only the gap between the last data value and the end of the input time series, with values that are equal to the last data value. If direction is both, then fills both of these gaps.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:positiveIntegerAttributeType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of the gap at the start or end of the time series, in number of time steps. If the gap is larger than maxGapLength, then it will not be filled. If maxGapLength is not defined, then the gap will always be filled.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialExtrapolateConstantFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="interpolationSerialExtrapolateConstantDirectionEnumStringType">
		<annotation>
			<documentation>If direction is start, then fills only the gap between the start of the input time series and the first data value, with values that are equal to the first data value. If direction is end, then fills only the gap between the last data value and the end of the input time series, with values that are equal to the last data value. If direction is both, then fills both of these gaps.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="start"/>
			<enumeration value="end"/>
			<enumeration value="both"/>
		</restriction>
	</simpleType>
	<complexType name="InterpolationSerialExtrapolateExponentialComplexType">
		<annotation>
			<documentation>Extrapolates by filling the gap between the start of the input time series and the first data value or by filling the gap between the last data value and the end of the input time series or by filling both of these gaps.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="extrapolateDirection" type="fews:interpolationSerialExtrapolateConstantDirectionEnumStringType">
						<annotation>
							<documentation>If direction is start, then fills only the gap between the start of the input time series and the first data value, with values that are equal to the first data value. If direction is end, then fills only the gap between the last data value and the end of the input time series, with values that are equal to the last data value. If direction is both, then fills both of these gaps.</documentation>
						</annotation>
					</element>
					<element name="baseValue" type="float"/>
					<element name="recessionConstant" type="fews:recessionConstantSimpleType"/>
					<element name="maxGapLength" type="fews:positiveIntegerAttributeType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap in number of time steps. Gaps equal to or smaller than maxGapLength will be filled with interpolated values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with interpolated values.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialExtrapolateExponentialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialExtrapolatePatternWithSmoothingComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="matchingPeriod" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Period leading up to the last non-missing value. The values in the period are used for the pattern that is repeated.</documentation>
						</annotation>
					</element>
					<element name="smoothingPeriod" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>The length over which the smoothing is applied. In general, this period should be shorter then the matchingPeriod.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialExtrapolatePatternWithSmoothingFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="recessionConstantSimpleType">
		<restriction base="float">
			<minInclusive value="0"/>
			<maxInclusive value="1"/>
		</restriction>
	</simpleType>
	<complexType name="InterpolationSerialLinearComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:positiveIntegerAttributeType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap in number of time steps. Gaps equal to or smaller than maxGapLength will be filled with interpolated values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with interpolated values, however if the interpolateMissingGridCells option is enabled, a default value of 1 is applied to prevent the system from running out of memory on large time series.</documentation>
						</annotation>
					</element>
					<element name="interpolateMissingGridCells" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>For a timeseries of grid coverages, this option will allow missing grid cells in each coverage to be interpolated. (default is false)</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialLinearFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
					<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.01. Optional (optional since stable build 2015.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
						</annotation>
					</element>
					<element name="outputCustomFlagSourceId" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>Since 2015.02. Optional. If specified, the customFlagSource will be put in the output time series for the time steps for which this relation is used.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="OutputGeometryComplexType">
		<sequence>
			<element name="xMin" type="fews:doubleStringType">
				<annotation>
					<documentation>X coordinate of the upper left point of the grid</documentation>
				</annotation>
			</element>
			<element name="yMin" type="fews:doubleStringType">
				<annotation>
					<documentation>Y coordinate of the upper left point of the grid</documentation>
				</annotation>
			</element>
			<element name="xMax" type="fews:doubleStringType">
				<annotation>
					<documentation>X coordinate of the lower right point of the grid</documentation>
				</annotation>
			</element>
			<element name="yMax" type="fews:doubleStringType">
				<annotation>
					<documentation>Y coordinate of the lower right point of the grid</documentation>
				</annotation>
			</element>
			<element name="xCellSize" type="fews:doubleStringType">
				<annotation>
					<documentation>Width of the grid cells</documentation>
				</annotation>
			</element>
			<element name="yCellSize" type="fews:doubleStringType">
				<annotation>
					<documentation>Height of the grid cells</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="InterpolationSpatialAverageComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="maximumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialAverageFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialMinimumComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialMinimumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialMaximumComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialMaximumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialContainingPolygonComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with data for polygons.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable to store data for point locations.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialContainingPolygonFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialClosestDistanceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more input variables as input for the interpolation function</documentation>
						</annotation>
					</element>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="maximumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Maximum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="searchRadius" type="fews:doubleStringType" minOccurs="0">
						<annotation>
							<documentation>meters. Default = Infinity. BEFORE 2012.02 this value was interpreted as kilometers by accident</documentation>
						</annotation>
					</element>
					<element name="distanceGeoDatum" type="fews:geoDatumStringType" minOccurs="0">
						<annotation>
							<documentation>Geo datum used to calculate the distances in meters between the points. To calculate distances efficiently and to pre-sort the input points in a grid the earth's curved surface should be transformed to a flat two-dimensional surface. When the input geometry is not in meters calculation of distances will be very slow and a search all is required when there is no exact match. When there is no region/country specific coordinate system available choose a utm zone that best fits with your output region. http://en.wikipedia.org/wiki/File:Utm-zones.jpg. eg. UTM55S for Victoria state in Australia. Only use zone number and N for northern hemisphere and S for southern hemisphere.</documentation>
						</annotation>
					</element>
					<element name="overrulingXAttribute" type="string" minOccurs="0">
						<annotation>
							<documentation>Since 2017.02. Id of the attribute which is to be used as the overruling x-coordinate for each location for both the input and output variables. When a location does not have this attribute, or does not have a value for this attribute, its x-coordinate is used as ususal.</documentation>
						</annotation>
					</element>
					<element name="overrulingYAttribute" type="string" minOccurs="0">
						<annotation>
							<documentation>Since 2017.02. Id of the attribute which is to be used as the overruling y-coordinate for each location for both the input and output variables. When a location does not have this attribute, or does not have a value for this attribute, its y-coordinate is used as ususal.</documentation>
						</annotation>
					</element>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>output variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialClosestDistanceFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialGridToPolygonsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single rectangular grid.</documentation>
						</annotation>
					</element>
					<element name="polygonValue" type="float" maxOccurs="unbounded">
						<annotation>
							<documentation>For every value a (multi-part) polygon is created.The values of the grid cells inside this polygon are equal or larger than the specified value. They are
								also smaller than the next polygonValue when configured
							</documentation>
						</annotation>
					</element>
					<element name="areaOfInterestLocationId" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>Only generate polygons inside the area/polygon/catchment of the specified location</documentation>
						</annotation>
					</element>
					<element name="minimumPolygonArea" type="fews:nonNegativeDouble" minOccurs="0">
						<annotation>
							<documentation>Since 2024.01. Optional. Minimum area (in square meters) of features in the output polygon. Polygons, or holes in polygons, that are smaller than the configured area are removed from the output polygon.</documentation>
						</annotation>
					</element>
					<sequence minOccurs="0">
						<element name="localDatumCoverageTileArchiveFile" type="string" maxOccurs="unbounded">
							<annotation>
								<documentation>A FULL ABSOLUTE path to file (.cta). Multiple files can be specified. When the file is uploaded by the config manager split the cta file into multiple
									cta files of about 10MB. This can be specified when converting an asc grid to cta.  The grid values are converted to local datums at pixel level using the DEM layer before calculating the polygons
								</documentation>
							</annotation>
						</element>
						<element name="zoomLevel" type="fews:zoomLevelStringType">
							<annotation>
								<documentation>The zoom level that should be used. The higher the zoom level memory the higher the memory that is required. 100km by 100km for the highest zoom level requires 20 GB of memory. For every higher zoom level the required memory is four times less. See https://wiki.openstreetmap.org/wiki/Zoom_levels</documentation>
							</annotation>
						</element>
					</sequence>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with polygon time series</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialGridToPolygonsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="zoomLevelStringType">
		<annotation>
			<documentation>Zoom level that allows (global) properties</documentation>
		</annotation>
		<union memberTypes="fews:zoomLevelIntType fews:propertyReferenceString"/>
	</simpleType>
	<simpleType name="zoomLevelIntType">
		<restriction base="integer">
			<minInclusive value="0"/>
			<maxInclusive value="20"/>
		</restriction>
	</simpleType>
	<complexType name="InterpolationSpatialVerticalProfileClosestDistanceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>One or more horizontal 2D grid time series (layers) (in a locationSet), that together form one 3D grid time series. All input grid time series must have the same grid geometry.</documentation>
						</annotation>
					</element>
					<element name="searchRadius" type="fews:doubleStringType" minOccurs="0">
						<annotation>
							<documentation>Optional search radius in meters for closest distance interpolation. Default is infinity.</documentation>
						</annotation>
					</element>
					<element name="distanceGeoDatum" type="fews:geoDatumStringType" minOccurs="0">
						<annotation>
							<documentation>Geo datum used to calculate the distances in meters between the points. To calculate distances efficiently and to pre-sort the input points in a grid the earth's curved surface should be transformed to a flat two-dimensional surface. When the input geometry is not in meters calculation of distances will be very slow and a search all is required when there is no exact match. When there is no region/country specific coordinate system available choose a utm zone that best fits with your output region. http://en.wikipedia.org/wiki/File:Utm-zones.jpg. eg. UTM55S for Victoria state in Australia. Only use zone number and N for northern hemisphere and S for southern hemisphere.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>One or more vertical profile time series (in a locationSet). The output must have a single domain parameter that indicates the height along the vertical profile.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialVerticalProfileClosestDistanceFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialThiessenPolygonComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with data for point locations.</documentation>
						</annotation>
					</element>
					<element name="distanceGeoDatum" type="fews:geoDatumStringType" minOccurs="0">
						<annotation>
							<documentation>Geo datum used to calculate the distances in meters between the points. To calculate distances efficiently and to pre-sort the input points in a grid the earth's curved surface should be transformed to a flat two-dimensional surface. When the input geometry is not in meters calculation of distances will be very slow and a search all is required when there is no exact match. When there is no region/country specific coordinate system available choose a utm zone that best fits with your output region. http://en.wikipedia.org/wiki/File:Utm-zones.jpg. eg. UTM55S for Victoria state in Australia. Only use zone number and N for northern hemisphere and S for southern hemisphere</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable to store data for polygons.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialThiessenPolygonFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialTriangulationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable</documentation>
						</annotation>
					</element>
					<element name="interpolationType" type="fews:interpolationEnumStringType">
						<annotation>
							<documentation>Option to choose between the filling of missing values or the generation of new series.</documentation>
						</annotation>
					</element>
					<element name="numberOfPoints" type="int" default="8">
						<annotation>
							<documentation>Number of points used in interpolation computation. When distance function is used the closest number of points is used. If not specified then 8 points are used. Default is 8 points.</documentation>
						</annotation>
					</element>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="debug" type="fews:DebugComplexType" minOccurs="0">
						<annotation>
							<documentation>Debug information for interpolation model</documentation>
						</annotation>
					</element>
					<element name="extrapolationOption" type="fews:spatialExtrapolationOptionEnumStringType" default="disabled"/>
					<element name="coordinateScalingFactor" type="float" default="1">
						<annotation>
							<documentation>The coordinates are multiplied by the scaling factor before they are passed to a interpolation routine. This is especially useful for for the renka and cline triangulation in combination with splines. To calculate the splines correctly the z values should have the same scale as the x, y values.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialTriangulationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialKrigingComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable</documentation>
						</annotation>
					</element>
					<element name="interpolationType" type="fews:interpolationEnumStringType">
						<annotation>
							<documentation>Option to choose between the filling of missing values or the generation of new series.</documentation>
						</annotation>
					</element>
					<element name="valueOption" type="fews:valuesEnumStringType"/>
					<element name="variogram" type="fews:VariogramComplexType">
						<annotation>
							<documentation>Variogram information</documentation>
						</annotation>
					</element>
					<element name="numberOfPoints" type="int" default="8" minOccurs="0">
						<annotation>
							<documentation>Number of points used in interpolation computation. When distance function is used the closest number of points is used. If not specified then 8 points are used. Default is 8 points.</documentation>
						</annotation>
					</element>
					<element name="regressionElevation" type="float" minOccurs="0">
						<annotation>
							<documentation>Elevation above which regression is required</documentation>
						</annotation>
					</element>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="distanceParameters" type="fews:DistanceGeographicComplexType" minOccurs="0">
						<annotation>
							<documentation>Coefficients G1 to G4 of function DistanceGeographic. Defaults to (1,1,0,0)</documentation>
						</annotation>
					</element>
					<element name="debug" type="fews:DebugComplexType" minOccurs="0">
						<annotation>
							<documentation>Debug information for interpolation model</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialKrigingFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialInverseDistanceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more input variables</documentation>
						</annotation>
					</element>
					<element name="outputGeometry" type="fews:OutputGeometryComplexType" minOccurs="0">
						<annotation>
							<documentation>Since 2017.02. Output grid which overrules the configured grid in the output variable</documentation>
						</annotation>
					</element>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="maximumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Maximum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<group ref="fews:ValidationRulesGroup"/>
						<element name="includeMissingValues" type="boolean" default="false">
							<annotation>
								<documentation>If true, then a missing value in one of the input variables for a given time step will result in a missing value in the output variable. If false, then if a value in one of the input variables is missing for a given time step, then only the remaining input variables will be used and the weights will be rescaled to unity.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="searchRadius" type="fews:doubleStringType">
						<annotation>
							<documentation>Meters. Default = Infinity. Specifying the search radius increases the performance since it limits the candidate points to be evaluated. Otherwise all possible points are considered. The searchRadius criterion is applied before the normalization with xMultiplier, yMultiplier and zMultiplier. BEFORE 2012.02 this value was interpreted as kilometers for WGS 84 by accident</documentation>
						</annotation>
					</element>
					<element name="distanceGeoDatum" type="fews:geoDatumStringType" minOccurs="0">
						<annotation>
							<documentation>Geo Datum used to calculate the distances in meters between the points. When the input geometry is not in meters calculation of distances will be very slow and a search all is required when there is no exact match</documentation>
						</annotation>
					</element>
					<element name="inverseDistancePower" type="float" default="1"/>
					<choice>
						<sequence>
							<element name="numberOfPoints" type="int" default="8">
								<annotation>
									<documentation>Number of points used in interpolation computation. When distance function is used the closest number of points is used. Default is 8 points.</documentation>
								</annotation>
							</element>
							<element name="numberOfBackupPoints" type="int" minOccurs="0">
								<annotation>
									<documentation>since 2012.02. Extra stations that are further away and are used in case of one or more missings in the base points. For every missing support point an other next nearest backup point is used</documentation>
								</annotation>
							</element>
						</sequence>
						<sequence>
							<element name="numberOfPointsPerQuadrant" type="int">
								<annotation>
									<documentation>since 2012.02. Number of points used in interpolation computation. When distance function is used the closest number of points is used..</documentation>
								</annotation>
							</element>
							<element name="numberOfBackupPointsPerQuadrant" type="int" minOccurs="0">
								<annotation>
									<documentation>since 2012.02. Extra stations that are further away and are used in case of one or more missings in the base points. For every missing support point an other next nearest backup point is used</documentation>
								</annotation>
							</element>
						</sequence>
					</choice>
					<element name="xMultiplier" type="double" default="1.0" minOccurs="0">
						<annotation>
							<documentation>since 2012.02.</documentation>
						</annotation>
					</element>
					<element name="yMultiplier" type="double" default="1.0" minOccurs="0">
						<annotation>
							<documentation>since 2012.02.</documentation>
						</annotation>
					</element>
					<element name="zMultiplier" type="double" default="0.0" minOccurs="0">
						<annotation>
							<documentation>since 2012.02.</documentation>
						</annotation>
					</element>
					<element name="excludePointOfOrigin" type="boolean" minOccurs="0">
						<annotation>
							<documentation>Optional element allows to exclude the point of origin in the inverse-distance spatial interpolation transformation. Available since 2018.02</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialInverseDistanceFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialPolygonRelatedLocationsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Scalar</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<group ref="fews:ValidationRulesGroup"/>
						<element name="includeMissingValues" type="boolean" default="false">
							<annotation>
								<documentation>If true, then a missing value in one of the input variables for a given time step will result in a missing value in the output variable. If false, then
									if a value in one of the input variables is missing for a given time step, then only the remaining input variables will be used and the weights will be rescaled to
									unity.
								</documentation>
							</annotation>
						</element>
					</choice>
					<element name="polygonLocationSetId" type="fews:idStringType">
						<annotation>
							<documentation>Polygons to find the input locations. Input locations are the related locations of the polygon that contains the output location</documentation>
						</annotation>
					</element>
					<element name="polygonLocationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation to find the input locations. Input locations are the related locations of the polygon that contains the output location. The relation is used to find the polygon id to the location ids in the input variable</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialPolygonRelatedLocationsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="InterpolationSpatialWeightedComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<choice>
						<element name="weightedInputVariable" type="fews:InterpolationSpatialWeightedInputVariableComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more input variables with weights. Must be used in combination with an outputVariable element (not an attributedOutputVariable element).</documentation>
							</annotation>
						</element>
						<element name="inputVariable" type="fews:InputVariableComplexType">
							<annotation>
								<documentation>Since 2017.02. A single input variable containing all time series that may be used to obtain the weighted average for an output location. Must be used in combination with an attributedOutputVariable element.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="minInputValuesRequired" type="positiveInteger" default="1" minOccurs="0">
						<annotation>
							<documentation>This is the minimum number of input variables that should have a non-missing value for the calculation. If for a given time the number of input variables that have a non-missing value is less than the configured minimum, then for that time the output value will be a missing value. This can be used e.g. to avoid getting output values of calculations for which very few input variables are available, because such calculations would be inaccurate. If not specified, then this will be set to 1.</documentation>
						</annotation>
					</element>
					<choice>
						<element name="outputVariable" type="fews:OutputVariableComplexType">
							<annotation>
								<documentation>Weighted average. Must be used in combination with one or more weightedInputVariable elements.</documentation>
							</annotation>
						</element>
						<element name="attributedOutputVariable" type="fews:InterpolationSpatialAttributedOutputVariableComplexType">
							<annotation>
								<documentation>Since 2017.02. An output variable containing two multi-value attributed containing the locationIds and weights for the inputs to be used. Must be used in combination with a single inputVariable element (not a weightedInputVariable element).</documentation>
							</annotation>
						</element>
					</choice>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialWeightedFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialWeightedInputVariableComplexType">
		<sequence>
			<element name="inputVariable" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Input variable.</documentation>
				</annotation>
			</element>
			<element name="weight" type="double">
				<annotation>
					<documentation>Weight corresponding to this variable.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="InterpolationSpatialAttributedOutputVariableComplexType">
		<sequence>
			<element name="outputVariable" type="fews:OutputVariableComplexType"/>
			<element name="locationIdAttribute" type="string">
				<annotation>
					<documentation>The id of the multi-value attribute containing the locationIds of the input time series to be used.</documentation>
				</annotation>
			</element>
			<element name="weightAttribute" type="string">
				<annotation>
					<documentation>The id of the multi-value attribute containing the weights to be used.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="InterpolationSpatialBilinearComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input regular grid, Input variable should be different than output variable.</documentation>
						</annotation>
					</element>
					<element name="outputGeometry" type="fews:OutputGeometryComplexType" minOccurs="0">
						<annotation>
							<documentation>Since 2017.02. Output grid which overrules the configured grid in the output variable</documentation>
						</annotation>
					</element>
					<element name="overrulingXAttribute" type="string" minOccurs="0">
						<annotation>
							<documentation>Since 2020.01. Id of the attribute which is to be used as the overruling x-coordinate for each location for both the input and output variables. When a location does not have this attribute, or does not have a value for this attribute, its x-coordinate is used as usual.</documentation>
						</annotation>
					</element>
					<element name="overrulingYAttribute" type="string" minOccurs="0">
						<annotation>
							<documentation>Since 2020.01. Id of the attribute which is to be used as the overruling y-coordinate for each location for both the input and output variables. When a location does not have this attribute, or does not have a value for this attribute, its y-coordinate is used as usual.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output grid, longitudinal profile or scalars. Input variable should be different than output variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationBilinearRectangularGridFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialLinearChainageComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input profile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output profile</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialLinearChainageFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialSnapTrackToLocationsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="x" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the x coordinate</documentation>
						</annotation>
					</element>
					<element name="y" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the y coordinate</documentation>
						</annotation>
					</element>
					<element name="value" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the values.</documentation>
						</annotation>
					</element>
					<element name="geoDatum" type="fews:geoDatumStringType">
						<annotation>
							<documentation>geo datum of the x and y coordinate in the time series</documentation>
						</annotation>
					</element>
					<element name="maximumSnapDistance" type="fews:doubleStringType">
						<annotation>
							<documentation>meters, Maximum distance between output location and track point to allow snap. BEFORE 2012.02 this value was interpreted as kilometers by accident</documentation>
						</annotation>
					</element>
					<element name="minimumTimeInterval" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Tack point closest to output point within time interval is used in output time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output time series. Every output time series should have an unique location</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialSnapTrackToLocationsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialRiemannBoundaryComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="waterHeight" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>The water height input variable, scalar time series for a location set consisting of locations in a coarse grid. Note that all locations named vai coarseGridLocationAttributeId (and uCoarseGridLocationAttributeId and vCoarseGridLocationAttributeId in case of a staggered grid) for the output locations, must be present in the input locations.</documentation>
						</annotation>
					</element>
					<element name="uSpeed" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>The u speed input variable, scalar time series for a location set consisting of locations in a coarse grid. Note that all locations named via coarseGridLocationAttributeId (and uCoarseGridLocationAttributeId and vCoarseGridLocationAttributeId in case of a staggered grid) for the output locations, must be present in the input locations.</documentation>
						</annotation>
					</element>
					<element name="vSpeed" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>The v speed input variable, scalar time series for a location set consisting of locations in a coarse grid. Note that all locations named via coarseGridLocationAttributeId (and uCoarseGridLocationAttributeId and vCoarseGridLocationAttributeId in case of a staggered grid) for the output locations, must be present in the input locations.</documentation>
						</annotation>
					</element>
					<element name="bathymetry" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>The bathymetry of the output locations, scalar time series for the output location set.</documentation>
						</annotation>
					</element>
					<element name="borderAttributeId" type="string">
						<annotation>
							<documentation>The id of the attribute of the output location set which contains the border (UP, DOWN, LEFT or RIGHT) of the fine grid the boundary location is located on.</documentation>
						</annotation>
					</element>
					<element name="angleAttributeId" type="string">
						<annotation>
							<documentation>The id of the attribute of the output location set which contains the angle (in degrees) to be used for the calculation.</documentation>
						</annotation>
					</element>
					<element name="coarseGridLocationAttributeId" type="string">
						<annotation>
							<documentation>The id of the attribute of the output location set which contains multiple text values representing the location ids of the input locations to be used to calculate the values for this output location.</documentation>
						</annotation>
					</element>
					<element name="weightAttributeId" type="string">
						<annotation>
							<documentation>The id of the attribute of the output location set which contains multiple number values representing the weights to be used to calculate the values for this output location.</documentation>
						</annotation>
					</element>
					<sequence minOccurs="0">
						<element name="uCoarseGridLocationAttributeId" type="string">
							<annotation>
								<documentation>The id of the attribute of the output location set which contains multiple text values representing the location ids of the input locations to be used to calculate the u-speed values for this output location in case of a staggered coarse grid.</documentation>
							</annotation>
						</element>
						<element name="uWeightAttributeId" type="string">
							<annotation>
								<documentation>The id of the attribute of the output location set which contains multiple number values representing the weights to be used to calculate the u-speed values for this output location in case of a staggered coarse grid.</documentation>
							</annotation>
						</element>
						<element name="vCoarseGridLocationAttributeId" type="string">
							<annotation>
								<documentation>The id of the attribute of the output location set which contains multiple text values representing the location ids of the input locations to be used to calculate the v-speed values for this output location in case of a staggered coarse grid.</documentation>
							</annotation>
						</element>
						<element name="vWeightAttributeId" type="string">
							<annotation>
								<documentation>The id of the attribute of the output location set which contains multiple number values representing the weights to be used to calculate the v-speed values for this output location in case of a staggered coarse grid.</documentation>
							</annotation>
						</element>
					</sequence>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>The output variable, scalar time series containing the Riemann boundary constants for a location set consisting of boundary locations of a fine grid. Note that all attributes (borderAttributeId, angleAttributeId, coarseGridLocationAttributeId, etc.), must exist for the location set of the input. Attribute files can be generated for a given coarse grid, fine grid and boundary location set via F12 -> convert -> Riemann boundary calculation constants. The output will also include a csv file which can be used to define an input location set which contains exactly those coarse grid locations needed.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialRiemannBoundaryFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialLongitudinalProfileToTrackComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputLongitudinalProfile" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single longitudinal profile time series.</documentation>
						</annotation>
					</element>
					<element name="inputTrackX" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the x coordinate</documentation>
						</annotation>
					</element>
					<element name="inputTrackY" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the y coordinate</documentation>
						</annotation>
					</element>
					<element name="maxDistance" type="fews:positiveDoubleStringType" minOccurs="0">
						<annotation>
							<documentation>The maximum distance (in meter) allowed between points, if no longitudinal profile point is close enough, the output will be NaN.</documentation>
						</annotation>
					</element>
					<element name="minMissingStepsForRecalibration" type="fews:nonNegativeIntegerStringType" minOccurs="0">
						<annotation>
							<documentation>If (one of) the track coordinates is missing (NaN) for at least this number of points in a row, the next non-missing point is compared with all of the longitudinal profile points to find the closest distance, instead of just comparing with the previously closest longitudinal profile point and its direct neighbours. By default this value is set to 1. Note that setting this value to 0 will cause FEWS to always compare the track point with all longitudinal profile points.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output scalar time series, which will contain the values for the track.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialLongitudinalProfileToTrackFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSerialTrackToGridComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputTrackValue" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series containing the track value.</documentation>
						</annotation>
					</element>
					<element name="inputTrackX" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the x coordinate of the track (WGS 1984).</documentation>
						</annotation>
					</element>
					<element name="inputTrackY" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with single scalar time series for the y coordinate of the track (WGS 1984).</documentation>
						</annotation>
					</element>
					<element name="minTrackValues" type="fews:positiveIntegerStringType" minOccurs="0">
						<annotation>
							<documentation>The minimum number of track values that must be available for a grid cell and time step (BEFORE the percentileRange is applied if configured) for the result value to be non-missing. Default 1.</documentation>
						</annotation>
					</element>
					<element name="percentileRange" type="fews:percentileRangeComplexType" minOccurs="0">
						<annotation>
							<documentation>From all track points that correspond to a certain grid cell and time step only this percentile range of values will be used to obtain the grid value.</documentation>
						</annotation>
					</element>
					<element name="statisticalFunction" type="fews:InterpolationSerialTrackToGridStatisticalFunctionType">
						<annotation>
							<documentation>The statistical function that will be applied to obtain a single value for the grid cell from all track values found for that grid cell.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output grid time series.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.InterpolationSerialTrackToGridFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PersistenceTrendComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputTimeSeries" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>a</documentation>
						</annotation>
					</element>
					<element name="outputTimeSeries" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>a</documentation>
						</annotation>
					</element>
					<element name="outputHistoricTimeSeries" type="fews:OutputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>a</documentation>
						</annotation>
					</element>
					<element name="availableObservedValues" type="float"/>
					<element name="consecutiveObservedValues" type="boolean"/>
					<element name="window" type="fews:TimeSpanComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationserial.PersistenceTrendFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="InterpolationSerialTrackToGridStatisticalFunctionType">
		<restriction base="string">
			<enumeration value="min"/>
			<enumeration value="max"/>
		</restriction>
	</simpleType>
	<complexType name="InterpolationSpatialSumComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>One or more input variables</documentation>
						</annotation>
					</element>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="maximumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialSumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>One or more input variables</documentation>
						</annotation>
					</element>
					<element name="minimumInputValue" type="float" minOccurs="0">
						<annotation>
							<documentation>Skip all input values that are below this value</documentation>
						</annotation>
					</element>
					<element name="maximumInputValue" type="float" minOccurs="0">
						<annotation>
							<documentation>Skip all input values that are above this value</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialCountFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialPercentileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>One or more input variables</documentation>
						</annotation>
					</element>
					<element name="percentile" type="fews:percentageType">
						<annotation>
							<documentation>between 1 and 99</documentation>
						</annotation>
					</element>
					<element name="minimumInputValue" type="float" minOccurs="0">
						<annotation>
							<documentation>Skip all input values that are below this value</documentation>
						</annotation>
					</element>
					<element name="maximumInputValue" type="float" minOccurs="0">
						<annotation>
							<documentation>Skip all input values that are above this value</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialPercentileFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="InterpolationSpatialInputAverageTimesOutputAreaComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Define input variables with a weight for each input variable.</documentation>
						</annotation>
					</element>
					<element name="minimumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Minimum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="maximumValue" type="float" default="-999.99" minOccurs="0">
						<annotation>
							<documentation>Maximum value allowed, if not used then -999.99</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.interpolationspatial.InterpolationSpatialInputAverageTimesOutputAreaFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="mergeSimpleOverrulingSourceFlagEnumStringType">
		<restriction base="string">
			<enumeration value="original"/>
			<enumeration value="completed"/>
			<enumeration value="corrected"/>
		</restriction>
	</simpleType>
	<simpleType name="mergeSimpleOverrulingQualityFlagEnumStringType">
		<restriction base="string">
			<enumeration value="reliable"/>
			<enumeration value="doubtful"/>
			<enumeration value="unreliable"/>
		</restriction>
	</simpleType>
	<complexType name="MergeSimpleInputVariableComplexType">
		<complexContent>
			<extension base="fews:InputVariableComplexType">
				<sequence>
					<element name="overrulingSourceFlag" type="fews:mergeSimpleOverrulingSourceFlagEnumStringType" minOccurs="0">
						<annotation>
							<documentation>Optional (since stable build 2014.02). If specified the flag specified in this element will be used as the source flag for the output.</documentation>
						</annotation>
					</element>
					<element name="overrulingQualityFlag" type="fews:mergeSimpleOverrulingQualityFlagEnumStringType" minOccurs="0">
						<annotation>
							<documentation>Optional (since stable build 2014.02). If specified the flag specified in this element will be used as the quality flag for the output.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeInterpolationClosestDistanceComplexType">
		<sequence>
			<element name="searchRadius" type="fews:doubleStringType" minOccurs="0">
				<annotation>
					<documentation>meters. Default = Infinity.</documentation>
				</annotation>
			</element>
			<element name="distanceGeoDatum" type="fews:geoDatumStringType" minOccurs="0">
				<annotation>
					<documentation>Geo datum used to calculate the distances in meters between the points. To calculate distances efficiently and to pre-sort the input points in a grid the earth's curved surface should be transformed to a flat two-dimensional surface. When the input geometry is not in meters calculation of distances will be very slow and a search all is required when there is no exact match. When there is no region/country specific coordinate system available choose a utm zone that best fits with your output region. http://en.wikipedia.org/wiki/File:Utm-zones.jpg. eg. UTM55S for Victoria state in Australia. Only use zone number and N for northern hemisphere and S for southern hemisphere.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="MergeInterpolationComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more input variables to merge.</documentation>
						</annotation>
					</element>
					<choice>
						<element name="closestDistance" type="fews:MergeInterpolationClosestDistanceComplexType"/>
						<element name="interpolationType" type="fews:MergeInterpolationTypeEnumStringType"/>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeInterpolationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="MergeInterpolationTypeEnumStringType">
		<restriction base="string">
			<enumeration value="bilinear"/>
			<enumeration value="closestDistance"/>
		</restriction>
	</simpleType>
	<complexType name="MergeOneToManyComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:MergeSimpleInputVariableComplexType">
						<annotation>
							<documentation>One or more input variables to merge.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeOneToManyFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeSimpleComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:MergeSimpleInputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more input variables to merge.</documentation>
						</annotation>
					</element>
					<element name="fillGapConstant" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional constant to fill gaps containing unreliable or missing values that are still present after merge.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<annotation>
							<documentation>Choice between a reference to a coefficientSet, defining embedded coefficientSets or a module parameter file</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:MergeSimpleCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variables. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="moduleParameterFile" type="fews:nameStringType">
							<annotation>
								<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
							</annotation>
						</element>
						<element name="reverseOrderAttributeId" type="fews:idStringType">
							<annotation>
								<documentation>Since 2018.02 Define a boolean attribute which can be used to revert the merge order.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="indexUsedInputVariable" type="fews:OutputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Output variable which stores the index of the used input time series.</documentation>
						</annotation>
					</element>
					<element name="copyCommentWhenMissing" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>concatenates and copies comments to output variable only when output value is missing.</documentation>
						</annotation>
					</element>
					<element name="keepManualUnreliables" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, values that have manualy been set to unreliable are kept. If se to false manual unreliables are seen as missings.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeSimpleFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeSimpleCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="reverseOrderInputTimeSeries" type="boolean"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeSynopticComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="synopticPrecipitation" type="fews:InputVariableComplexType" maxOccurs="5">
						<annotation>
							<documentation>Input variables with synoptic rainfall data. The time interval of data values is defined by the timeStep or by the aggregationPeriod.</documentation>
						</annotation>
					</element>
					<element name="precipitationOneHour" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeSynopticFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeMeanComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Input time series with mean data</documentation>
						</annotation>
					</element>
					<element name="outputPreviousRun" type="fews:InputVariableComplexType"/>
					<element name="missingValuesNotAllowed" type="fews:MergeMeanMissingValuesNotAllowedComplexType" minOccurs="0"/>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeMeanFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeMeanMissingValuesNotAllowedComplexType">
		<sequence>
			<element name="interpolationType" type="fews:mergeMeanInterpolationTypeEnumStringType"/>
			<element name="extrapolateDirection" type="fews:interpolationSerialExtrapolateConstantDirectionEnumStringType">
				<annotation>
					<documentation>If direction is start, then fills only the gap between the start of the input time series and the first data value, with values that are equal to the first data value. If direction is end, then fills only the gap between the last data value and the end of the input time series, with values that are equal to the last data value. If direction is both, then fills both of these gaps.</documentation>
				</annotation>
			</element>
			<element name="baseValue" type="float"/>
			<element name="recessionConstant" type="fews:recessionConstantSimpleType"/>
		</sequence>
	</complexType>
	<simpleType name="mergeMeanInterpolationTypeEnumStringType">
		<restriction base="string">
			<enumeration value="block"/>
			<enumeration value="linear"/>
		</restriction>
	</simpleType>
	<complexType name="MergeRelationsComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariableDefinition" type="fews:InputVariableExpressionBasedFunctionComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Definitions of variables that can be used as input in one or more relations in this transformation. A variable is always a time series. Alternatively variables can be defined at the start of this transformations file.</documentation>
						</annotation>
					</element>
					<element name="relation" type="fews:MergeRelationsRelationComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more relations (expressions). Each relation contains an optional period for which it is valid, a free format expression that is used to determine the output value for the relation and an optional output comment. If for a given time step the first relation produces a missing value, then the next relation is used. If that also produces a missing value, then the next relation is used, and so on, until a non-missing output value is found.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<annotation>
							<documentation>Optional choice between a reference to a coefficientSet or defining embedded coefficientSets. Use this only when coefficients are used in one or more free format expressions in this transformation.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:ExpressionCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable for the merged output time series. The output time series contains for each time step the configured output comment of the relation that was used to determine the value for that time step.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeRelationsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeRelationsRelationComplexType">
		<sequence>
			<element name="validPeriod" type="fews:PeriodConditionComplexType" minOccurs="0">
				<annotation>
					<documentation>Optional period for which this relation is valid. If a relation is not valid for a given time step, then it is ignored for that time step. If no validPeriod specified, then this relation is always valid. For a period the start time is inclusive and the end time is exclusive.</documentation>
				</annotation>
			</element>
			<element name="expression" type="fews:nonEmptyStringType">
				<annotation>
					<documentation>For instance "X1 + X2". In the expression reference input variables or coefficients using their id, e.g. "X1 + a" where "X1" is the variableId of a variable and "a" is the id of a coefficient. Variables can be defined in this transformation or at the start of this transformations file. If a variable definition in this transformation has the same id as a variable definition at the start of this transformations file, then the variable definition in this transformation is used. Coefficients can be defined in a coefficientSet.</documentation>
				</annotation>
			</element>
			<element name="outputFlag" type="fews:mergeRelationOutputFlagEnumStringType" minOccurs="0">
				<annotation>
					<documentation>Optional (optional since stable build 2014.02). If specified the flag specified in this element will be used as the flag for the output.</documentation>
				</annotation>
			</element>
			<element name="outputComment" type="fews:nonEmptyStringType" minOccurs="0">
				<annotation>
					<documentation>Optional (optional since stable build 2014.01). If specified, this comment will be put in the output time series for the time steps for which this relation is used to determine the output value.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<simpleType name="mergeRelationOutputFlagEnumStringType">
		<restriction base="string">
			<enumeration value="original"/>
			<enumeration value="completed"/>
			<enumeration value="corrected"/>
		</restriction>
	</simpleType>
	<complexType name="MergeToggleComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more input variables to merge.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>If input time series contains a gap larger than maxGapLength, then it will be replaced (instead of merged) with the next input time series in the hierarchy.</documentation>
						</annotation>
					</element>
					<element name="fillGapConstant" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional constant to fill gaps containing unreliable or missing values that are still present after merge or toggle.</documentation>
						</annotation>
					</element>
					<element name="indexUsedInputTimeSeries" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable to store the index of the input time series that is used for the value in the output time series for each time step. 1 for the first, 2 for the second, etc. Requested in issue FEWS-320.</documentation>
						</annotation>
					</element>
					<element name="mergedTimeSeries" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeToggleFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeGapComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more input variables to merge.</documentation>
						</annotation>
					</element>
					<element name="minimumGapLength" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>If input time series contains a gap larger than minimumGapLength, then it will be replaced (instead of merged) with the next input time series in the hierarchy.</documentation>
						</annotation>
					</element>
					<element name="fillGapConstant" type="float" minOccurs="0">
						<annotation>
							<documentation>Optional constant to fill gaps containing unreliable or missing values that are still present after merge or toggle.</documentation>
						</annotation>
					</element>
					<element name="indexUsedInputTimeSeries" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable to store the index of the input time series that is used for the value in the output time series for each time step. 1 for the first, 2 for the second, etc. Requested in issue FEWS-320.</documentation>
						</annotation>
					</element>
					<element name="mergedTimeSeries" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeGapFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeSelectDataSourceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>the input</documentation>
						</annotation>
					</element>
					<element name="attributeFunctionId" type="fews:idStringType">
						<annotation>
							<documentation>The attributeFunctionId will reference the value of the attribute for the current output location</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeSelectDataSourceFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeCopyComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>the input</documentation>
						</annotation>
					</element>
					<element name="skipProperties" type="boolean" minOccurs="0" default="false">
						<annotation>
							<documentation>skip copying the properties in the output - optional, by default properties are copied.</documentation>
						</annotation>
					</element>
					<element name="skipFlags" type="boolean" minOccurs="0" default="false">
						<annotation>
							<documentation>skip copying the flags in the output - optional, by default flags are copied.</documentation>
						</annotation>
					</element>
					<element name="skipFlagsSourceColumns" type="boolean" minOccurs="0" default="false">
						<annotation>
							<documentation>skip copying the flag source columns in the output - optional, by default flag source columns are copied.</documentation>
						</annotation>
					</element>
					<element name="skipFlagSources" type="boolean" minOccurs="0" default="false">
						<annotation>
							<documentation>skip copying the flag sources in the output - optional, by default flag sources are copied.</documentation>
						</annotation>
					</element>
					<element name="skipComments" type="boolean" minOccurs="0" default="false">
						<annotation>
							<documentation>skip copying the comments in the output - optional, by default comments are copied.</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.CopyFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeSelectLocationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>the input</documentation>
						</annotation>
					</element>
					<element name="attributeFunctionId" type="fews:idStringType"/>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeSelectLocationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeWeightedComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" minOccurs="2" maxOccurs="2">
						<annotation>
							<documentation>Two input variables to merge.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<element name="moduleParameterFile" type="fews:nameStringType">
							<annotation>
								<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
							</annotation>
						</element>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:MergeWeightedCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variables. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.merge.MergeWeightedFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeWeightedCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="weightTime" type="fews:MergeWeightedWeightTimeComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more points in time with weights. Each weight is used for the time for which it is defined. For the times in between, the weights are calculated using linear interpolation. The weight configured for the first point in time is also used for all times before that time. The weight configured for the last point in time is also used for all times after that time.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergeWeightedWeightTimeComplexType">
		<sequence>
			<element name="relativeTime" type="fews:RelativeTimeComplexType">
				<annotation>
					<documentation>The relative time for which the corresponding weight is defined. This time is relative to T0.</documentation>
				</annotation>
			</element>
			<element name="weight">
				<annotation>
					<documentation>Weight for the first inputVariable for the specified time. The weight for the second inputVariable is calculated as follows. Weight for inputVariable2 = 1 - weight for inputVariable1.</documentation>
				</annotation>
				<simpleType>
					<restriction base="float">
						<minInclusive value="0"/>
						<maxInclusive value="1"/>
					</restriction>
				</simpleType>
			</element>
		</sequence>
	</complexType>
	<complexType name="MoistureOpticalDepthComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="horizontalSurfaceTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="verticalSurfaceTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="soilTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="soilMoisture" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:MoistureOpticalDepthCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="opticalDepth" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.moisture.MoistureOpticalDepthFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MoistureOpticalDepthCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="frequency" type="float"/>
					<element name="soilMoisture" type="float"/>
					<element name="incidenceAngle" type="float"/>
					<element name="scatteringAlbedo" type="float"/>
					<element name="polarizationFraction" type="float"/>
					<element name="roughness" type="float"/>
					<element name="soilPorosity" type="float"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MoistureSoilMoistureComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="horizontalSurfaceTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="verticalSurfaceTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="soilTemperature" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:MoistureSoilMoistureCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="soilMoisture" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.moisture.MoistureSoilMoistureFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MultipleTableLookupComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="rowIndexLookupVariable" type="fews:InputVariableComplexType"/>
					<element name="columnIndexLookupVariable" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:MultipleTableLookupCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.lookup.MultipleTableLookupFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MultipleTableLookupCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="interpolationType" type="fews:interpolationType"/>
					<element name="extrapolationType" type="fews:lookupExtrapolationTypeEnumStringType"/>
					<element name="rowIndexLookupTable" type="string"/>
					<element name="columnIndexLookupTable" type="string"/>
					<element name="outputLookupTable" type="fews:MultipleTableLookupRowComplexType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MultipleTableLookupRowComplexType">
		<sequence>
			<element name="lookupTableRow" type="string" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<complexType name="ThreeDimensionalLookupComplexType">
		<annotation>
			<documentation>performs a lookup with 3 input variables</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="input1" type="fews:InputVariableComplexType"/>
					<element name="input2" type="fews:InputVariableComplexType"/>
					<element name="input3" type="fews:InputVariableComplexType"/>
					<element name="maxCircValueInput1" type="float" minOccurs="0">
						<annotation>
							<documentation>If a value is circular (for example wind direction) set a maximum value. If the value is not circular, no not set the element. Minimum value for the circular value is 0 by defailt.</documentation>
						</annotation>
					</element>
					<element name="maxCircValueInput2" type="float" minOccurs="0"/>
					<element name="maxCircValueInput3" type="float" minOccurs="0"/>
					<element name="maxCircValueOutput" type="float" minOccurs="0"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:ThreeDimensionalLookupCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.lookup.ThreeDimensionalLookupFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionGridEnsembleMemberIndexComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputEnsembleIndices" type="fews:InputVariableComplexType"/>
					<element name="inputTimeSeriesGrids" type="fews:InputVariableComplexType"/>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="matchInputAndOutputGridTimes" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>The time of the output time series is determined by the time of the ensemble member indices. It can happen that the input grids do not have data at the given time. If matchInputAndOutputGridTimes is set to false, and the exact time step is unavailable, the first available grid data of the given ensemble member will be filled in the output. If it is set to true, output will only be filled if the data is available for the exact time. </documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionGridEnsembleMemberIndexFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionScalarTimeSeriesFromScalarMapComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType"/>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="minDomainValue" type="float" >
						<annotation>
							<documentation>The minimum domain vale to be included in the selection.</documentation>
						</annotation>
					</element>
					<element name="maxDomainValue" type="float" >
						<annotation>
							<documentation>The maximum domain vale to be included in the selection.</documentation>
						</annotation>
					</element>
					<element name="minValueInclusive" type="boolean" default="true" minOccurs="0"/>
					<element name="maxValueInclusive" type="boolean" default="true" minOccurs="0"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionScalarTimeSeriesFromScalarMapFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionScalarTimeSeriesLayersFromScalarMapComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType"/>
					<element name="layerIndex" type="int">
						<annotation>
							<documentation>
								Layers are counted from the highest Z coordinate (water surface) towards to lowest (water bottom) starting with 1.
							</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionScalarTimeSeriesLayersFromScalarMapFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectNumberedTidalPeaksComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="numberedTidalPeaks" type="fews:InputVariableComplexType">
							<annotation>
								<documentation>: non-equidistant input series holding the tidal numbers</documentation>
							</annotation>
					</element>
					<element name="continuousLevelSeries" type="fews:InputVariableComplexType">
							<annotation>
								<documentation>equidistant input series holding the water levels</documentation>
							</annotation>
					</element>
					<choice>
						<element name="minutesBeforeTidalExtreme" type="int">
							<annotation>
								<documentation>Search window before tidal extreme in minutes</documentation>
							</annotation>
						</element>
						<element name="minutesBeforeTidalExtremeAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as search window before tidal extreme. Value should be in minutes.</documentation>
							</annotation>
						</element>
					</choice>
					<choice>
						<element name="minutesAfterTidalExtreme" type="int">
							<annotation>
								<documentation>Search window after tidal extreme in minutes</documentation>
							</annotation>
						</element>
						<element name="minutesAfterTidalExtremeAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as search window after tidal extreme. Value should be in minutes.</documentation>
							</annotation>
						</element>
					</choice>
					<choice>
						<element name="regressionPeriodInMinutes" type="int">
							<annotation>
								<documentation>time span used to compute the average rate of waterlevel change. The extreme has been reached when the sign flips for the rate of change</documentation>
							</annotation>
						</element>
						<element name="regressionPeriodInMinutesAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as time span to compute the average rate of waterlevel change. The extreme has been reached when the sign flips for the rate of change</documentation>
							</annotation>
						</element>
					</choice>
					<choice>
						<element name="validDifferenceExceedence" type="float">
							<annotation>
								<documentation>Extreme is valid and selected when specified difference is exceeded by at least one value within the search window both before and after the extreme.</documentation>
							</annotation>
						</element>
						<element name="validDifferenceExceedenceAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as validDifferenceExceedence. Extreme is valid and selected when specified difference is exceeded by at least one value within the search window both before and after the extreme.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="highWaterLevelOutput" type="fews:OutputVariableComplexType">
							<annotation>
								<documentation>non-equidistant output series holding the waterlevels at the peak</documentation>
							</annotation>
					</element>
					<element name="highWaterTideNumberOutput" type="fews:OutputVariableComplexType">
							<annotation>
								<documentation>non-equidistant output series holding the associated tidal number of the peak</documentation>
							</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectNumberedTidalPeaksFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectNumberedTidalLowsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="numberedTidalLows" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Non-equidistant input series holding the tidal numbers.</documentation>
						</annotation>
					</element>
					<element name="continuousLevelSeries" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Equidistant input series holding the water levels.</documentation>
						</annotation>
					</element>
					<choice>
						<element name="minutesBeforeTidalExtreme" type="int">
							<annotation>
								<documentation>Search window before tidal extreme in minutes</documentation>
							</annotation>
						</element>
						<element name="minutesBeforeTidalExtremeAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as search window before tidal extreme. Value should be in minutes.</documentation>
							</annotation>
						</element>
					</choice>
					<choice>
						<element name="minutesAfterTidalExtreme" type="int">
							<annotation>
								<documentation>Search window after tidal extreme in minutes</documentation>
							</annotation>
						</element>
						<element name="minutesAfterTidalExtremeAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as search window after tidal extreme. Value should be in minutes.</documentation>
							</annotation>
						</element>
					</choice>
					<choice>
						<element name="regressionPeriodInMinutes" type="int">
							<annotation>
								<documentation>time span used to compute the average rate of waterlevel change. The extreme has been reached when the sign flips for the rate of change</documentation>
							</annotation>
						</element>
						<element name="regressionPeriodInMinutesAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as time span to compute the average rate of waterlevel change. The extreme has been reached when the sign flips for the rate of change</documentation>
							</annotation>
						</element>
					</choice>
					<choice>
						<element name="validDifferenceExceedence" type="float">
							<annotation>
								<documentation>Extreme is valid and selected when specified difference is exceeded by at least one value within the search window both before and after the extreme.</documentation>
							</annotation>
						</element>
						<element name="validDifferenceExceedenceAttributeId" type="fews:idStringType" >
							<annotation>
								<documentation>The id of the location attribute to be used as validDifferenceExceedence. Extreme is valid and selected when specified difference is exceeded by at least one value within the search window both before and after the extreme.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="lowWaterLevelOutput" type="fews:OutputVariableComplexType">
							<annotation>
								<documentation>Non-equidistant output series holding the waterlevels at the low.</documentation>
							</annotation>
					</element>
					<element name="lowWaterTideNumberOutput" type="fews:OutputVariableComplexType">
							<annotation>
								<documentation>Non-equidistant output series holding the associated tidal number of the low.</documentation>
							</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectNumberedTidalLowsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="MoistureSoilMoistureCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="soilPorosity" type="float"/>
					<element name="frequency" type="float"/>
					<element name="soilMoisture" type="float">
						<annotation>
							<documentation>Starting value for soilMoisture (iterative process).</documentation>
						</annotation>
					</element>
					<element name="incidenceAngle" type="float"/>
					<element name="scatteringAlbedo" type="float"/>
					<element name="atmosphericOpacity" type="float"/>
					<element name="polarizationFraction" type="float"/>
					<element name="roughness" type="float"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PerformanceIndicatorsLeadTimeAccuracyComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="observedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Observed input data for the performance indicator calculation.</documentation>
						</annotation>
					</element>
					<element name="forecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>The time series set of this variable will be used to find forecast input data within the configured forecastSearchPeriod. Only approved forecasts and external forecasts will be found. All forecasts found, will be used as input for the performance indicator calculation.</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The forecastVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.</documentation>
						</annotation>
					</element>
					<choice>
						<element name="leadTime" type="fews:RelativeTimeComplexType">
							<annotation>
								<documentation>Lead time relative to the forecast time of a given forecast. For a given forecast, only the value at validTime = (forecastTime + leadTime) will be used
									as input for the performance indicator calculation.
								</documentation>
							</annotation>
						</element>
						<element name="leadTimeWindow" type="fews:RelativePeriodComplexType">
							<annotation>
								<documentation>Lead time window relative to the forecast time of a given forecast. For a given forecast, only the values within the window (between forecastTime +
									leadTimeWindowStart and forecastTime + leadTimeWindowEnd) will be used as input for the performance indicator calculation.
								</documentation>
							</annotation>
						</element>
					</choice>
					<element name="ignoreMissing" type="boolean" default="true">
						<annotation>
							<documentation>Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>The calculated performance indicator value will be stored in this time series at T0.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.performanceindicators.PerformanceIndicatorsLeadTimeAccuracyFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="simpleTableLookupInterpolationEnumStringType">
		<restriction base="string">
			<enumeration value="linear"/>
			<enumeration value="cubicSpline"/>
			<enumeration value="class"/>
		</restriction>
	</simpleType>
	<simpleType name="lookupExtrapolationTypeEnumStringType">
		<annotation>
			<documentation>type of extrapolation if outside the range:
not allowed = not allowed, critical stop
maxmin = stays fixed at max (or) min level in table
linear = linear extrapolation</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="notAllowed"/>
			<enumeration value="maxmin"/>
			<enumeration value="extrapolate"/>
		</restriction>
	</simpleType>
	<!--	<complexType name="PrecipitationRainfallEventComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="precipitation" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:PrecipitationRainfallEventCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="eventMedianValue" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PrecipitationRainfallEventCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="minVolumeIncrement" type="float">
						<annotation>
							<documentation>Only considers periods for which this minimum volume increment value is being exceeded.</documentation>
						</annotation>
					</element>
					<element name="onlyMostRecentEvent" type="boolean">
						<annotation>
							<documentation>If false, considers all periods for which the minimum volume increment is exceeded. If true considers only the most recent of these periods.</documentation>
						</annotation>
					</element>
					<element name="eventOutputTime" type="fews:precipitationRainfallEventOutputTimeEnumStringType">
						<annotation>
							<documentation>Write the data for each event at the startTime or the medianTime of the event.</documentation>
						</annotation>
					</element>
					<element name="window" type="fews:TimeSpanComplexType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PrecipitationRainfallEventLengthComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="precipitation" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:PrecipitationRainfallEventLengthCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="eventLength" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PrecipitationRainfallEventLengthCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="minVolumeIncrement" type="float">
						<annotation>
							<documentation>Only considers periods for which this minimum volume increment value is being exceeded.</documentation>
						</annotation>
					</element>
					<element name="onlyMostRecentEvent" type="boolean">
						<annotation>
							<documentation>If false, considers all periods for which the minimum volume increment is exceeded. If true considers only the most recent of these periods.</documentation>
						</annotation>
					</element>
					<element name="eventOutputTime" type="fews:precipitationRainfallEventOutputTimeEnumStringType">
						<annotation>
							<documentation>Write the data for each event at the startTime or the medianTime of the event.</documentation>
						</annotation>
					</element>
					<element name="window" type="fews:TimeSpanComplexType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="precipitationRainfallEventOutputTimeEnumStringType">
		<annotation>
			<documentation>Indicates which type of times the rainfallEvent function should put in the output variable.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="start_time"/>
			<enumeration value="median_time"/>
		</restriction>
	</simpleType> -->
	<complexType name="PrecipitationTippingBucketComplexType">
		<annotation>
			<documentation>Converts a non-equidistant time series with tipping bucket rainfall data to an equidistant time series with accumulated rainfall data.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Converts a non-equidistant time series with tipping bucket rainfall data to an equidistant time series with accumulated rainfall data.</documentation>
				</annotation>
				<sequence>
					<element name="tippingBucketPrecipitation" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with non-equidistant tipping bucket rainfall data.</documentation>
						</annotation>
					</element>
					<element name="defaultValue" type="float" minOccurs="0">
						<annotation>
							<documentation>Default value for when there is no input value for the output value</documentation>
						</annotation>
					</element>
					<element name="maxInterpolationGapLength" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If input time series contains a gap larger than maxInterpolationGapLength, then time steps at in between are set to missing in output.</documentation>
						</annotation>
					</element>
					<element name="maxExtrapolationGapLength" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If input time series contains a gap larger than maxExtrapolationGapLength at the end, then time steps at the end are set to missing in output.</documentation>
						</annotation>
					</element>
					<element name="precipitation" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with an equidistant time series. For each time step in the output time series the input rainfall data between that time step and the previous output time step is accumulated.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.precipitation.PrecipitationTippingBucketFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationTidalConstituentsComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<annotation>
					<documentation>Takes an input Fourier series and converts this to a time series variable.</documentation>
				</annotation>
				<sequence>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:GenerationTidalConstituentsCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:GenerationTidalConstituentsCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable in which the generated time series will be written.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generation.GenerationTidalConstituentsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationTidalConstituentsCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="constituent" type="fews:TidalConstituentComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more harmonic tidal constituents. These are used to generate the output time series. The contributions of the individual constituents will be added to create the final result.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TidalConstituentComplexType">
		<attribute name="name" type="fews:harmonicDataEnumStringType" use="required">
			<annotation>
				<documentation>Name of a harmonic tidal constituent. This can be a standard designation of one of the tidal constituents from the list.</documentation>
			</annotation>
		</attribute>
		<attribute name="amplitude" type="float" use="required">
			<annotation>
				<documentation>Amplitude (in m) for this constituent.</documentation>
			</annotation>
		</attribute>
		<attribute name="phase" type="float" use="required">
			<annotation>
				<documentation>Phase (in degrees) for this constituent.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="GenerationTidalConstituentsCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="constituent" type="fews:TidalConstituentFunctionsComplexType">
						<annotation>
							<documentation>One record with functions that contain location attribute ids. Use this to link name, amplitude and phase to the corresponding columns in a locationAttributes file that contains one or more harmonic tidal constituents that are different for different locations. These are used to generate the output time series. The contributions of the individual constituents will be added to create the final result.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TidalConstituentFunctionsComplexType">
		<attribute name="name" type="string" use="required">
			<annotation>
				<documentation>Name of a harmonic tidal constituent. This can be a standard designation of one of the tidal constituents from the list.</documentation>
			</annotation>
		</attribute>
		<attribute name="amplitude" type="string" use="required">
			<annotation>
				<documentation>Amplitude (in m) for this constituent.</documentation>
			</annotation>
		</attribute>
		<attribute name="phase" type="string" use="required">
			<annotation>
				<documentation>Phase (in degrees) for this constituent.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="ProfileTimeSeriesComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>Takes an input typical profile and converts this to a time series variable.</documentation>
				</annotation>
				<sequence>
					<element name="inputProfile" type="fews:ProfileTimeSeriesInputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="type" type="fews:profileTimeSeriesTypeEnumStringType">
						<annotation>
							<documentation>This is never used in the code.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Time series variable to store data values from profile.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.profile.ProfileTimeSeriesFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ProfileTimeSeriesInputVariableComplexType">
		<annotation>
			<documentation>Typical profile.</documentation>
		</annotation>
		<sequence>
			<element name="timeStep" type="fews:TimeStepComplexType" minOccurs="0">
				<annotation>
					<documentation>Time step for this typical profile.</documentation>
				</annotation>
			</element>
			<element name="relativeViewPeriod" type="fews:TimeSeriesSetRelativePeriodComplexType" minOccurs="0">
				<annotation>
					<documentation>Relative view period for this typical profile. This is never used in the code.</documentation>
				</annotation>
			</element>
			<element name="data" type="fews:TimeSeriesDataComplexType" maxOccurs="unbounded">
				<annotation>
					<documentation>Defined time series data for this typical profile.</documentation>
				</annotation>
			</element>
			<element name="timeZone" type="fews:TimeZoneComplexType" minOccurs="0">
				<annotation>
					<documentation>Time zone for this typical profile.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<simpleType name="profileTimeSeriesTypeEnumStringType">
		<annotation>
			<documentation>Cyclic means the input profile is repeated cyclically to construct the output time series.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="simple"/>
			<enumeration value="cyclic"/>
		</restriction>
	</simpleType>
	<complexType name="DaySampleComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.DaySampleFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DayMonthSampleComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.DayMonthSampleFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="JulianDaySampleComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>input time series</documentation>
						</annotation>
					</element>
					<element name="julianDayVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>series with Julian Days</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.JulianDaySampleFunction" minOccurs="0">
						<annotation>
							<documentation>The sampling 'instruction' is provided as a series where the value refers to (historical) dates in JulianDay. These Julian Days are used to extract the associated data from the input timeseries and place it in the output timeseries using the corresponding timestamp.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SampleEquidistantComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="equidistantInputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>time series which will be transformed to a non-equidistant time series</documentation>
						</annotation>
					</element>
					<element name="timeReferenceInputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>This variable defines the time steps which will be written to the output time series</documentation>
						</annotation>
					</element>
					<element name="forecastLoopSearchPeriod" type="fews:RelativePeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>Period in which forecasts should be searched to loop over</documentation>
						</annotation>
					</element>
					<element name="interpolationType" type="fews:sampleEquidistantInterpolationTypeEnumStringType"/>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing or unreliable. Default is true.</documentation>
						</annotation>
					</element>
					<element name="timeWindow" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>This optional variable defines a time window in which the closest times, found in the original series, should lie. This time window is related to the time in the outputseries we search the values for. E.g. for interpolationType 'closest' we search in the period from timeOut-timeWindow to timeOut+timeWindow, where the timeOut is a time in the output series.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.EquidistantToNonEquidistantFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="sampleEquidistantInterpolationTypeEnumStringType">
		<annotation>
			<documentation>Indicates the type of interpolation to use for sampling.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="closest"/>
			<enumeration value="closestForward"/>
			<enumeration value="closestBackward"/>
			<enumeration value="linear"/>
			<enumeration value="missing"/>
		</restriction>
	</simpleType>
	<complexType name="SampleHistoricalComplexType">
		<complexContent>
			<extension base="fews:FunctionWithModuleParameterBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<element name="moduleParameterFile" type="fews:nameStringType">
							<annotation>
								<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
							</annotation>
						</element>
						<sequence>
							<element name="startYear" type="gYear">
								<annotation>
									<documentation>Year to start ensemble sampling.</documentation>
								</annotation>
							</element>
							<element name="firstEnsembleMemberIndex" type="int" default="0" minOccurs="0">
								<annotation>
									<documentation>First ensembleMemberIndex</documentation>
								</annotation>
							</element>
							<element name="ensembleMemberCount" type="int" default="-1" minOccurs="0">
								<annotation>
									<documentation>Number of ensemble members to generate. If this option is not configured, this number will be calculated. The user formula will be T0 - start year = number of ensemble members</documentation>
								</annotation>
							</element>
							<element name="startWaterYear" type="fews:monthDayType" minOccurs="0">
								<annotation>
									<documentation>First day of the water year. For example in the USA the water year start at the first of October. The start year is considered a water year when this option is used.</documentation>
								</annotation>
							</element>
						</sequence>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.SampleHistoricalFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SampleSingleTimeStepComplexType">
		<annotation>
			<documentation>Copy the values (grid or scalar) from a source with only 1 time step to all the time steps in the output time series</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable containing the values which will be copied to the output time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>output variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.SampleSingleTimeStepFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="NonEquidistantSingleValueComplexType">
		<annotation>
			<documentation>Transform nonEquidistant to equidistant time series. Each value in the input time series is copied only one time to the output</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable containing the values which will be copied to the output time series</documentation>
						</annotation>
					</element>
					<element name="timeReferenceInputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable containing the times for the output time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>output variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.NonEquidistantSingleValueFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SampleNonEquidistantComplexType">
		<annotation>
			<documentation>Transform nonEquidistant to equidistant time series.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="nonEquidistantInputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="interpolationType" type="fews:sampleNonEquidistantInterpolationTypeEnumStringType"/>
					<choice>
						<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
							<annotation>
								<documentation>If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing or unreliable. Default is true.</documentation>
							</annotation>
						</element>
						<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					</choice>
					<element name="searchPeriod" type="fews:RelativePeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>Relative period in which the transformation will search for non equidistant values. Only implemented for linear or closest.</documentation>
						</annotation>
					</element>
					<element name="maxGapLength" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>Optional maximum length of gap. Gaps equal to or smaller than maxGapLength will be filled with sampled values. Gaps larger than maxGapLength will not be filled. If maxGapLength is not defined, then all gaps will be filled with sampled values. Only implemented for linear and block interpolation</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.sample.NonEquidistantToEquidistantFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="sampleNonEquidistantInterpolationTypeEnumStringType">
		<annotation>
			<documentation>Indicates the type of interpolation to use for sampling.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="block"/>
			<enumeration value="linear"/>
			<enumeration value="zero"/>
			<enumeration value="missing"/>
			<enumeration value="linearOrClosest"/>
			<enumeration value="previousTimeStep"/>
			<enumeration value="nextTimeStep"/>
			<enumeration value="accumulate"/>
			<enumeration value="timeWeightedAverage"/>
		</restriction>
	</simpleType>
	<complexType name="SelectionIndependentLowsComplexType">
		<annotation>
			<documentation>Finds the low values of the input time series and writes this to the output time series.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="forecastLoopSearchPeriod" type="fews:RelativePeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>Period in which forecasts should be searched to loop over</documentation>
						</annotation>
					</element>
					<element name="gapLengthInSec" type="nonNegativeInteger"/>
					<group ref="fews:SelectionTransformationTotalNumberChoiceGroup"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionIndependentLowsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionLowsComplexType">
		<annotation>
			<documentation>Finds the low values of the input time series and writes this to the output time series.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:SelectionTransformationTotalNumberChoiceGroup"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionLowsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionMaximumComplexType">
		<annotation>
			<documentation>Finds the maximum value of the input time series and writes this to the output time series. The maximum value will be written at the same time as in the input time series. Ignores unreliable values. If multiple values are equal to the maximum, then the latest value is used.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="selectNumberOfHighestMax" type="positiveInteger" minOccurs="0">
						<annotation>
							<documentation>The number of highest maximum values to write to the output time series.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionMaximumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionMinimumComplexType">
		<annotation>
			<documentation>Finds the minimum value of the input time series and writes this to the output time series. The minimum value will be written at the same time as in the input time series. Ignores unreliable values. If multiple values are equal to the minimum, then the latest value is used.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="selectNumberOfLowestMin" type="positiveInteger" minOccurs="0">
						<annotation>
							<documentation>The number of lowest minimum values to write to the output time series.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionMinimumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionIndependentPeaksComplexType">
		<annotation>
			<documentation>Finds the peak values of the input time series and writes this to the output time series.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="forecastLoopSearchPeriod" type="fews:RelativePeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>Period in which forecasts should be searched to loop over</documentation>
						</annotation>
					</element>
					<element name="gapLengthInSec" type="fews:nonNegativeIntegerStringType">
						<annotation>
							<documentation>gap length in seconds</documentation>
						</annotation>
					</element>
					<group ref="fews:SelectionTransformationTotalNumberChoiceGroup"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionIndependentPeaksFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectionPeaksComplexType">
		<annotation>
			<documentation>Finds the peak values of the input time series and writes this to the output time series.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:SelectionTransformationTotalNumberChoiceGroup"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionPeaksFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TimeToSelectionComplexType">
		<annotation>
			<documentation>Calculates for each timestep in the output time series the time (in minutes) to/from the nearest data point in the input time series, which typically is the result of any one of the other selection transformations.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.TimeToSelectionFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MaximumAroundPeakComplexType">
		<annotation>
			<documentation>Finds for each peak time from inputPeaksVariable a maximum value from inputVariable. The maximum value is searched in a period configured with searchWindowInDays</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Series the maximum value should be searched in</documentation>
						</annotation>
					</element>
					<element name="inputPeaksVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Nonequidistant series with peaks</documentation>
						</annotation>
					</element>
					<group ref="fews:MaximumAroundPeakSearchPeriodChoiceGroup">
						<annotation>
							<documentation>Groups all possible definitipons of the time window the maximum should be search in</documentation>
						</annotation>
					</group>
					<element name="maximumAtActualTime" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Nonequidistant series with maximum values found. The maximum values are stored at actual time of the max value.</documentation>
						</annotation>
					</element>
					<element name="maximumAtPeakTime" type="fews:OutputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Nonequidistant series with maximum values found. The maximum values are stored at peak times</documentation>
						</annotation>
					</element>
					<element name="valueDifference" type="fews:OutputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Nonequidistant series with differences between the input peaks and the maximum found for the peaks. The value difference is stored at peak time.</documentation>
						</annotation>
					</element>
					<element name="timeDifference" type="fews:OutputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Nonequidistant series with differences between the input peak times and the times of the found maximum. The time difference is stored at peak time. If 'timeWindow' is used, the values are stored in millis. If 'timeWindowInWholeDays' is use the values are stored in whole days.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.MaximumAroundPeakFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<group name="MaximumAroundPeakSearchPeriodChoiceGroup">
		<choice>
			<element name="timeWindow" type="fews:TimeSpanComplexType">
				<annotation>
					<documentation>The maximum will be searched in this period : 'time of the peak - timeWindow' up to and including 'time of the peak + timeWindow'</documentation>
				</annotation>
			</element>
			<element name="timeWindowInWholeDays" type="nonNegativeInteger">
				<annotation>
					<documentation>The maximum will be searched in this period : 'day of the peak - timeWindowInWholeDays' up to and including 'day of the peak + timeWindowInWholeDays'</documentation>
				</annotation>
			</element>
		</choice>
	</group>
	<complexType name="SelectionValuesAfterChangeWithTimeWindowComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients.</documentation>
				</annotation>
				<sequence>
					<element name="variableDefinition" type="fews:InputVariableExpressionBasedFunctionComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Definitions of variables that can be used as input in this transformation. A variable is always a time series. Alternatively variables can be defined at the start of this transformations file. The variables that are defined here can be used as inputVariable, as conditionVariable, as outputVariable and/or in the timeWindowLengthExpression.</documentation>
						</annotation>
					</element>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. This contains the times and values that are copied to the output variable if they are selected by this transformation.</documentation>
						</annotation>
					</element>
					<element name="conditionVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>This condition variable is searched for changes during the run period of the transfomation. If for a given timeStep this variable has a value that is different from the value for the previous timeStep, then that counts as a change for the given timeStep. This triggers the creation of a selection time window that starts at the given timeStep.</documentation>
						</annotation>
					</element>
					<element name="timeWindowLengthExpression" type="string">
						<annotation>
							<documentation>Free format expression that is evaluated at the time of a change in the condition variable to determine the length of the time window (in seconds) for that change. For instance "X1 + X2". In the expression reference input variables or coefficients using their id, e.g. "X1 + a" where "X1" is the variableId of a variable and "a" is the id of a coefficient. Variables can be defined in this transformation or at the start of this transformations file. If a variable definition in this transformation has the same id as a variable definition at the start of this transformations file, then the variable definition in this transformation is used. Coefficients can be defined in a coefficientSet.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<annotation>
							<documentation>Optional choice between a reference to a coefficientSet or defining embedded coefficientSets. Use this only when coefficients are used in the free format expression.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:ExpressionCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="selectionType" type="fews:selectionValuesAfterChangeWithTimeWindowSelectionEnumStringType">
						<annotation>
							<documentation>If this is select_inside_time_window, then all inputVariable values that are within at least one time window are copied to the outputVariable and all other inputVariable values are ignored. If this is select_outside_time_window then all inputVariable values that are within at least one time window are ignored and all other inputVariable values are copied to the outputVariable.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. Only the selected times and values are written in this outputVariable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionValuesAfterChangeWithTimeWindowFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="AstronomicalNumberSelectedPeakComplexType">
		<annotation>
			<documentation>Calculates the astronomical number for each selected peak or low</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="selectedPeaksAndLows" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input series with peaks and low</documentation>
						</annotation>
					</element>
					<element name="correctionTimeLocationAttribute" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>The calculated astronomical number can be corrected based on the value of the configured location attribute</documentation>
						</annotation>
					</element>
					<element name="astronomicalNumber" type="fews:OutputVariableComplexType" minOccurs="0">
						<annotation>
							<documentation>Output time series with the calculated astronomical number</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.AstronomicalNumberFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="selectionValuesAfterChangeWithTimeWindowSelectionEnumStringType">
		<restriction base="string">
			<enumeration value="select_inside_time_window">
				<annotation>
					<documentation>All values that are within at least one time window are selected and all other values are ignored.</documentation>
				</annotation>
			</enumeration>
			<enumeration value="select_outside_time_window">
				<annotation>
					<documentation>All values that are within at least one time window are ignored and all other values are selected.</documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<complexType name="TidalBalanceReviewComplexType">
		<annotation>
			<documentation>Calculates the balance between observed and forecasted tides and creates estimates for future tides.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="observedTidalStage" type="fews:InputVariableComplexType"/>
					<element name="forecastTidalStage" type="fews:InputVariableComplexType"/>
					<element name="tideBalance" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.review.TideBalanceReviewFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TidalCorrectionByAstronomicalNumberComplexType">
		<annotation>
			<documentation>Calculates the balance between observed and forecasted tides and creates estimates for future tides.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="modelCorrections" type="fews:InputVariableComplexType"/>
					<element name="modelOutput" type="fews:InputVariableComplexType"/>
					<element name="correctionTimeLocationAttribute" type="fews:idStringType" minOccurs="0">
						<annotation>
							<documentation>The calculated astronomical number can be corrected based on the value of the configured location attribute</documentation>
						</annotation>
					</element>
					<element name="correctedModelOutput" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.review.TidalCorrectionByMatchingAstronomicalFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="HistoricalErrorResamplerComplexType">
		<annotation>
			<documentation>Resamples error for a forecast based on historical forecasts and observations.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>The TimeSeries (forecast) to be resampled.</documentation>
						</annotation>
					</element>
					<element name="historicalSimulatedInputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Used in combination with historicalObservedVariable to determine the error at the historical match.</documentation>
						</annotation>
					</element>
					<element name="historicalObservedInputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Used in combination with historicalSimulatedVariable to determine the error at the historical match.</documentation>
						</annotation>
					</element>
					<element name="historicalStartDate" type="fews:DateTimeComplexType">
						<annotation>
							<documentation>The start date and time for the period in which is searched for a historical match. This has effect on both the historicalSimulatedVariable and historicalObservedVariable, but also on all featureVectorHistoricalSimulatedVariable elements.</documentation>
						</annotation>
					</element>
					<element name="historicalEndDate" type="fews:DateTimeComplexType">
						<annotation>
							<documentation>The end date and time for the period in which is searched for a historical match. This has effect on both the historicalSimulatedVariable and historicalObservedVariable, but also on all featureVectorHistoricalSimulatedVariable elements.</documentation>
						</annotation>
					</element>
					<group ref="fews:FeatureVectorDimension" maxOccurs="unbounded">
						<annotation>
							<documentation>When searching the nearest neighbour, each dimension resolves into a 1 dimensional distance. To resolve this distance, the difference between the featureVectorHistoricalSimulatedVariable and featureVectorForecastVariable is calculated (which time is used is influenced by the timeShift element) and then weighted.</documentation>
						</annotation>
					</group>
					<element name="nearestNeighborPoolSize" type="nonNegativeInteger">
						<annotation>
							<documentation>When searching for the historical match, X closest neighbours are used of which one is randomly selected. X is the nearestNeighbourPoolSize.</documentation>
						</annotation>
					</element>
					<element name="resamplingTrigger" type="fews:nonNegativeDouble">
						<annotation>
							<documentation>After the historical match has been determined, the feature vector distance between historical match and the forecast date is calculated. If the feature factor distance between the next forecast date (forecast date + X timesteps) and the historical match (hisorical match + X timesteps) is greater then the distance between the forecast date and historical match times the resampling trigger, a new historical match will be searched. Otherwise, the error at the histrical match will be used for the forecast date + X timeSteps.</documentation>
						</annotation>
					</element>
					<element name="attributeLocationId" type="fews:idStringType">
						<annotation>
							<documentation>The locationId is used as a reference location for use with modifiers. All weights and timeshift are associated with this locationId.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>The input forecast with uncertainty added.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.review.HistoricalErrorResamplerFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TidalPeakCorrectionComplexType">
		<annotation>
			<documentation>Resamples error for a forecast based on historical forecasts and observations.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedPeakVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Observed peaks</documentation>
						</annotation>
					</element>
					<element name="inputAstroVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Predicted astronomical</documentation>
						</annotation>
					</element>
					<element name="inputAstroPeakVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Predicted astronomical peaks</documentation>
						</annotation>
					</element>
					<element name="inputSurgeForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Multiple forecast input variable</documentation>
						</annotation>
					</element>
					<element name="surgeSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>Period for which the surge forecasts should have their forecast time within</documentation>
						</annotation>
					</element>
					<element name="peak" type="fews:PeakCorrectionComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Specifies which peaks should be included in the calculation.</documentation>
						</annotation>
					</element>
					<element name="correctionConstantAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of location attribute which contains the constant value that needs to be added to the correction value.</documentation>
						</annotation>
					</element>
					<element name="inputPeakSelectionVariable" type="fews:tidalPeakCorrectionInputSelectionEnumStringType">
						<annotation>
							<documentation>Variable that should be used to select the peaks, either observed or astro</documentation>
						</annotation>
					</element>
					<element name="inputTimeSelectionVariable" type="fews:tidalPeakCorrectionInputSelectionEnumStringType">
						<annotation>
							<documentation>Variable that should be used to select the exact time of the peaks, either observed or astro</documentation>
						</annotation>
					</element>
					<element name="outputPeak" type="fews:OutputPeakCorrectionComplexType" minOccurs="0">
						<annotation>
							<documentation>Settings for output peak, like peakNumber which determines to which peak after T0 the correction should be applied</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Correction value suggested for the next peak prediction</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.review.TidalPeakCorrectionFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<group name="FeatureVectorDimension">
		<sequence>
			<element name="featureVectorHistoricalSimulatedInputVariable" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Variable used to compare to the forecast date to calculate the feature vector distance.</documentation>
				</annotation>
			</element>
			<element name="featureVectorForecastInputVariable" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Variable used to compare to the historical dates (potential historical matches) to calculate the feature vector distance.</documentation>
				</annotation>
			</element>
			<element name="featureVectorWeight" type="fews:floatStringAttributeType">
				<annotation>
					<documentation>The weight that is used for this dimension when calculating the direction and magnitude of the feature vector.</documentation>
				</annotation>
			</element>
			<element name="featureVectorTimeShift" type="fews:intStringAttributeType">
				<annotation>
					<documentation>Shifts the time for both the historical simulated and forecast variable with X time steps for this feature vector dimension only.</documentation>
				</annotation>
			</element>
		</sequence>
	</group>
	<simpleType name="adjustQUsingObservedInstantaneousDischargeInterpolationTypeEnumStringType">
		<annotation>
			<documentation>Indicates if a coefficient set is valid for level to flow or for flow to level calculations or for both.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="ratio"/>
			<enumeration value="difference"/>
		</restriction>
	</simpleType>
	<simpleType name="tidalPeakCorrectionInputSelectionEnumStringType">
		<annotation>
			<documentation>Choice between which of the input variables should be used.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="observed"/>
			<enumeration value="astro"/>
		</restriction>
	</simpleType>
	<complexType name="SimpleTableLookupComplexType">
		<annotation>
			<documentation>if a default value cannot be found in the rules criteria, an output value is searched in the lookup table</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:SimpleTableLookupCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.lookup.SimpleTableLookupFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SimpleTableLookupCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="interpolationType" type="fews:simpleTableLookupInterpolationEnumStringType"/>
					<element name="extrapolationType" type="fews:lookupExtrapolationTypeEnumStringType"/>
					<sequence minOccurs="0">
						<element name="inputUnit" type="string">
							<annotation>
								<documentation>unit of the input values in the lookup table. When this unit is different from the input parameter unit the input values are converted using the config
									units configured in the parameters.xml
								</documentation>
							</annotation>
						</element>
						<element name="outputUnit" type="string">
							<annotation>
								<documentation>unit of the output values in the lookup table. When this unit is different from the output parameter unit the output values are converted using the config
									units configured in the parameters.xml
								</documentation>
							</annotation>
						</element>
					</sequence>
					<element name="lookupTable" type="fews:LookupTableComplexType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TwoDimensionalLookupComplexType">
		<annotation>
			<documentation>performs a lookup with 2 input variables</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="input1" type="fews:InputVariableComplexType"/>
					<element name="input2" type="fews:InputVariableComplexType"/>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:TwoDimensionalLookupCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="output" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.lookup.TwoDimensionalLookupFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TwoDimensionalLookupCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="interpolationType" type="fews:interpolationType">
						<annotation>
							<documentation>Interpolation Type for 1st dimension</documentation>
						</annotation>
					</element>
					<element name="extrapolationType" type="fews:lookupExtrapolationTypeEnumStringType">
						<annotation>
							<documentation>Extrapolation Type for 1st dimension</documentation>
						</annotation>
					</element>
					<element name="input2InterpolationType" type="fews:interpolationType" default="linear" minOccurs="0">
						<annotation>
							<documentation>Interpolation Type for 2nd dimension. Optional with default value "linear"</documentation>
						</annotation>
					</element>
					<element name="input2ExtrapolationType" type="fews:lookupExtrapolationTypeEnumStringType" default="extrapolate" minOccurs="0">
						<annotation>
							<documentation>Extrapolation Type for 2nd dimension. Optional with default value "extrapolate"</documentation>
						</annotation>
					</element>
					<sequence minOccurs="0">
						<element name="input1Unit" type="string">
							<annotation>
								<documentation>unit of the input1 values in the lookup table. When this unit is different from the input parameter unit the input values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
						<element name="input2Unit" type="string">
							<annotation>
								<documentation>unit of the input2 values in the lookup table. When this unit is different from the input parameter unit the input values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
						<element name="outputUnit" type="string">
							<annotation>
								<documentation>unit of the output values in the lookup table. When this unit is different from the output parameter unit the output values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
					</sequence>
					<element name="lookupTable" type="fews:TwoDimensionalLookupTableComplexType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TwoDimensionalLookupTableComplexType">
		<choice>
			<element name="lookupTableRow" type="fews:TwoDimensionalLookupTableRowComplexType" maxOccurs="unbounded"/>
			<element name="piTable" type="fews:TwoDimensionalLookupPiTableComplexType"/>
		</choice>
	</complexType>
	<complexType name="TwoDimensionalLookupPiTableComplexType">
		<sequence>
			<annotation>
				<documentation>Since 2017.02 Use a Pi Table for lookup</documentation>
			</annotation>
			<element name="locationId" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The locationId of the Pi Table used for lookup</documentation>
				</annotation>
			</element>
			<element name="inputParameterId1" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The domain parameter of the Pi Table used for the input of the lookup</documentation>
				</annotation>
			</element>
			<element name="inputParameterId2" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The second parameter of the Pi Table used for the input of the lookup</documentation>
				</annotation>
			</element>
			<element name="outputParameterId" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The output parameter of the Pi Table that needs to be looked up based on the input</documentation>
				</annotation>
			</element>
			<element name="qualifierId" type="fews:idStringType" minOccurs="0">
				<annotation>
					<documentation>Since 2017.02 The (optional) qualifierId of the Pi Table used for lookup</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="TwoDimensionalLookupTableRowComplexType">
		<attribute name="input1" type="float" use="required">
			<annotation>
				<documentation>first input value in the lookup table</documentation>
			</annotation>
		</attribute>
		<attribute name="input2" type="float" use="required">
			<annotation>
				<documentation>second input value in the lookup table</documentation>
			</annotation>
		</attribute>
		<attribute name="output" type="float" use="required">
			<annotation>
				<documentation>output value in the lookup table</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="LookupTableComplexType">
		<choice>
			<element name="lookupTableRow" type="fews:LookupTableRowComplexType" maxOccurs="unbounded"/>
			<element name="piTable" type="fews:LookupPiTableComplexType"/>
		</choice>
	</complexType>
	<complexType name="LookupTableRowComplexType">
		<attribute name="input" type="float" use="required">
			<annotation>
				<documentation>input value in the lookup table</documentation>
			</annotation>
		</attribute>
		<attribute name="output" type="float" use="required">
			<annotation>
				<documentation>output value in the lookup table</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="LookupPiTableComplexType">
		<sequence>
			<annotation>
				<documentation>Since 2017.02 Use a Pi Table for lookup</documentation>
			</annotation>
			<element name="locationId" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The locationId of the Pi Table used for lookup</documentation>
				</annotation>
			</element>
			<element name="inputParameterId" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The domain parameter of the Pi Table used for the input of the lookup</documentation>
				</annotation>
			</element>
			<element name="outputParameterId" type="fews:idStringType">
				<annotation>
					<documentation>Since 2017.02 The output parameter of the Pi Table that needs to be looked up based on the input</documentation>
				</annotation>
			</element>
			<element name="qualifierId" type="fews:idStringType" minOccurs="0">
				<annotation>
					<documentation>Since 2017.02 The (optional) qualifierId of the Pi Table used for lookup</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="AdjustStageComplexType">
		<annotation>
			<documentation>Adjusts the computed stage values with the input from stage rev</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="forecastStage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with the computed stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="averageBalanceFirstSegment" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Balance for the first segment. The first segment is segment with the lowest stage ranges</documentation>
						</annotation>
					</element>
					<element name="averageBalanceSecondSegment" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Balance for the second segment</documentation>
						</annotation>
					</element>
					<element name="averageBalanceThirdSegment" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Balance for the third segment</documentation>
						</annotation>
					</element>
					<element name="averageBalanceFourthSegment" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Balance for the fourth segment</documentation>
						</annotation>
					</element>
					<element name="startFirstStageRange" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>start of the first segment</documentation>
						</annotation>
					</element>
					<element name="startSecondStageRange" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>end of the first segment and the start of the second segment</documentation>
						</annotation>
					</element>
					<element name="startThirdStageRange" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>start of the third segment</documentation>
						</annotation>
					</element>
					<element name="startFourthStageRange" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>start of the fourth segment</documentation>
						</annotation>
					</element>
					<element name="endFourthStageRange" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>end of the fourth segment</documentation>
						</annotation>
					</element>
					<element name="adjustedForecastStage" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>end of the fourth segment</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.adjust.AdjustStageFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StageDischargeMergedRatingCurvesComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="stage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<element name="weight" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with weight values.</documentation>
						</annotation>
					</element>
					<element name="ratingCurve" type="fews:MergedRatingCurvesTransformationRatingCurveComplexType" minOccurs="2" maxOccurs="2">
						<annotation>
							<documentation>References to two rating curves that are merged and used to convert stage to discharge values for this transformation. This can only use rating curves that are stored as time series in the dataStore. To import ratingCurves into the dataStore use timeSeriesImport module with importType pi_ratingcurves to import a file in the pi_ratingcurves.xsd format.</documentation>
						</annotation>
					</element>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.stagedischarge.StageDischargeMergedRatingCurvesFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="MergedRatingCurvesTransformationRatingCurveComplexType">
		<sequence>
			<element name="locationId" type="fews:idStringType" minOccurs="0"/>
			<element name="qualifierId" type="fews:idStringType"/>
		</sequence>
	</complexType>
	<complexType name="StageDischargePowerComplexType">
		<annotation>
			<documentation>Converts stage (H) to discharge (Q) for an open cross section. Uses equation Q=a*(H+b)^c.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<annotation>
					<documentation>Converts stage (H) to discharge (Q) or discharge to stage for an open cross section. Uses equation Q=a*(H+b)^c.</documentation>
				</annotation>
				<sequence>
					<element name="stage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StageDischargePowerCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StageDischargePowerCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.stagedischarge.StageDischargePowerFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StageDischargePowerCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="a" type="float">
						<annotation>
							<documentation>Coefficient a in equation Q=a*(H+b)^c.</documentation>
						</annotation>
					</element>
					<element name="b" type="float">
						<annotation>
							<documentation>Coefficient b in equation Q=a*(H+b)^c.</documentation>
						</annotation>
					</element>
					<element name="c" type="float">
						<annotation>
							<documentation>Coefficient c in equation Q=a*(H+b)^c.</documentation>
						</annotation>
					</element>
					<element name="type" type="fews:stageDischargeCalculationTypeEnumStringType">
						<annotation>
							<documentation>Type of calculations for which this coefficientSet is valid. Level to flow, flow to level or both.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StageDischargePowerCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="a" type="string">
						<annotation>
							<documentation>Coefficient a in equation Q=a*(H+b)^c.</documentation>
						</annotation>
					</element>
					<element name="b" type="string">
						<annotation>
							<documentation>Coefficient b in equation Q=a*(H+b)^c.</documentation>
						</annotation>
					</element>
					<element name="c" type="string">
						<annotation>
							<documentation>Coefficient c in equation Q=a*(H+b)^c.</documentation>
						</annotation>
					</element>
					<element name="type" type="string">
						<annotation>
							<documentation>Type of calculations for which this coefficientSet is valid. Level to flow, flow to level or both.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StageDischargeTableComplexType">
		<annotation>
			<documentation>Converts stage (water level) to discharge (water flow) using a table with stage and discharge values.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="stage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StageDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.stagedischarge.StageDischargeTableFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StageDischargeRatingCurveComplexType">
		<annotation>
			<documentation>Converts stage (water level) to discharge (water flow) using a table with stage and discharge values.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="stage" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with stage (water level) values.</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<element name="ratingCurve" type="fews:RatingCurveLocationQualifierComplexType"/>
						<element name="qualifierId" type="fews:idStringType"/>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge (water flow) values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.stagedischarge.StageDischargeRatingCurveFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StageDischargeTableCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="type" type="fews:stageDischargeCalculationTypeEnumStringType">
						<annotation>
							<documentation>Type of calculations for which this coefficientSet is valid. Level to flow, flow to level or both.</documentation>
						</annotation>
					</element>
					<element name="authoriseExtrapolation" type="boolean">
						<annotation>
							<documentation>If true, then will extrapolate beyond table data without warning.</documentation>
						</annotation>
					</element>
					<element name="interpolationType" type="fews:stageDischargeTableInterpolationTypeEnumStringType">
						<annotation>
							<documentation>If true, then will extrapolate beyond table data without warning.</documentation>
						</annotation>
					</element>
					<element name="minimumStage" type="float" minOccurs="0">
						<annotation>
							<documentation>minimum allowed stage value</documentation>
						</annotation>
					</element>
					<element name="tableRecord" type="fews:StageDischargeTableRecordComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more table records.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="stageDischargeTableInterpolationTypeEnumStringType">
		<restriction base="string">
			<enumeration value="linear"/>
			<enumeration value="logarithmic"/>
		</restriction>
	</simpleType>
	<complexType name="StageDischargeTableRecordComplexType">
		<attribute name="stage" type="float" use="required">
			<annotation>
				<documentation>Stage value.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="float" use="required">
			<annotation>
				<documentation>Discharge value.</documentation>
			</annotation>
		</attribute>
		<attribute name="offset" type="float" use="optional">
			<annotation>
				<documentation>Offset value which is valid for this and higher stages</documentation>
			</annotation>
		</attribute>
	</complexType>
	<simpleType name="stageDischargeCalculationTypeEnumStringType">
		<annotation>
			<documentation>Indicates if a coefficient set is valid for level to flow or for flow to level calculations or for both.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="level_to_flow"/>
			<enumeration value="flow_to_level"/>
			<enumeration value="level_to_flow_and_flow_to_level"/>
		</restriction>
	</simpleType>
	<complexType name="StatisticsEnsembleComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="StatisticsVerticalAverageScalarComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType"/>
					<element name="waterLevelReference" type="fews:InputVariableComplexType" minOccurs="0"/>
					<element name="startDepth" type="fews:floatStringAttributeType">
						<annotation>
							<documentation>doc</documentation>
						</annotation>
					</element>
					<element name="endDepth" type="fews:floatStringAttributeType">
						<annotation>
							<documentation>doc</documentation>
						</annotation>
					</element>
					<element name="startAndEndDepthIndependentOfWaterLevel" type="boolean" default="false" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsVerticalAverageScalarFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="StatisticsVerticalAverageGridZLayerComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType"/>
					<element name="waterLevelReference" type="fews:InputVariableComplexType" minOccurs="0"/>
					<sequence minOccurs="0">
						<annotation>
							<documentation>
								If no startDepth and endDepth is configured, the entire water depth will be averaged
							</documentation>
						</annotation>
					<element name="startDepth" type="fews:floatStringType">
						<annotation>
							<documentation>The depth from witch the average should be calculated.</documentation>
						</annotation>
					</element>
					<element name="endDepth" type="fews:floatStringType">
						<annotation>
							<documentation>The depth until where the average should be calculated.</documentation>
						</annotation>
					</element>
				</sequence>
					<element name="startAndEndDepthIndependentOfWaterLevel" type="boolean" default="false" minOccurs="0"/>
					<element name="ignoreWaterBedLevel" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>doc</documentation>
						</annotation>
					</element>
					<element name="zLayerBorder" type="fews:doubleStringType" minOccurs="2" maxOccurs="unbounded"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsVerticalAverageGridZLayerFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsVerticalAverageGridSigmaLayerComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="input" type="fews:InputVariableComplexType"/>
					<element name="totalWaterDepth" type="fews:InputVariableComplexType"/>
					<sequence minOccurs="0">
						<annotation>
							<documentation>If there is no startDepth and endDepth configured, the entire water depth will be used for the average.</documentation>
						</annotation>
						<element name="startDepth" type="fews:floatStringType">
							<annotation>
								<documentation>The depth from witch the average should be calculated.</documentation>
							</annotation>
						</element>
						<element name="endDepth" type="fews:floatStringType">
							<annotation>
								<documentation>The depth until where the average should be calculated.</documentation>
							</annotation>
						</element>
					</sequence>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsVerticalAverageGridSigmaLayerFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsEnsembleEventProbabilityComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="event" type="fews:eventRangeComplexType"></element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="eventRangeComplexType">
		<sequence>
			<element name="lower" type="fews:eventBoundaryComplexType" minOccurs="0">
				<annotation>
					<documentation>Lower boundary condition to satisfy to signal an event.</documentation>
				</annotation>
			</element>
			<element name="upper" type="fews:eventBoundaryComplexType" minOccurs="0">
				<annotation>
					<documentation>Upper boundary condition to satisfy to signal an event.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="eventBoundaryComplexType">
		<complexContent>
			<extension base="fews:EventInputVariableComplexType">
				<sequence>
					<element name="inclusive" type="fews:booleanStringAttributeAndPropertyType" default="false" minOccurs="0">
						<annotation>
							<documentation>Set to true if bound is inclusive &lt;= or &gt;=. Default false</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EventInputVariableComplexType">
		<annotation>
			<documentation>Choose between a reference to a variable or an embedded definition of a variable.</documentation>
		</annotation>
		<choice minOccurs="0">
			<element name="value" type="fews:floatStringAttributeAndPropertyType">
				<annotation>
					<documentation>Constant value</documentation>
				</annotation>
			</element>
			<sequence>
				<element name="variableId" type="fews:idStringType">
					<annotation>
						<documentation>Identifier of a variable to use.</documentation>
					</annotation>
				</element>
				<element name="locationId" type="fews:idStringType" minOccurs="0">
					<annotation>
						<documentation>If the specified variable contains multiple locations, then specify the location to use here.</documentation>
					</annotation>
				</element>
			</sequence>
			<group ref="fews:TimeSeriesSequenceGroup">
				<annotation>
					<documentation>Use a time series as input variable.</documentation>
				</annotation>
			</group>
		</choice>
	</complexType>
	<complexType name="StatisticsEnsembleCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsEnsemblePercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsEnsemblePercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsEnsembleQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsEnsembleMemberIndexOfMaxComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeEnsembleMemberIndexOfMaxFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsEnsembleMemberRankComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="value" type="fews:InputVariableComplexType"/>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeEnsembleMemberRankFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSameAttributeValueComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="attributeId" type="fews:idStringType">
						<annotation>
							<documentation>The id of the attribute which will be used in finding matching input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsChildLocationsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>SINCE 2014.02 If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRelatedLocationsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="locationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation available for the input locations. Relation points from input to output</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>SINCE 2014.02 If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRelatedLocationsLargeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="rank" type="fews:positiveInteger"/>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="locationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation available for the input locations. Relation points from input to output</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>SINCE 2014.02 If true, then missing values are ignored. If false, then an output value will be missing if one or more of the corresponding input values are missing. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSameAttributeValueCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="attributeId" type="fews:idStringType">
						<annotation>
							<documentation>The id of the attribute which will be used in finding matching input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsChildLocationsCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRelatedLocationsCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="locationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation available for the input or output locations. Relation points from input to output or from output to input. When the relation is available in both directions a config error is logged</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSameAttributeValuePercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="attributeId" type="fews:idStringType">
						<annotation>
							<documentation>The id of the attribute which will be used in finding matching input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsChildLocationsPercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRelatedLocationsPercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="locationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation available for the input locations. Relation points from input to output</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSameAttributeValuePercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="attributeId" type="fews:idStringType">
						<annotation>
							<documentation>The id of the attribute which will be used in finding matching input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsChildLocationsPercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRelatedLocationsPercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="locationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation available for the input locations. Relation points from input to output</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRankComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="double"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSameAttributeValueQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="attributeId" type="fews:idStringType">
						<annotation>
							<documentation>The id of the attribute which will be used in finding matching input time series</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsChildLocationsQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then output values will be set to missing values starting from the first missing input value in an interval until the end of that interval. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsRelatedLocationsQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="locationRelationId" type="fews:idStringType">
						<annotation>
							<documentation>Location relation available for the input locations. Relation points from input to output</documentation>
						</annotation>
					</element>
					<element name="ignoreMissing" type="boolean" default="true" minOccurs="0">
						<annotation>
							<documentation>If true, then missing values are ignored. If false, then output values will be set to missing values starting from the first missing input value in an interval until the end of that interval. Default is true.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSingleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSummaryComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSummaryCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSummaryCountFlagsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="reliability" type="fews:statisticsSerialCountFlagsReliabilityEnumStringType">
						<annotation>
							<documentation>Only values with the specified reliability (flag) are counted. Choose "any" to count all values regardless of their reliability.</documentation>
						</annotation>
					</element>
					<element name="validationRule" type="fews:statisticsSerialCountFlagsValidationRuleEnumStringType">
						<annotation>
							<documentation>Only values for which the reason of rejection is equal to the specified validation rule (flagSource) are counted. Choose "any" to count all values regardless of their reason for rejection.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSummaryPercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSummaryPercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSummaryQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsMultipleTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsPeriodicComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsPeriodicFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsPeriodicCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsPeriodicFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsPeriodicCountFlagsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="reliability" type="fews:statisticsSerialCountFlagsReliabilityEnumStringType">
						<annotation>
							<documentation>Only values with the specified reliability (flag) are counted. Choose "any" to count all values regardless of their reliability.</documentation>
						</annotation>
					</element>
					<element name="validationRule" type="fews:statisticsSerialCountFlagsValidationRuleEnumStringType">
						<annotation>
							<documentation>Only values for which the reason of rejection is equal to the specified validation rule (flagSource) are counted. Choose "any" to count all values regardless of their reason for rejection.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsPeriodicFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsPeriodicPercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsPeriodicFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsPeriodicPercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsPeriodicFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsPeriodicQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsPeriodicFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSerialComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<group ref="fews:ValidationRulesGroup" minOccurs="0"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSerialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="PeriodVaryingMeanComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="inputPeriodVariable" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.PeriodVaryingMeanFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSerialCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="includeMissingValues" type="boolean">
						<annotation>
							<documentation>If true, then missing values count towards the total number of values. If false missing values are ignored.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSerialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSerialCountFlagsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="reliability" type="fews:statisticsSerialCountFlagsReliabilityEnumStringType">
						<annotation>
							<documentation>Only values with the specified reliability (flag) are counted. Choose "any" to count all values regardless of their reliability.</documentation>
						</annotation>
					</element>
					<element name="validationRule" type="fews:statisticsSerialCountFlagsValidationRuleEnumStringType">
						<annotation>
							<documentation>Only values for which the reason of rejection is equal to the specified validation rule (flagSource) are counted. Choose "any" to count all values regardless of their reason for rejection.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSerialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="statisticsSerialCountFlagsReliabilityEnumStringType">
		<restriction base="string">
			<enumeration value="any"/>
			<enumeration value="reliable"/>
			<enumeration value="doubtful"/>
			<enumeration value="non_missing_unreliable"/>
			<enumeration value="missing"/>
		</restriction>
	</simpleType>
	<simpleType name="statisticsSerialCountFlagsValidationRuleEnumStringType">
		<restriction base="string">
			<enumeration value="any"/>
			<enumeration value="none"/>
			<enumeration value="manual"/>
			<enumeration value="imported"/>
			<enumeration value="modifier"/>
			<enumeration value="extreme_values_soft_min"/>
			<enumeration value="extreme_values_hard_min"/>
			<enumeration value="extreme_values_soft_max"/>
			<enumeration value="extreme_values_hard_max"/>
			<enumeration value="rate_of_change_rise"/>
			<enumeration value="rate_of_change_fall"/>
			<enumeration value="same_reading"/>
			<enumeration value="temporary_shift"/>
			<enumeration value="oscillation"/>
			<enumeration value="series_comparison_check"/>
			<enumeration value="flags_comparison_check"/>
			<enumeration value="spatialhomogeneity_check"/>
			<enumeration value="mann_kendall_check"/>
		</restriction>
	</simpleType>
	<complexType name="StatisticsSerialPercentileExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageLocationAttributeStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSerialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSerialPercentileNonExceedenceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value" type="fews:floatPercentageLocationAttributeStringType">
						<annotation>
							<documentation>Percentile value, e.q. "95" for the 95th percentile.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSerialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StatisticsSerialQuartileComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="value">
						<annotation>
							<documentation>Quartile value, e.g. "3" for the third quartile.</documentation>
						</annotation>
						<simpleType>
							<restriction base="int">
								<minInclusive value="0"/>
								<maxInclusive value="4"/>
							</restriction>
						</simpleType>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.StatisticsSerialFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureGeneralWeirFixedHeightComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="headLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="tailLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructureGeneralWeirFixedHeightCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructureGeneralWeirFixedHeightCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructureGeneralWeirFixedHeightFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureGeneralWeirFixedHeightCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="height" type="float">
						<annotation>
							<documentation>Height of weir (m). Measured from upstream bed level to crest of weir. If crest level is omitted application assumes that weir is movable and a crest level value is expected as calculation input.</documentation>
						</annotation>
					</element>
					<element name="width" type="float">
						<annotation>
							<documentation>width of weir (m)</documentation>
						</annotation>
					</element>
					<element name="freeFlowLimitCoefficient" type="float">
						<annotation>
							<documentation>Limit coefficient defines when weir goes from free flowing to drowned flowing.</documentation>
						</annotation>
					</element>
					<element name="freeDischargeCoefficient" type="float">
						<annotation>
							<documentation>Discharge coefficient (-) for free flowing weir.</documentation>
						</annotation>
					</element>
					<element name="drownedDischargeCoefficient" type="float">
						<annotation>
							<documentation>Discharge coefficient (-) for drowned flowing weir.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureGeneralWeirFixedHeightCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="height" type="string">
						<annotation>
							<documentation>Height of weir (m). Measured from upstream bed level to crest of weir. If crest level is omitted application assumes that weir is movable and a crest level value is expected as calculation input.</documentation>
						</annotation>
					</element>
					<element name="width" type="string">
						<annotation>
							<documentation>width of weir (m)</documentation>
						</annotation>
					</element>
					<element name="freeFlowLimitCoefficient" type="string">
						<annotation>
							<documentation>Limit coefficient defines when weir goes from free flowing to drowned flowing.</documentation>
						</annotation>
					</element>
					<element name="freeDischargeCoefficient" type="string">
						<annotation>
							<documentation>Discharge coefficient (-) for free flowing weir.</documentation>
						</annotation>
					</element>
					<element name="drownedDischargeCoefficient" type="string">
						<annotation>
							<documentation>Discharge coefficient (-) for drowned flowing weir.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureGeneralWeirVariableHeightComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="headLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="tailLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="height" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructureGeneralWeirVariableHeightCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructureGeneralWeirVariableHeightCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructureGeneralWeirVariableHeightFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureGeneralWeirVariableHeightCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="width" type="float">
						<annotation>
							<documentation>width of weir (m)</documentation>
						</annotation>
					</element>
					<element name="freeFlowLimitCoefficient" type="float">
						<annotation>
							<documentation>Limit coefficient defines when weir goes from free flowing to drowned flowing.</documentation>
						</annotation>
					</element>
					<element name="freeDischargeCoefficient" type="float">
						<annotation>
							<documentation>Discharge coefficient (-) for free flowing weir.</documentation>
						</annotation>
					</element>
					<element name="drownedDischargeCoefficient" type="float">
						<annotation>
							<documentation>Discharge coefficient (-) for drowned flowing weir.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureGeneralWeirVariableHeightCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="width" type="string">
						<annotation>
							<documentation>width of weir (m)</documentation>
						</annotation>
					</element>
					<element name="freeFlowLimitCoefficient" type="string">
						<annotation>
							<documentation>Limit coefficient defines when weir goes from free flowing to drowned flowing.</documentation>
						</annotation>
					</element>
					<element name="freeDischargeCoefficient" type="string">
						<annotation>
							<documentation>Discharge coefficient (-) for free flowing weir.</documentation>
						</annotation>
					</element>
					<element name="drownedDischargeCoefficient" type="string">
						<annotation>
							<documentation>Discharge coefficient (-) for drowned flowing weir.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureCrumpWeirComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="headLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructureCrumpWeirCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructureCrumpWeirCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="type" type="fews:structureWeirTypeEnumStringType"/>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructureCrumpWeirFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureCrumpWeirCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="pUpValue" type="float"/>
					<element name="width" type="float"/>
					<element name="sSlope" type="float"/>
					<element name="dischargeCoefficient" type="float"/>
					<element name="energyHeadCorrection" type="boolean"/>
					<choice>
						<element name="singleCrest" type="fews:StructureCrumpWeirSingleCrestComplexType"/>
						<element name="doubleCrest" type="fews:StructureCrumpWeirDoubleCrestComplexType"/>
						<element name="tripleCrest" type="fews:StructureCrumpWeirTripleCrestComplexType"/>
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureCrumpWeirCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="pUpValue" type="string"/>
					<element name="width" type="string"/>
					<element name="sSlope" type="string"/>
					<element name="dischargeCoefficient" type="string"/>
					<element name="energyHeadCorrection" type="string"/>
					<choice>
						<element name="singleCrest" type="fews:StructureCrumpWeirSingleCrestFunctionsComplexType"/>
						<element name="doubleCrest" type="fews:StructureCrumpWeirDoubleCrestFunctionsComplexType"/>
						<element name="tripleCrest" type="fews:StructureCrumpWeirTripleCrestFunctionsComplexType"/>
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureCrumpWeirFirstCrestComplexType">
		<sequence>
			<element name="relativeLevel" type="float">
				<annotation>
					<documentation>Relative level for this crest (A).</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirFirstCrestFunctionsComplexType">
		<sequence>
			<element name="relativeLevel" type="string">
				<annotation>
					<documentation>Relative level for this crest (A).</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirNextCrestComplexType">
		<sequence>
			<element name="relativeLevel" type="float">
				<annotation>
					<documentation>Relative level for this crest (A).</documentation>
				</annotation>
			</element>
			<element name="width" type="float">
				<annotation>
					<documentation>Width for this crest (B).</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirNextCrestFunctionsComplexType">
		<sequence>
			<element name="relativeLevel" type="string">
				<annotation>
					<documentation>Relative level for this crest (A).</documentation>
				</annotation>
			</element>
			<element name="width" type="string">
				<annotation>
					<documentation>Width for this crest (B).</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirSingleCrestComplexType">
		<sequence>
			<element name="crest1" type="fews:StructureCrumpWeirFirstCrestComplexType"/>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirSingleCrestFunctionsComplexType">
		<sequence>
			<element name="crest1" type="fews:StructureCrumpWeirFirstCrestFunctionsComplexType"/>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirDoubleCrestComplexType">
		<sequence>
			<element name="crest1" type="fews:StructureCrumpWeirFirstCrestComplexType"/>
			<element name="crest2" type="fews:StructureCrumpWeirNextCrestComplexType"/>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirDoubleCrestFunctionsComplexType">
		<sequence>
			<element name="crest1" type="fews:StructureCrumpWeirFirstCrestFunctionsComplexType"/>
			<element name="crest2" type="fews:StructureCrumpWeirNextCrestFunctionsComplexType"/>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirTripleCrestComplexType">
		<sequence>
			<element name="crest1" type="fews:StructureCrumpWeirFirstCrestComplexType"/>
			<element name="crest2" type="fews:StructureCrumpWeirNextCrestComplexType"/>
			<element name="crest3" type="fews:StructureCrumpWeirNextCrestComplexType"/>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirTripleCrestFunctionsComplexType">
		<sequence>
			<element name="crest1" type="fews:StructureCrumpWeirFirstCrestFunctionsComplexType"/>
			<element name="crest2" type="fews:StructureCrumpWeirNextCrestFunctionsComplexType"/>
			<element name="crest3" type="fews:StructureCrumpWeirNextCrestFunctionsComplexType"/>
		</sequence>
	</complexType>
	<complexType name="StructureCrumpWeirBackwaterComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="headLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="tailLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructureCrumpWeirCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructureCrumpWeirCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="type" type="fews:structureWeirTypeEnumStringType"/>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructureCrumpWeirBackwaterFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="structureWeirTypeEnumStringType">
		<annotation>
			<documentation>Indicates the type of weir. Simple means no crest tapping.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="simple"/>
			<enumeration value="crest_tapping"/>
		</restriction>
	</simpleType>
	<complexType name="StructureFlatVWeirComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="headLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructureFlatVWeirCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructureFlatVWeirCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="type" type="fews:structureWeirTypeEnumStringType"/>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructureFlatVWeirFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureFlatVWeirCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="pUpValue" type="float"/>
					<element name="width" type="float"/>
					<element name="cSlope" type="float"/>
					<element name="sSlope" type="float"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureFlatVWeirCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="pUpValue" type="string"/>
					<element name="width" type="string"/>
					<element name="cSlope" type="string"/>
					<element name="sSlope" type="string"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructureFlatVWeirBackwaterComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="headLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="tailLevel" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructureFlatVWeirCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructureFlatVWeirCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="type" type="fews:structureWeirTypeEnumStringType"/>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with discharge values.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructureFlatVWeirBackwaterFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpFixedDischargeComplexType">
		<annotation>
			<documentation>Calculates discharge of a pump, using a fixed discharge when the pump is on. The fixed discharge is equal to the capacity of the pump and is defined in a coefficientSet.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="status" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. Pump status (on = 1 or off = 0). Input can be equidistant or non-equidistant. The intermediate result (discharge) is calculated at all times in the status input series.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet, defining embedded coefficientSets or defining an embedded coefficientSetFunctions object that refers to location attributes that are defined in the locationSets config file.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructurePumpFixedDischargeCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructurePumpFixedDischargeCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. Discharge of the pump. The intermediate result is aggregated to this equidistant output time series.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructurePumpFixedDischargeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpFixedDischargeCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="discharge" type="float">
						<annotation>
							<documentation>Fixed discharge of the pump, when the pump is on.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpFixedDischargeCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="discharge" type="string">
						<annotation>
							<documentation>Fixed discharge of the pump, when the pump is on.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpHeadDischargeTableComplexType">
		<annotation>
			<documentation>Calculates discharge of a pump. When the pump is on, then the discharge equals the capacity of the pump. The capacity of the pump depends on the head. The discharges for different heads are defined in a table in a coefficientSet.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="status" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. Pump status (on = 1 or off = 0). Input can be equidistant or non-equidistant. The intermediate result (discharge) is calculated at all times in the status input series and at all times in the head input series.</documentation>
						</annotation>
					</element>
					<element name="head" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. Difference between output and input water level for the pump. Head = downstreamWaterLevel - upstreamWaterLevel. Input can be equidistant or non-equidistant.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet, defining embedded coefficientSets or defining an embedded coefficientSetFunctions object that refers to location attributes that are defined in the locationSets config file.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructurePumpHeadDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructurePumpHeadDischargeTableCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. Discharge of the pump. The intermediate result is aggregated to this equidistant output time series.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructurePumpHeadDischargeTableFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpHeadDischargeTableCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="headDischargeTableRecord" type="fews:StructurePumpHeadDischargeTableRecordComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more table records. Each record lists the discharge of the pump for a given head. Heads need to be in ascending order. For input head values between records linear interpolation will be applied to get the discharge. For input head values outside the table range a debug message is logged and the closest defined head value is used to get the discharge.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpHeadDischargeTableRecordComplexType">
		<attribute name="head" type="float" use="required">
			<annotation>
				<documentation>Difference between output and input water level for the pump. Head = downstreamWaterLevel - upstreamWaterLevel.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="float" use="required">
			<annotation>
				<documentation>Discharge of the pump for the corresponding head, when the pump is on.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="StructurePumpHeadDischargeTableCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="headDischargeTableRecord" type="fews:StructurePumpHeadDischargeTableRecordFunctionsComplexType">
						<annotation>
							<documentation>One table record with functions that contain location attribute ids. Define multiple values for the location attributes to get multiple table records. Each record lists the discharge of the pump for a given head. Heads need to be in ascending order. For input head values between records linear interpolation will be applied to get the discharge. For input head values outside the table range a debug message is logged and the closest defined head value is used to get the discharge.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpHeadDischargeTableRecordFunctionsComplexType">
		<attribute name="head" type="string" use="required">
			<annotation>
				<documentation>Difference between output and input water level for the pump. Head = downstreamWaterLevel - upstreamWaterLevel.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="string" use="required">
			<annotation>
				<documentation>Discharge of the pump for the corresponding head, when the pump is on.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="StructurePumpSpeedDischargeTableComplexType">
		<annotation>
			<documentation>Calculates discharge of a speed-controlled pump with a fixed capacity. When the pump is on, then the discharge of the pump depends only on the speed. The discharges for different speeds are defined in a table in a coefficientSet.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="status" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. Pump status (on = 1 or off = 0). Input can be equidistant or non-equidistant. The intermediate result (discharge) is calculated at all times in the status input series and at all times in the speed input series.</documentation>
						</annotation>
					</element>
					<element name="speed" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. A speed value is either the pump speed (Hz) or a percentage or fraction of the capacity of the pump. Input can be equidistant or non-equidistant.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet, defining embedded coefficientSets or defining an embedded coefficientSetFunctions object that refers to location attributes that are defined in the locationSets config file.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructurePumpSpeedDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructurePumpSpeedDischargeTableCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. Discharge of the pump. The intermediate result is aggregated to this equidistant output time series.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructurePumpSpeedDischargeTableFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpSpeedDischargeTableCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="speedDischargeTableRecord" type="fews:StructurePumpSpeedDischargeTableRecordComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more table records. Each record lists the discharge of the pump for a given speed. Speeds need to be in ascending order. For input speed values between records linear interpolation will be applied to get the discharge. For input speed values outside the table range a debug message is logged and the closest defined speed value is used to get the discharge.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpSpeedDischargeTableRecordComplexType">
		<attribute name="speed" type="float" use="required">
			<annotation>
				<documentation>A speed value is either the pump speed (Hz) or a percentage or fraction of the capacity of the pump.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="float" use="required">
			<annotation>
				<documentation>Discharge of the pump for the corresponding speed, when the pump is on.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="StructurePumpSpeedDischargeTableCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="speedDischargeTableRecord" type="fews:StructurePumpSpeedDischargeTableRecordFunctionsComplexType">
						<annotation>
							<documentation>One table record with functions that contain location attribute ids. Define multiple values for the location attributes to get multiple table records. Each record lists the discharge of the pump for a given speed. Speeds need to be in ascending order. For input speed values between records linear interpolation will be applied to get the discharge. For input speed values outside the table range a debug message is logged and the closest defined speed value is used to get the discharge.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpSpeedDischargeTableRecordFunctionsComplexType">
		<attribute name="speed" type="string" use="required">
			<annotation>
				<documentation>A speed value is either the pump speed (Hz) or a percentage or fraction of the capacity of the pump.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="string" use="required">
			<annotation>
				<documentation>Discharge of the pump for the corresponding speed, when the pump is on.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="StructurePumpSpeedHeadDischargeTableComplexType">
		<annotation>
			<documentation>Calculates discharge of a speed-controlled pump with a head-dependent capacity. When the pump is on, then the discharge of the pump depends on both the speed and the head. The discharges for different speeds and heads are defined in a table in a coefficientSet.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="status" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. Pump status (on = 1 or off = 0). Input can be equidistant or non-equidistant. The intermediate result (discharge) is calculated at all times in the status input series, at all times in the speed input series and at all times in the head input series.</documentation>
						</annotation>
					</element>
					<element name="speed" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. A speed value is either the pump speed (Hz) or a percentage or fraction of the capacity of the pump. Input can be equidistant or non-equidistant.</documentation>
						</annotation>
					</element>
					<element name="head" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable. Difference between output and input water level for the pump. Head = downstreamWaterLevel - upstreamWaterLevel. Input can be equidistant or non-equidistant.</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:StructurePumpSpeedHeadDischargeTableCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:StructurePumpSpeedHeadDischargeTableCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="discharge" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable. Discharge of the pump. The intermediate result is aggregated to this equidistant output time series.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.structure.StructurePumpSpeedHeadDischargeTableFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpSpeedHeadDischargeTableCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="speedHeadDischargeTableRecord" type="fews:StructurePumpSpeedHeadDischargeTableRecordComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>One or more table records. Each record lists the discharge of the pump for a given speed and head. The records need to be sorted on speed values. The speed values need to be in ascending order and for each speed value the head values need to be in ascending order. For input speed and/or head values between records linear interpolation will be applied to get the discharge. For input speed and/or head values outside the table range a debug message is logged and the closest defined speed and/or head value is used to get the discharge.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpSpeedHeadDischargeTableRecordComplexType">
		<attribute name="speed" type="float" use="required">
			<annotation>
				<documentation>A speed value is either the pump speed (Hz) or a percentage or fraction of the capacity of the pump.</documentation>
			</annotation>
		</attribute>
		<attribute name="head" type="float" use="required">
			<annotation>
				<documentation>Difference between output and input water level for the pump. Head = downstreamWaterLevel - upstreamWaterLevel.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="float" use="required">
			<annotation>
				<documentation>Discharge of the pump for the corresponding speed and head, when the pump is on.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="StructurePumpSpeedHeadDischargeTableCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="speedHeadDischargeTableRecord" type="fews:StructurePumpSpeedHeadDischargeTableRecordFunctionsComplexType">
						<annotation>
							<documentation>One table record with functions that contain location attribute ids. Define multiple values for the location attributes to get multiple table records. Each record lists the discharge of the pump for a given speed and head. The records need to be sorted on speed values. The speed values need to be in ascending order and for each speed value the head values need to be in ascending order. For input speed and/or head values between records linear interpolation will be applied to get the discharge. For input speed and/or head values outside the table range a debug message is logged and the closest defined speed and/or head value is used to get the discharge.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StructurePumpSpeedHeadDischargeTableRecordFunctionsComplexType">
		<attribute name="speed" type="string" use="required">
			<annotation>
				<documentation>A speed value is either the pump speed (Hz) or a percentage or fraction of the capacity of the pump.</documentation>
			</annotation>
		</attribute>
		<attribute name="head" type="string" use="required">
			<annotation>
				<documentation>Difference between output and input water level for the pump. Head = downstreamWaterLevel - upstreamWaterLevel.</documentation>
			</annotation>
		</attribute>
		<attribute name="discharge" type="string" use="required">
			<annotation>
				<documentation>Discharge of the pump for the corresponding speed and head, when the pump is on.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="TimeShiftConstantComplexType">
		<complexContent>
			<extension base="fews:FunctionWithModuleParameterBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="moduleParameterFile" type="fews:nameStringType" minOccurs="0">
						<annotation>
							<documentation>reference to a module parameter file which can be modified in the mods-display</documentation>
						</annotation>
					</element>
					<element name="direction" type="fews:timeShiftDirectionEnumStringAttributeType" default="backward" minOccurs="0">
						<annotation>
							<documentation>Direction can be "forward" or "backward". This can also be a reference to a location attribute between '@' signs. The referenced location attribute must contain a valid direction.</documentation>
						</annotation>
					</element>
					<element name="numberOfTimeSteps" type="fews:intStringAttributeAndPropertyType" minOccurs="0">
						<annotation>
							<documentation>Integer number of time steps to shift input time series. This can also be a reference to a location attribute between '@' signs. The referenced location attribute must contain an integer.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.timeshift.TimeShiftConstantFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TimeShiftLengthComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="lookupVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable used to lookup the nearest time step.</documentation>
						</annotation>
					</element>
					<element name="lookupDirection" type="fews:timeShiftLengthLookupDirectionEnumStringType">
						<annotation>
							<documentation>Search for nearest time step in forward, backward or both of these directions.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.timeshift.TimeShiftLengthFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="timeShiftDirectionEnumStringAttributeType">
		<annotation>
			<documentation>Enumeration that allows references to location attributes.</documentation>
		</annotation>
		<union memberTypes="fews:timeShiftDirectionEnumStringType fews:attributeReferenceString"/>
	</simpleType>
	<simpleType name="timeShiftDirectionEnumStringType">
		<annotation>
			<documentation>Indicates in which direction the function timeShiftLength should look for the nearest time step.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="forward"/>
			<enumeration value="backward"/>
		</restriction>
	</simpleType>
	<simpleType name="timeShiftLengthLookupDirectionEnumStringType">
		<annotation>
			<documentation>Indicates in which direction the function timeShiftLength should look for the nearest time step.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="forward"/>
			<enumeration value="backward"/>
			<enumeration value="any"/>
		</restriction>
	</simpleType>
	<complexType name="TimeShiftVariableComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="shiftValuesVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that contains for each time step the time shift to shift that time step over.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.timeshift.TimeShiftVariableFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TimeShiftReferenceDateTimeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="referenceDateTime" type="fews:DateTimeStringComplexType">
						<annotation>
							<documentation>The number of time steps to shift, is determined as follows: periodToShift = T0 - referenceDateTime. Where T0 is the timeZero of the workflow in which this transformation runs. If T0 and/or referenceDateTime are not valid times according to the output timeStep, then they are rounded to the nearest valid times.</documentation>
						</annotation>
					</element>
					<element name="direction" type="fews:timeShiftReferenceDateTimeDirectionEnumStringType">
						<annotation>
							<documentation>Direction can be "toward_time_zero" or "toward_reference_date_time". This indicates the direction of the shift in time.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.timeshift.TimeShiftReferenceDateTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="timeShiftReferenceDateTimeDirectionEnumStringType">
		<restriction base="string">
			<enumeration value="toward_time_zero"/>
			<enumeration value="toward_reference_date_time"/>
		</restriction>
	</simpleType>
	<complexType name="UserSimpleComplexType">
		<annotation>
			<documentation>Function specified by a custom free format expression and coefficients.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients.</documentation>
				</annotation>
				<sequence>
					<element name="inputVariableDefinition" type="fews:InputVariableExpressionBasedFunctionComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Definitions of variables that can be used as input in this transformation. A variable is always a time series. Alternatively variables can be defined at the start of this transformations file.</documentation>
						</annotation>
					</element>
					<element name="expression" type="string">
						<annotation>
							<documentation>For instance "X1 + X2". In the expression reference input variables or coefficients using their id, e.g. "X1 + a" where "X1" is the variableId of a variable and "a" is the id of a coefficient. Variables can be defined in this transformation or at the start of this transformations file. If a variable definition in this transformation has the same id as a variable definition at the start of this transformations file, then the variable definition in this transformation is used. Coefficients can be defined in a coefficientSet. It is also possible to use the calculated output value of the previous time step, by using "PREVIOUS_OUTPUT_VALUE" in uppercase letters in the expression (can be used multiple times). For each calculation time step "PREVIOUS_OUTPUT_VALUE" is replaced with the previous output value from the output time series. For the first calculation time step in the run period, the previous output value from before the start of the run period is read from the existing output time series in the database (e.g. from a previous run), if present. If for a given calculation time step the previous output value is not present or is unreliable, then "PREVIOUS_OUTPUT_VALUE" is replaced with NaN (missing value).</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<annotation>
							<documentation>Optional choice between a reference to a coefficientSet or defining embedded coefficientSets. Use this only when coefficients are used in the free format expression.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:ExpressionCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="copyComment" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>concatenates all comments from input variables (used to create the output variable) and copies these concatenated comments to the output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.user.UserSimpleFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ExpressionCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="coefficient" type="fews:ExpressionCoefficientComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Coefficients for a free format expression. To use these coefficients, define a free format expression and reference to the identifiers of these coefficients in the expression. Make sure that for all the coefficient identifiers in the free format expression the values are defined here.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ExpressionCoefficientComplexType">
		<annotation>
			<documentation>Definition of a coefficient.</documentation>
		</annotation>
		<attribute name="id" type="fews:idStringType" use="required">
			<annotation>
				<documentation>Identifier with which this coefficient is referenced in the free format expression.</documentation>
			</annotation>
		</attribute>
		<attribute name="value" type="double" use="required">
			<annotation>
				<documentation>The float value of this coefficient.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="ExpressionCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="coefficient" type="fews:ExpressionCoefficientFunctionsComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Coefficients for a free format expression. To use these coefficients, define a free format expression and reference to the identifiers of these coefficients in the expression. Make sure that for all the coefficient identifiers in the free format expression the values are defined here.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ExpressionCoefficientFunctionsComplexType">
		<attribute name="id" type="string" use="required">
			<annotation>
				<documentation>Identifier with which this coefficient is referenced in the free format expression.</documentation>
			</annotation>
		</attribute>
		<attribute name="value" type="string" use="required">
			<annotation>
				<documentation>Location dependent function for the float value of this coefficient. This can contain location attribute ids, e.g. @COEFFICIENT_A@.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="UserPeriodicComplexType">
		<annotation>
			<documentation>Function specified by a custom free format expression and coefficients. Output values will be shifted periodically to within a given range, e.g. [0, 360].</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<annotation>
					<documentation>Function specified by a custom free format expression and coefficients.</documentation>
				</annotation>
				<sequence>
					<element name="inputVariableDefinition" type="fews:InputVariableExpressionBasedFunctionComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Definitions of variables that can be used as input in this transformation. A variable is always a time series. Alternatively variables can be defined at the start of this transformations file.</documentation>
						</annotation>
					</element>
					<element name="expression" type="string">
						<annotation>
							<documentation>For instance "X1 + X2". In the expression reference input variables or coefficients using their id, e.g. "X1 + a" where "X1" is the variableId of a variable and "a" is the id of a coefficient. Variables can be defined in this transformation or at the start of this transformations file. If a variable definition in this transformation has the same id as a variable definition at the start of this transformations file, then the variable definition in this transformation is used. Coefficients can be defined in a coefficientSet. It is also possible to use the calculated output value of the previous time step, by using "PREVIOUS_OUTPUT_VALUE" in uppercase letters in the expression (can be used multiple times). For each calculation time step "PREVIOUS_OUTPUT_VALUE" is replaced with the previous output value from the output time series. For the first calculation time step in the run period, the previous output value from before the start of the run period is read from the existing output time series in the database (e.g. from a previous run), if present. If for a given calculation time step the previous output value is not present or is unreliable, then "PREVIOUS_OUTPUT_VALUE" is replaced with NaN (missing value).</documentation>
						</annotation>
					</element>
					<choice minOccurs="0">
						<annotation>
							<documentation>Optional choice between a reference to a coefficientSet or defining embedded coefficientSets. Use this only when coefficients are used in the free format expression.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:ExpressionCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:ExpressionCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="periodicOutputRange" type="fews:UserPeriodicOutputRangeComplexType">
						<annotation>
							<documentation>Output values will be shifted periodically to within this range.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.user.UserSimpleFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="UserPeriodicOutputRangeComplexType">
		<sequence>
			<element name="lowerLimit" type="float"/>
			<element name="upperLimit" type="float"/>
		</sequence>
	</complexType>
	<complexType name="EventsTransformationChoiceComplexType">
		<choice>
			<element name="dischargeVolume" type="fews:EventsDischargeVolumeComplexType">
				<annotation>
					<documentation>Calculates either the volume or the maximum volume of the discharge values (m3/s) during the output period depending on the configured eventSelection. The volume is registered only in the output where the event started. In case of missing values, missing values are put in the output.</documentation>
				</annotation>
			</element>
			<element name="dischargeMeanVolume" type="fews:EventsDischargeMeanVolumeComplexType">
				<annotation>
					<documentation>Calculates the mean volume of discharge events (m3/s) that started in the output period. In case of missing values, missing values are put in the output.</documentation>
				</annotation>
			</element>
			<element name="duration" type="fews:EventsDurationComplexType">
				<annotation>
					<documentation>Calculates the duration of the events that started in the output period. If the maxGapDuration is not set to zero, periods smaller than the maxGapDuration (default 24h) will be added to the duration. In case of missing values, missing values are put in the output.</documentation>
				</annotation>
			</element>
			<element name="durationPerEvent" type="fews:EventsDurationPerEventComplexType">
				<annotation>
					<documentation>Calculates the length of each event found in the input time series.</documentation>
				</annotation>
			</element>
			<element name="maximum" type="fews:EventsMaximumComplexType">
				<annotation>
					<documentation>Calculates the maximum input value for events that started in the output period. In case of missing values, missing values are put in the output.</documentation>
				</annotation>
			</element>
			<element name="numberOfEvents" type="fews:EventsNumberOfEventsComplexType">
				<annotation>
					<documentation>Counts the events that initiated in the output period. In case of missing values, missing values are put in the output.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="EventsDischargeVolumeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="discharge" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with instanteous discharge flow values (m3/s).</documentation>
						</annotation>
					</element>
					<element name="eventSelection" type="fews:eventsDischargeEventsVolumeEventSelectionEnumStringType" default="all_events">
						<annotation>
							<documentation>Selects either the total volume or the volume of the event with the largest volume.</documentation>
						</annotation>
					</element>
					<element name="maxGapDuration" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If the timespan between consecutive events (input value below the threshold inbetween) is shorter than this value, these events will be dealt with as one event. If not specified, a maxGapDuration of 24 hours is used for this value as default.</documentation>
						</annotation>
					</element>
					<element name="threshold" type="float" default="0" minOccurs="0">
						<annotation>
							<documentation>Threshold level above which values are considered to be part of an event.</documentation>
						</annotation>
					</element>
					<element name="volume" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable with total volume or the volume of the event with the largest volume.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.events.EventsDischargeVolumeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EventsDurationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="input" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapDuration" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If the timespan between consecutive events (input value below the threshold inbetween) is shorter than this value, these events will be dealt with as one event. If not specified, a maxGapDuration of 24 hours is used for this value as default.</documentation>
						</annotation>
					</element>
					<element name="threshold" type="float" default="0" minOccurs="0">
						<annotation>
							<documentation>Threshold level above which values are considered to be part of an event.</documentation>
						</annotation>
					</element>
					<element name="outputTimeUnit" type="fews:timeUnitEnumStringType" default="day" minOccurs="0">
						<annotation>
							<documentation>Time unit for the output (default day).</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable containing the duration of the events, taking into account the maxGapDuration.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.events.EventsDurationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EventsDurationPerEventComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="input" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="outputTime" type="fews:eventsDurationPerEventOutputTimeEnumStringType" default="startEvent">
						<annotation>
							<documentation>Determines if the length of the event is written to the output timeseries at the beginning of the event or at the end of the event.</documentation>
						</annotation>
					</element>
					<element name="outputUnit" type="fews:eventsDurationPerEventOutputUnitEnumStringType" default="numberOfTimeSteps">
						<annotation>
							<documentation>Time unit for the output values.</documentation>
						</annotation>
					</element>
					<element name="maxGapDuration" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If the timespan between consecutive events (input value above the threshold inbetween) is shorter than this value, these events will be dealt with as one event.</documentation>
						</annotation>
					</element>
					<element name="threshold" type="float" default="0" minOccurs="0">
						<annotation>
							<documentation>Threshold level above which values are considered to be part of an event.</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable containing the duration of the events.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.events.EventsDurationPerEventFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="eventsDurationPerEventOutputUnitEnumStringType">
		<annotation>
			<documentation>Determines the unit which is used to describe the lenght of the event.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="numberOfTimeSteps">
				<annotation>
					<documentation>If this option is selected the duration of the event will be defined in the number of time steps the event lasted.</documentation>
				</annotation>
			</enumeration>
			<enumeration value="seconds">
				<annotation>
					<documentation>If this option is selected the length of the event will be defined in seconds.</documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<simpleType name="eventsDurationPerEventOutputTimeEnumStringType">
		<annotation>
			<documentation>Determines if the length of the event is written to the output timeseries at the beginning of the event or at the end of the event</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="startEvent">
				<annotation>
					<documentation>If this option is selected the length of the event will be written to the time at which the event was started</documentation>
				</annotation>
			</enumeration>
			<enumeration value="endEvent">
				<annotation>
					<documentation>If this option is selected the length of the event will be written to the time at
						which the event ended</documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<complexType name="EventsMaximumComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="input" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapDuration" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If the timespan between consecutive events (input value below the threshold inbetween) is shorter than this value, these events will be dealt with as one event. If not specified, a maxGapDuration of 24 hours is used for this value as default.</documentation>
						</annotation>
					</element>
					<element name="threshold" type="float" default="0" minOccurs="0">
						<annotation>
							<documentation>Threshold level above which values are considered to be part of an event.</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable containing the maximum value.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.events.EventsMaximumFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EventsNumberOfEventsComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="input" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="maxGapDuration" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If the timespan between consecutive events (input value below the threshold inbetween) is shorter than this value, these events will be dealt with as one event. If not specified, a maxGapDuration of 24 hours is used for this value as default.</documentation>
						</annotation>
					</element>
					<element name="threshold" type="float" default="0" minOccurs="0">
						<annotation>
							<documentation>Threshold level above which values are considered to be part of an event.</documentation>
						</annotation>
					</element>
					<element name="output" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable containing the number of events.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.events.EventsNumberOfEventsFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EventsDischargeMeanVolumeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<annotation>
					<documentation>This complexType should be extended by all function complexTypes for functions that can use a module parameter file.</documentation>
				</annotation>
				<sequence>
					<element name="discharge" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable with instanteous discharge flow values (m3/s).</documentation>
						</annotation>
					</element>
					<element name="maxGapDuration" type="fews:TimeSpanComplexType" minOccurs="0">
						<annotation>
							<documentation>If the timespan between consecutive events (input value below the threshold inbetween) is shorter than this value, these events will be dealt with as one event. If not specified, a maxGapDuration of 24 hours is used for this value as default.</documentation>
						</annotation>
					</element>
					<element name="threshold" type="float" default="0" minOccurs="0">
						<annotation>
							<documentation>Threshold level above which values are considered to be part of an event.</documentation>
						</annotation>
					</element>
					<element name="meanVolume" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable containing the mean volume (m3) per event.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.events.EventsDischargeMeanVolumeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="eventsDischargeEventsVolumeEventSelectionEnumStringType">
		<annotation>
			<documentation>Selects either all events or only the largest event</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="all_events">
				<annotation>
					<documentation>Total volume of all events</documentation>
				</annotation>
			</enumeration>
			<enumeration value="largest_volume_event">
				<annotation>
					<documentation>Volume of the largest event</documentation>
				</annotation>
			</enumeration>
		</restriction>
	</simpleType>
	<complexType name="CopyEnsembleTransformationComplexType">
		<annotation>
			<documentation>Generates ensembles for all possible combinations of ensemble members of the input variables. The timeseries for a particular output ensemble member are created by copying of the input variable to the associated output variable. The input/output variables withing a group should have the same ensemble memeber id's, since these memeber id's are included just one in the combination.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<group ref="fews:InputOutputElements" maxOccurs="unbounded"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generationensemble.GenerationEnsembleCopyFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectHistoricMembersTransformationComplexType">
		<annotation>
			<documentation>This function reduces historic ensemble members using (climate) indices.</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input ensemble timeseries. Each ensemble member should represent a year</documentation>
						</annotation>
					</element>
					<element name="selectVariable" type="fews:SelectHistoricMembersVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Index scalar timeseries used for ensemble member selection</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Reduced ensemble timeseries. Contains selected members only</documentation>
						</annotation>
					</element>
					<element name="startWaterYear" type="fews:monthDayType" minOccurs="0">
						<annotation>
							<documentation>First day of the waterYear</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generationensemble.GenerationEnsembleSelectWithSeriesFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectRankedMembersTransformationComplexType">
		<annotation>
			<documentation>Selects ensemble members by ranking of the (statistical) results of the ensemble members</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="selectVariable" type="fews:SelectMembersVariableComplexType">
						<annotation>
							<documentation>Ensemble time series used for selecting of ensemble member Id's</documentation>
						</annotation>
					</element>
					<element name="inputOutput" type="fews:InputOutputVariableComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Selected member Id's are used to select the same memebers from the inputVariable. The selected memebers are written to the outputVariable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generationensemble.GenerationEnsembleSelectWithRankedSeriesFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="CombineMembersEnsembleTransformationComplexType">
		<annotation>
			<documentation>This transformation merges members of two or more ensembles into one bigger ensemble</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType" minOccurs="2" maxOccurs="unbounded">
						<annotation>
							<documentation>Input ensemble timeseries</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output ensemble timeseries. This output ensemble contains all members from all input ensembles</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generationensemble.GenerationEnsembleCombineMembersFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="CombineForecastMembersEnsembleTransformationComplexType">
		<annotation>
			<documentation>This transformation merges members of two or more (ensemble) forecast into one ensemble</documentation>
		</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Definition of the input (ensemble) forecasts</documentation>
						</annotation>
					</element>
					<element name="numberOfForecasts" type="fews:positiveInteger">
						<annotation>
							<documentation>Number of forecast to read</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>Period in which numberOfForecasts should be searched</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Definition of the output ensemble timeseries. This output ensemble contains all members from all (ensemble) forecasts that has been retrieved</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generationensemble.GenerationEnsembleCombineForecastMembersFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="SelectHistoricMembersVariableComplexType">
		<annotation>
			<documentation>Scalar timeseries that is used to select ensemble members</documentation>
		</annotation>
		<sequence>
			<element name="indexVariable" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Specifies the scalar index series.</documentation>
				</annotation>
			</element>
			<choice>
				<annotation>
					<documentation>Maximum number of members to select can be fixed or maydiffer per forecast run.</documentation>
				</annotation>
				<element name="numberOfMembers" type="positiveInteger">
					<annotation>
						<documentation>Use this element if the number of members to select should be fixed.</documentation>
					</annotation>
				</element>
				<element name="numberOfMembersVariable" type="fews:InputVariableComplexType">
					<annotation>
						<documentation>Use this element if the number of members to select should differ per forecast run. This series should store the number of members. Value associated with T0 wil be used.</documentation>
					</annotation>
				</element>
			</choice>
		</sequence>
	</complexType>
	<complexType name="SelectMembersVariableComplexType">
		<annotation>
			<documentation>Time series used to select ensemble members</documentation>
		</annotation>
		<sequence>
			<element name="rankingVariable" type="fews:InputVariableComplexType">
				<annotation>
					<documentation>Ensemble time series. Each member holds just one value. This value is a (statistical)result of the analysis of the ensemble member. RankingVariable members will be sorted ascending or descending</documentation>
				</annotation>
			</element>
			<element name="sortAscending" type="boolean" default="true">
				<annotation>
					<documentation>Ordering method to rank the members of 'rankingVariable'. Ascending by default </documentation>
				</annotation>
			</element>
			<element name="numberOfMembers" type="positiveInteger">
				<annotation>
					<documentation>Number of members to select, starting from top of list</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="InputOutputVariableComplexType">
		<annotation>
			<documentation>Couples input variable and output variable in functions with more input and output variables.</documentation>
		</annotation>
		<sequence>
			<element name="inputVariable" type="fews:InputVariableComplexType"/>
			<element name="outputVariable" type="fews:OutputVariableComplexType"/>
		</sequence>
	</complexType>
	<complexType name="InputOutputVariableGroupComplexType">
		<annotation>
			<documentation>Groups several InputOutputVariableComplexType's.</documentation>
		</annotation>
		<sequence>
			<element name="inputOutput" type="fews:InputOutputVariableComplexType" minOccurs="2" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<complexType name="GenerationConstantComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:GenerationConstantCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:GenerationConstantCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output Variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generation.GenerationConstantFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationConstantCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="duration" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Time over which the total sum is spread</documentation>
						</annotation>
					</element>
					<element name="totalSum" type="double">
						<annotation>
							<documentation>Cummulative amount which will be evenly divided over the output times within the timeLength period.</documentation>
						</annotation>
					</element>
					<element name="delay" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Time preceding the timeLength period for which 0 of the unit defined in the output variable is generated</documentation>
						</annotation>
					</element>
					<element name="offset" type="fews:RelativeTimeComplexType" minOccurs="0">
						<annotation>
							<documentation>Time by which T0 will be shifted. A negative offset moves T0 backwards in time. This can be combined with a delay.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationConstantCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="duration" type="fews:TimeSpanFunctionsComplexType">
						<annotation>
							<documentation>Time over which the total sum is spread</documentation>
						</annotation>
					</element>
					<element name="totalSum" type="string">
						<annotation>
							<documentation>Cummulative amount which will be evenly divided over the output times within the timeLength period</documentation>
						</annotation>
					</element>
					<element name="delay" type="fews:TimeSpanFunctionsComplexType">
						<annotation>
							<documentation>Time preceding the timeLength period for which 0 of the unit defined in the output variable is generated</documentation>
						</annotation>
					</element>
					<element name="offset" type="fews:RelativeTimeFunctionsComplexType" minOccurs="0">
						<annotation>
							<documentation>Time by which T0 will be shifted. A negative offset moves T0 backwards in time. This can be combined with a delay.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TimeSpanFunctionsComplexType">
		<attribute name="unit" type="string" use="required"/>
		<attribute name="divider" type="string" use="optional" default="1"/>
		<attribute name="multiplier" type="string" use="optional" default="1"/>
	</complexType>
	<complexType name="RelativeTimeFunctionsComplexType">
		<annotation>
			<documentation>Defines a time relative to T0.</documentation>
		</annotation>
		<sequence>
			<element name="description" type="string" minOccurs="0">
				<annotation>
					<documentation>Optional description with additional comments. This is never used in the code.</documentation>
				</annotation>
			</element>
		</sequence>
		<attribute name="value" type="string" use="required"/>
		<attribute name="unit" type="string" use="required"/>
	</complexType>
	<complexType name="GenerationRecessionMeanComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input Variable</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:GenerationRecessionMeanCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:GenerationRecessionMeanCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output Variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generation.GenerationRecessionMeanFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationRecessionMeanCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="duration" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Time starting at T0, duration of the timespan for which a timeseries will be generated</documentation>
						</annotation>
					</element>
					<element name="matchingPeriod" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Matching period. This is the period leading up to T0 over which the mean is calculated</documentation>
						</annotation>
					</element>
					<element name="recessionFactor" type="double">
						<annotation>
							<documentation>Value by which the mean historic value is multiplied each time the pattern is repeated</documentation>
						</annotation>
					</element>
					<element name="offset" type="fews:RelativeTimeComplexType" minOccurs="0">
						<annotation>
							<documentation>Time by which T0 will be shifted. A negative offset moves T0 backwards in time.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationRecessionMeanCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="duration" type="fews:TimeSpanFunctionsComplexType">
						<annotation>
							<documentation>Time starting at T0, duration of the timespan for which a timeseries will be generated</documentation>
						</annotation>
					</element>
					<element name="matchingPeriod" type="fews:TimeSpanFunctionsComplexType">
						<annotation>
							<documentation>Matching period. This is the period leading up to T0 over which the mean is calculated</documentation>
						</annotation>
					</element>
					<element name="recessionFactor" type="string">
						<annotation>
							<documentation>Value by which the mean historic value is multiplied each time the pattern is repeated</documentation>
						</annotation>
					</element>
					<element name="offset" type="fews:RelativeTimeFunctionsComplexType" minOccurs="0">
						<annotation>
							<documentation>Time by which T0 will be shifted. A negative offset moves T0 backwards in time.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationRecessionPatternComplexType">
		<complexContent>
			<extension base="fews:FunctionWithCoefficientSetBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input Variable</documentation>
						</annotation>
					</element>
					<choice>
						<annotation>
							<documentation>Choice between a reference to a coefficientSet or defining embedded coefficientSets.</documentation>
						</annotation>
						<group ref="fews:CoefficientReferenceGroup"/>
						<element name="coefficientSet" type="fews:GenerationRecessionPatternCoefficientSetComplexType" maxOccurs="unbounded">
							<annotation>
								<documentation>One or more coefficientSets that are valid for different ranges of the defined limit variable. Ranges should not overlap.</documentation>
							</annotation>
						</element>
						<element name="coefficientSetFunctions" type="fews:GenerationRecessionPatternCoefficientSetFunctionsComplexType">
							<annotation>
								<documentation>A coefficientSetFunctions object. This is similar to a coefficientSet object, only the value elements are replaced by function elements. A function is an expression, e.g. "@N@ / 1000", in which tags between "@" signs refer to location attributes that are defined in the locationSets config file. The expression is evaluated after replacing the tags by actual values. These values can be different for different locations and time periods.</documentation>
							</annotation>
						</element>
					</choice>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output Variable</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.generation.GenerationRecessionPatternFunction" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationRecessionPatternCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="duration" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Time starting at T0, duration of the timespan for which a timeseries will be generated</documentation>
						</annotation>
					</element>
					<element name="matchingPeriod" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Matching period. This is the period leading up to T0 over which the mean is calculated</documentation>
						</annotation>
					</element>
					<element name="recessionFactor" type="double">
						<annotation>
							<documentation>Value by which the mean historic value is multiplied each time the pattern is repeated</documentation>
						</annotation>
					</element>
					<element name="offset" type="fews:RelativeTimeComplexType" minOccurs="0">
						<annotation>
							<documentation>Time by which T0 will be shifted. A negative offset moves T0 backwards in time.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GenerationRecessionPatternCoefficientSetFunctionsComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetFunctionsBaseComplexType">
				<sequence>
					<element name="duration" type="fews:TimeSpanFunctionsComplexType">
						<annotation>
							<documentation>Time starting at T0, duration of the timespan for which a timeseries will be generated</documentation>
						</annotation>
					</element>
					<element name="matchingPeriod" type="fews:TimeSpanFunctionsComplexType">
						<annotation>
							<documentation>Matching period. This is the period leading up to T0 over which the mean is calculated</documentation>
						</annotation>
					</element>
					<element name="recessionFactor" type="string">
						<annotation>
							<documentation>Value by which the mean historic value is multiplied each time the pattern is repeated</documentation>
						</annotation>
					</element>
					<element name="offset" type="fews:RelativeTimeFunctionsComplexType" minOccurs="0">
						<annotation>
							<documentation>Time by which T0 will be shifted. A negative offset moves T0 backwards in time.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="GradientChoiceComplexType">
		<choice>
			<element name="firstOrder" type="fews:FirstOrderGradientComplexType">
				<annotation>
					<documentation>Calculation of the gradient of a timeserie: (y1-y0)/(t1-t0)</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="FirstOrderGradientComplexType">
		<complexContent>
			<extension base="fews:FunctionWithModuleParameterBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input variable.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Output variable.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.gradient.FirstOrderGradientFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<group name="InputOutputElements">
		<annotation>
			<documentation>Use to ensure the specified sequence of the elements</documentation>
		</annotation>
		<choice>
			<element name="inputOutput" type="fews:InputOutputVariableComplexType"/>
			<element name="inputOutputGroup" type="fews:InputOutputVariableGroupComplexType"/>
		</choice>
	</group>
	<complexType name="ThreeDimensionalLookupCoefficientSetComplexType">
		<complexContent>
			<extension base="fews:CoefficientSetBaseComplexType">
				<sequence>
					<element name="interpolationType" type="fews:interpolationType">
						<annotation>
							<documentation>Interpolation Type for 1st dimension</documentation>
						</annotation>
					</element>
					<element name="extrapolationType" type="fews:lookupExtrapolationTypeEnumStringType">
						<annotation>
							<documentation>Extrapolation Type for 1st dimension</documentation>
						</annotation>
					</element>
					<element name="input2InterpolationType" type="fews:interpolationType" default="linear" minOccurs="0">
						<annotation>
							<documentation>Interpolation Type for 2nd dimension. Optional with default value "linear"</documentation>
						</annotation>
					</element>
					<element name="input2ExtrapolationType" type="fews:lookupExtrapolationTypeEnumStringType" default="extrapolate" minOccurs="0">
						<annotation>
							<documentation>Extrapolation Type for 2nd dimension. Optional with default value "extrapolate"</documentation>
						</annotation>
					</element>
					<sequence minOccurs="0">
						<element name="input1Unit" type="string">
							<annotation>
								<documentation>unit of the input1 values in the lookup table. When this unit is different from the input parameter unit the input values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
						<element name="input2Unit" type="string">
							<annotation>
								<documentation>unit of the input2 values in the lookup table. When this unit is different from the input parameter unit the input values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
						<element name="input3Unit" type="string">
							<annotation>
								<documentation>unit of the input2 values in the lookup table. When this unit is different from the input parameter unit the input values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
						<element name="outputUnit" type="string">
							<annotation>
								<documentation>unit of the output values in the lookup table. When this unit is different from the output parameter unit the output values are converted using the config units configured in the parameters.xml</documentation>
							</annotation>
						</element>
						<element name="csvFile" type="fews:fileStringType"/>
						<element name="input1Column" type="fews:nonEmptyStringType"/>
						<element name="input2Column" type="fews:nonEmptyStringType"/>
						<element name="input3Column" type="fews:nonEmptyStringType"/>
						<element name="outputColumn" type="fews:nonEmptyStringType"/>
					</sequence>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EnsembleMemberByIndexSelectionComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="memberIndex" type="fews:InputVariableComplexType"/>
					<element name="ensemble" type="fews:InputVariableComplexType"/>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.SelectionEnsembleMemberIndexFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="ruleOutcomeValueToSelectEnumStringType">
		<restriction base="string">
			<enumeration value="lowest"/>
			<enumeration value="highest"/>
		</restriction>
	</simpleType>
	<complexType name="PeakCorrectionComplexType">
		<sequence>
			<element name="peakNumber" type="int">
				<annotation>
					<documentation>Peak number since T0, first peak before T0 = -1, second peak before T0 == -2 etc</documentation>
				</annotation>
			</element>
			<element name="correctionMultiplicationAttributeId" type="fews:idStringType">
				<annotation>
					<documentation>Id of location attribute which contains the value of which the difference in peak height must be multiplied with to determine its part of the whole correction value.</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="OutputPeakCorrectionComplexType">
		<sequence>
			<element name="peakNumber" type="int">
				<annotation>
					<documentation>Peak number since T0, first peak after T0 = 1, second peak after T0 == 2 etc, default is 1</documentation>
				</annotation>
			</element>
		</sequence>
	</complexType>
	<complexType name="ThresholdExceedanceCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see whether its observed values match the values and value properties of the forecast variable.</documentation>
						</annotation>
					</element>
					<element name="inputForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see its values and value properties match the values of the observed variable.</documentation>
						</annotation>
					</element>
					<element name="inputForecastSequenceVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to split the run period into separate periods to look for crossings</documentation>
						</annotation>
					</element>
					<element name="thresholdCrossing" type="fews:ThresholdCrossingAttributesComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Id of the attributes that specify the threshold (value and lead time) that needs to be checked whether it is crossed in the observed input and predicted in the forecast input</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputForecastVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="startSequenceValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines a start of a new sequence for which individual threshold crossings should be counted</documentation>
						</annotation>
					</element>
					<element name="endSequenceValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines the end of a new sequence for which individual threshold crossings should be counted</documentation>
						</annotation>
					</element>
					<element name="forecastSelectValueProperty" type="fews:ValuePropertyComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Id and value of the property that determines whether a forecast should be selected for counting or not. When none are configured all forecasts are included, otherwise only the configured ones.</documentation>
						</annotation>
					</element>
					<element name="outputFalseAlarmCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are forecast but not observed</documentation>
						</annotation>
					</element>
					<element name="outputMissedCrossingsCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are observed but not forecast</documentation>
						</annotation>
					</element>
					<element name="outputMissedTimeCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are observed and forecast but not within an acceptable time range</documentation>
						</annotation>
					</element>
					<element name="outputHitCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are observed and forecast within an acceptable time range</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.ThresholdExceedanceCountFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ThresholdExceedanceMatchingComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see whether its observed values match the values and value properties of the forecast variable.</documentation>
						</annotation>
					</element>
					<element name="inputForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see its values and value properties match the values of the observed variable.</documentation>
						</annotation>
					</element>
					<element name="inputForecastSequenceVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to split the run period into separate periods to look for crossings</documentation>
						</annotation>
					</element>
					<element name="thresholdCrossing" type="fews:ThresholdCrossingAttributesComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Id of the attributes that specify the threshold (value and lead time) that needs to be checked whether it is crossed in the observed input and predicted in the forecast input</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputForecastVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="startSequenceValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines a start of a new sequence for which individual threshold crossings should be counted</documentation>
						</annotation>
					</element>
					<element name="endSequenceValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines the end of a new sequence for which individual threshold crossings should be counted</documentation>
						</annotation>
					</element>
					<element name="forecastSelectValueProperty" type="fews:ValuePropertyComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Id and value of the property that determines whether a forecast should be selected for counting or not. When none are configured all forecasts are included, otherwise only the configured ones.</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable to store the properties of crossings in.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.ThresholdExceedanceMatchingFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ForecastPeakComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see whether its observed values match the values and value properties of the forecast variable. This should only contain peak values.</documentation>
						</annotation>
					</element>
					<element name="inputForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see its values and value properties match the values of the observed variable.</documentation>
						</annotation>
					</element>
					<element name="peakValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines whether a forecast predicted a peak</documentation>
						</annotation>
					</element>
					<element name="peakRangeAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute which specifies how much the forecast peak height can be above or below the observed value</documentation>
						</annotation>
					</element>
					<element name="peakSearchPeriodAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute which specifies the time window in hours around the observed peak can be to match with a forecast. Half of the time window will be before, half will be after</documentation>
						</annotation>
					</element>
					<element name="missedPeakMinimumValueAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute that specifies the minimum value of an observed peak to be counted as missed</documentation>
						</annotation>
					</element>
					<element name="rangeValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines whether a peak prediction has a specific range. If so, this overrules the peak range taken from the attribute</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="outputMissedPeakCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many peaks are missed.</documentation>
						</annotation>
					</element>
					<element name="outputMissedHeightCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores for how many peaks the height is predicted incorrectly</documentation>
						</annotation>
					</element>
					<element name="outputHitCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many peaks are predicted correctly</documentation>
						</annotation>
					</element>
					<element name="outputMissedForecastCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many forecast peaks do not have an observed peak within their time window</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.ForecastPeakFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ForecastPeakMatchingComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see whether its observed values match the values and value properties of the forecast variable. This should only contain peak values.</documentation>
						</annotation>
					</element>
					<element name="inputForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see its values and value properties match the values of the observed variable.</documentation>
						</annotation>
					</element>
					<element name="peakValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines whether a forecast predicted a peak</documentation>
						</annotation>
					</element>
					<element name="peakSearchPeriodAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute which specifies the time window in hours around the observed peak can be to match with a forecast. Half of the time window will be before, half will be after</documentation>
						</annotation>
					</element>
					<element name="forecastPeakMinimumValueAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute that specifies the minimum value of an forecast peak to be included in counting</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="outputForecastVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores properties of matched observed peaks, Observed_Date for the observed peak time and Observed_Magnitude for the observed peak height.</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.ForecastPeakMatchingFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ForecastPeakEvaluationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see whether its observed values match the values and value properties of the forecast variable. This should only contain peak values.</documentation>
						</annotation>
					</element>
					<element name="inputForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see its values and value properties match the values of the observed variable.</documentation>
						</annotation>
					</element>
					<element name="peakValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines whether a forecast predicted a peak</documentation>
						</annotation>
					</element>
					<element name="peakRangeAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute which specifies how much the forecast peak height can be above or below the observed value</documentation>
						</annotation>
					</element>
					<element name="peakSearchPeriodAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute which specifies the time window in hours around the observed peak can be to match with a forecast. Half of the time window will be before, half will be after</documentation>
						</annotation>
					</element>
					<element name="missedPeakMinimumValueAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute that specifies the minimum value of an observed peak to be counted as missed</documentation>
						</annotation>
					</element>
					<element name="forecastPeakMinimumValueAttributeId" type="fews:idStringType">
						<annotation>
							<documentation>Id of the attribute that specifies the minimum value of an forecast peak to be included in counting</documentation>
						</annotation>
					</element>
					<element name="rangeValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines whether a peak prediction has a specific range. If so, this overrules the peak range taken from the attribute</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="outputMissedPeakCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many peaks are missed.</documentation>
						</annotation>
					</element>
					<element name="outputMissedHeightCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores for how many peaks the height is predicted incorrectly</documentation>
						</annotation>
					</element>
					<element name="outputHitCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many peaks are predicted correctly</documentation>
						</annotation>
					</element>
					<element name="outputMissedForecastCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many forecast peaks do not have an observed peak within their time window</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.ForecastPeakEvaluationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="CountForecastsOnTimeComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Input time series containing the forecast time series</documentation>
						</annotation>
					</element>
					<element name="forecastIssueTimePropertyId" type="fews:idStringType">
						<annotation>
							<documentation>Id the date time property that specifies when the forecast was issued</documentation>
						</annotation>
					</element>
					<element name="forecastNextIssueTimePropertyId" type="fews:idStringType">
						<annotation>
							<documentation>Id the date time property that specifies when the next forecast was supposed to be issued</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both
								inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriodExtensionTimeSpan" type="fews:TimeSpanComplexType">
						<annotation>
							<documentation>Time span for which the search period should be extended at the start. This is necessary to find 1 forecast previous to the first one in the search period to
								determine its next issue time
							</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.CountForecastsOnTimeFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ValuePropertyCountComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="valueProperty" type="fews:ValuePropertyComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Id and value of the property that should be counted, all time steps of all time series will be included in the count</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType" minOccurs="0">
						<annotation>
							<documentation>The inputVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both
								inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.CountValuePropertiesFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ValuePropertyComplexType">
		<attribute name="id" type="fews:idStringType"/>
		<attribute name="value" type="string"/>
	</complexType>
	<complexType name="FilterAttributeComplexType">
		<attribute name="id" type="fews:idStringType"/>
		<attribute name="value" type="string"/>
	</complexType>
	<complexType name="ThresholdCrossingAttributesComplexType">
		<attribute name="valueAttributeId" type="fews:idStringType">
			<annotation>
				<documentation>Id the attribute that specifies the threshold value that needs to be checked whether it is crossed in the observed input and predicted in the forecast input</documentation>
			</annotation>
		</attribute>
		<attribute name="leadTimeAttributeId" type="fews:idStringType">
			<annotation>
				<documentation>Id of the attribute that specifies the time window around the observed crossing in which a forecast crossing should be contained within</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="TopographicProminencePeaksComplexType">
		<annotation>
		<documentation>Finds the peak values of the input time series based on topographic prominence and writes this to the output time series.</documentation>
	</annotation>
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputVariable" type="fews:InputVariableComplexType"/>
					<element name="minimumPeakValueFunction" type="string" minOccurs="0">
						<annotation>
							<documentation>Optional location dependent minimum peak value function that can containt location attribute ids, e.g. @DEFAULT_VALUE@. If an attribute is missing for a location, then the default value will be 0 for that location. When element is not defined also 0 will be used.</documentation>
						</annotation>
					</element>
					<element name="minimumProminenceFunction" type="string">
						<annotation>
							<documentation>Location dependent minimum prominence function that can contain location attribute ids, e.g. @DEFAULT_VALUE@. If an attribute is missing for a location, then the default value will be 0 for that location. Peaks with prominence lower than the minimum will be filtered out but the highest peak will always remain. For explanation on topographic prominence see https://en.wikipedia.org/wiki/Topographic_prominence</documentation>
						</annotation>
					</element>
					<element name="outputVariable" type="fews:OutputVariableComplexType"/>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.selection.TopographicProminencePeaksFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this transformation. Only use this element if you need to use a custom class that is present in the program code.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ThresholdExceedanceEvaluationComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputObservedVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see whether its observed values match the values and value properties of the forecast variable.</documentation>
						</annotation>
					</element>
					<element name="inputForecastVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to see its values and value properties match the values of the observed variable.</documentation>
						</annotation>
					</element>
					<element name="inputForecastSequenceVariable" type="fews:InputVariableComplexType">
						<annotation>
							<documentation>Variable that is used to split the run period into separate periods to look for crossings</documentation>
						</annotation>
					</element>
					<element name="thresholdCrossing" type="fews:ThresholdCrossingAttributesComplexType" maxOccurs="unbounded">
						<annotation>
							<documentation>Id of the attributes that specify the threshold (value and lead time) that needs to be checked whether it is crossed in the observed input and predicted in the forecast input</documentation>
						</annotation>
					</element>
					<element name="forecastSearchPeriod" type="fews:RelativePeriodComplexType">
						<annotation>
							<documentation>The inputForecastVariable time series set will be used to find all input forecasts that have a forecastTime within this period (startTime and endTime are both inclusive). This period is relative to T0. Only approved forecasts and external forecasts will be found.
							</documentation>
						</annotation>
					</element>
					<element name="startSequenceValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines a start of a new sequence for which individual threshold crossings should be counted</documentation>
						</annotation>
					</element>
					<element name="endSequenceValueProperty" type="fews:ValuePropertyComplexType">
						<annotation>
							<documentation>Id and value of the property that determines the end of a new sequence for which individual threshold crossings should be counted</documentation>
						</annotation>
					</element>
					<element name="forecastSelectValueProperty" type="fews:ValuePropertyComplexType" minOccurs="0" maxOccurs="unbounded">
						<annotation>
							<documentation>Id and value of the property that determines whether a forecast should be selected for counting or not. When none are configured all forecasts are included, otherwise only the configured ones.</documentation>
						</annotation>
					</element>
					<element name="outputFalseAlarmCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are forecast but not observed</documentation>
						</annotation>
					</element>
					<element name="outputMissedCrossingsCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are observed but not forecast</documentation>
						</annotation>
					</element>
					<element name="outputMissedTimeCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are observed and forecast but not within an acceptable time range</documentation>
						</annotation>
					</element>
					<element name="outputHitCountVariable" type="fews:OutputVariableComplexType">
						<annotation>
							<documentation>Variable that stores how many threshold exceedences are observed and forecast within an acceptable time range</documentation>
						</annotation>
					</element>
					<element name="className" type="fews:nameStringType"
							 default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.statistics.ThresholdExceedanceEvaluationFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="trimOutputEnumStringType">
		<annotation>
			<documentation>Output is trimmed based on this flag; true trims both start and end, false trims neither start nor end, startOnly trims only the start output, and endOnly trims only the end output.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="true"/>
			<enumeration value="false"/>
			<enumeration value="startOnly"/>
			<enumeration value="endOnly"/>
		</restriction>
	</simpleType>
	<complexType name="CopyTransformationChoiceComplexType">
		<choice>
			<element name="newModuleInstance" type="fews:CopyNewModuleInstanceComplexType">
				<annotation>
					<documentation>Since 2025.02. Copies many time series at once to time series with a different module instance. It uses a time series filter instead of time series set, this way many different parameters and qualifiers sets can be selected at once.</documentation>
				</annotation>
			</element>
		</choice>
	</complexType>
	<complexType name="CopyNewModuleInstanceComplexType">
		<complexContent>
			<extension base="fews:FunctionBaseComplexType">
				<sequence>
					<element name="inputTimeSeries" type="fews:TimeSeriesFilterComplexType">
						<annotation>
							<documentation>Input filter which results in all time series existing which match the filter.</documentation>
						</annotation>
					</element>
					<element name="outputModuleInstanceId" type="fews:idStringType">
						<annotation>
							<documentation>Module instance id used in output to overrule the module instance id of input time series and create new unique output time series</documentation>
						</annotation>
					</element>
					<element name="includeUnreliableInputValues" type="boolean" default="false" minOccurs="0">
						<annotation>
							<documentation>Default false. When true, unreliable values in the input will not be ignored.</documentation>
						</annotation>
					</element>
					<sequence minOccurs="0">
						<element name="aggregateQualifierGroup" type="fews:idStringType" maxOccurs="unbounded">
							<annotation>
								<documentation>Qualifier group for which all input time series should be combined into one</documentation>
							</annotation>
						</element>
						<element name="qualifierAggregation" type="fews:qualifierAggregationStringType">
							<annotation>
								<documentation>Calculation method used to aggregate the input time series when multiple input time series with qualifiers from the aggregateQualifierGroups are combined into one output time series.</documentation>
							</annotation>
						</element>
					</sequence>
					<sequence minOccurs="0">
						<element name="inputSampleIdPostFix" type="fews:nonEmptyStringType" minOccurs="0">
							<annotation>
								<documentation>Postfix of input sample id which will be stripped off the end of the input sample id before adding a postfix</documentation>
							</annotation>
						</element>
						<element name="outputSampleIdPostFix" type="fews:nonEmptyStringType">
							<annotation>
								<documentation>Non empty text to add to input sample id to create new output sample id</documentation>
							</annotation>
						</element>
					</sequence>
					<element name="className" type="fews:nameStringType" default="nl.wldelft.fews.system.plugin.transformationmodule.function.implementation.copy.CopyNewModuleInstanceFunction" minOccurs="0">
						<annotation>
							<documentation>Optional element to define the name of the class that should be executed to perform this transformation. Normally this element can be left out of the xml
								configuration, and the default class name will be used. This default class name is defined as the default value for this element in the xsd schema for this
								transformation. Only use this element if you need to use a custom class that is present in the program code.
							</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
</schema>
