<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2012 rel. 2 sp1 (http://www.altova.com) by Debbie Fitzgerald (CableLabs) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:cablelabs:opencable:xsd:mux:1.0" xmlns:core="http://www.scte.org/schemas/130-2/2008a/core" xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types" targetNamespace="urn:cablelabs:opencable:xsd:mux:1.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:import namespace="urn:ietf:params:xml:ns:yang:ietf-inet-types" schemaLocation="ietf-inet-types.xsd"/>
	<xsd:import namespace="http://www.scte.org/schemas/130-2/2008a/core" schemaLocation="SCTE_130-2_2008a.xsd"/>
	<!-- RuleType-->
	<xsd:simpleType name="RuleType">
		<xsd:annotation>
			<xsd:documentation>'keep': pass the inputs to the output on the specified flow point outside of a splice event if present.</xsd:documentation>
			<xsd:documentation>'drop' do not pass any present (EISS and ETV-DATA) inputs to the output on the specified flow point outside of a splice event</xsd:documentation>
			<xsd:documentation>'splice-keep':  pass the inputs to the output during splice event if present </xsd:documentation>
			<xsd:documentation>'splice-drop':  do not pass any present (EISS and ETV-DATA) during a splice-event</xsd:documentation>
			<xsd:documentation>'splice-exclusive': keep ETV-DATA and EISS from the highest priority flow point if present; if not, pass the ETV-DATA and EISS PIDs from next priority flow point if present</xsd:documentation>
			<xsd:documentation>'persistent': at all times (non-splice and during a splice event), pass the EISS and ETV-DATA, if present, from the input to the output (note EISS is merged, but priority needs to be applied to select the ETV-DATA on the output)</xsd:documentation>
			<xsd:documentation>'create': if not present, create ghost PIDs on the output</xsd:documentation>
			<xsd:documentation>'private:' provides support for local/private extension.</xsd:documentation>
			<xsd:documentation>NOTES:
			-   'Present' implies that the pidType exists and has not been removed by any AppList filtering.  
			-  A splice event is typically initiated at the out point based on an SCTE 35 cue message received. A splice event ends when the last SCTE 30 splice complete is sent for the flow point and pass through of the primary input resumes (SCTE 30 "return to primary channel").  
			-  Rules are only applied to pidTypes of EISS and ETV-DATA.  
			-  Splice-time rules (splice-drop and splice-keep) are only to be set on flow points that receive SCTE 35 cue messages.  
			-  More than one rule can be defined on a flow point. 
			-  If more than one flow point has a rule that results in EISS passed to the output, the EISS packets are merged into a single EISS stream.  
			-  If more than one flow point has a rule that results in ETV-DATA passed to the output, the ETV-DATA flow point with the highest priority will be passed.  
			-  A rule can be defined within one flow point for another flow point using the nameofFlowPoint attribute.  
			-  If conflicting rules are defined, the rule with the highest priority (lowest number) will take precedence. 
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="keep|drop|splice-keep|splice-drop|splice-exclusive|persistent|create|private:.+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="UnicastVideoTsType">
		<xsd:sequence>
			<xsd:element name="UnicastTsDestinationIpAddress" type="inet:ip-address">
				<xsd:annotation>
					<xsd:documentation>
            The IP destination address of the UDP IP flow of the transport stream.
          </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="UnicastTsDestinationUdpPort" type="inet:port-number">
				<xsd:annotation>
					<xsd:documentation>
            The UDP destination port of the UDP IP flow of the transport stream.
          </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="MulticastTsType">
		<xsd:sequence>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="MulticastVideoTsType">
		<xsd:sequence>
			<xsd:element name="MulticastTsSourceIpAddress" type="inet:ip-address" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The source IP address for a Source Specific Multicast (SSM) address.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MulticastTsDestinationIpAddress" type="inet:ip-address">
				<xsd:annotation>
					<xsd:documentation>
            The destination multicast IP address.
          </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MulticastTsDestinationUdpPort" type="inet:port-number" default="0" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>
           The UDP destination port of the multicast stream.
          </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="MulticastTsInterfaceName" type="xsd:string" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Local IP interface; must be a configured ip-interface name.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="VideoOutputTsType">
		<xsd:annotation>
			<xsd:documentation>IP address for the unicast or multicast connection. For multicast connections, enter the multicast IP address.</xsd:documentation>
		</xsd:annotation>
		<xsd:choice>
			<xsd:element name="UnicastVideoTs" type="UnicastVideoTsType" minOccurs="0"/>
			<xsd:element name="MulticastVideoTs" type="MulticastVideoTsType" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>This object identifies a video output stream.  In the context of MUX 3.0, it is not used for configuration, only for identification to be used as a Flow Point.  Application filters and Source Management Rules can then be applied to the specified VideoOutputTs Flow Point. </xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:choice>
	</xsd:complexType>
	<!-- AppListEntryType -->
	<xsd:complexType name="AppListEntryType">
		<xsd:annotation>
			<xsd:documentation>
			Use of fields for matching
			1. the following are valid matching patterns for an application.  Any of the values can be included but all entries in the list up to that entry are required if the value is included.  If organization is not included, then no values are valid, and all applications will match the filter  A filter with no attributes specfied should be created with a lower priority and can be used as a default if no other filters apply at that Flow Point.

Application
1. SCTE 130 - Used in combination with an action on a SCTE 130-3 Placement element. 
			Placement@action = "update"
			typeOfEntry is ignored

			Placement@action = "appFilter" - establish an application filter - could be a whitelist or blacklist			
			typeOfEntry = "blacklist" - if a given app matches an entry in the app list, it is blocked; otherwise, it is allowed. 
			typeOfEntry = "whitelist" - if a given app matches an entry in the app list, it is allowed; otherwise, it is blocked. 

2. CCAP - Used wthin a FlowConfigurationType structure to statically configure a flow within a device

			ConfigurationItem@type = "update"
			typeOfEntry is ignored
			@filePath - URL to the CoDF file to apply

			Configuration@action = "appFilter" - establish an application filter - could be a whitelist or blacklist			
			typeOfEntry = "blacklist" - if a given app matches an entry in the app list, it is blocked; otherwise, it is allowed. 
			typeOfEntry = "whitelist" - if a given app matches an entry in the app list, it is allowed; otherwise, it is blocked. 
			filePath is ignored

Once an entry evalutes to TRUE, it will be processed and no additional entries will be evaluated. That is:
- for a "whitelist" entry, if the entry matches, the application (signaling and data) will be passed out of the Flow Point
- for a "blacklist" entry, if the entry matches, the application (signaling and data) will be dropped
- for an "update"entry, if the entry matches, the update will be applied and the application passed out of the Flow Point (NOTE: "update" is an implicit "whitelist" entry)
 
</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="tracking" type="GUIDType">
			<xsd:annotation>
				<xsd:documentation> tracking uniquely identifies this entry It is a GUID that can be passed in SCTE 130 PSNs or in reporting entries.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="priorityOfEntry" type="xsd:unsignedInt" default="1">
			<xsd:annotation>
				<xsd:documentation> If more than one app list entry exist in the app list entries table and/or multiple app list entry tables are  active at the same time, the priority specifies the order entries are processed. The default value is priority 1. The lower the value the higher the proirity. If multiple entries accross all entries in a single table or accross multiple tables have the same priority the order of interpretation is not deterministic.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="typeOfEntry" type="typeOfEntryType">
			<xsd:annotation>
				<xsd:documentation>Required to setup a white or black list. typeOfEntry can be whitelist, blacklist or private:*. typeOfEntry does not apply if the action is "udpate"</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="organizationID" type="xsd:integer" use="optional">
			<xsd:annotation>
				<xsd:documentation>Specifies a 32-bit organization ID for matching.  If this attribute is not specified, all other application identifier attributes are to be ignored.  If this attribute is not specified, all applications will match this filter.  For example, if the typOfEntry is specified as "blacklist", and no other application identifiers are specified, all applications will match this filter and be dropped.  To set up a Flow Point that drops all applications by default, and only passes specified applications, create a whitelist for those specified applications, and a blacklist for all other applications with a lower priorityOfEntry.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="applicationID" type="xsd:integer" use="optional">
			<xsd:annotation>
				<xsd:documentation>Specifies a 16-bit application ID for matching.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="majorVersion" use="optional">
			<xsd:annotation>
				<xsd:documentation>Specifies an integer (0-255) application major version for matching.</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:unsignedInt">
					<xsd:minInclusive value="0"/>
					<xsd:maxInclusive value="255"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="minorVersion" use="optional">
			<xsd:annotation>
				<xsd:documentation>Specifies an integer (0-255) application minor version for matching.</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:unsignedInt">
					<xsd:minInclusive value="0"/>
					<xsd:maxInclusive value="255"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="applicationInstanceID" type="InstanceIDType" use="optional">
			<xsd:annotation>
				<xsd:documentation>Specifies an application instance identifier for matching.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="applicationPriority">
			<xsd:annotation>
				<xsd:documentation>Specifies the application priority (0-255) for matching. Used in combination with the other application specific attributes.</xsd:documentation>
			</xsd:annotation>
			<xsd:simpleType>
				<xsd:restriction base="xsd:unsignedInt">
					<xsd:minInclusive value="0"/>
					<xsd:maxInclusive value="255"/>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="testFlag" type="xsd:integer" use="optional" default="0">
			<xsd:annotation>
				<xsd:documentation>8-bit integer which specifies a test flag field for matching. The usage of this field is entirely defined by the MSO.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="privateData" type="xsd:hexBinary" use="optional">
			<xsd:annotation>
				<xsd:documentation>ETV application descriptor private data field for matching. HEX string value.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:anyAttribute namespace="##any" processContents="lax"/>
	</xsd:complexType>
	<!--Configuration Type-->
	<xsd:complexType name="ConfigurationType">
		<xsd:annotation>
			<xsd:documentation>ConfigurationType is used to set global settings for a MUX (ex. in CCAP this may appear as an extentension under the ccap/management element)</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="ADSRegistrationData" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>Optional list of callouts (see SCTE 130-3 for valid message values) when ADS registration messages are not used.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ADSCallOut" type="core:CalloutType" maxOccurs="unbounded"/>
						<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
					</xsd:sequence>
					<xsd:attribute name="adsCallOutState" type="xsd:boolean">
						<xsd:annotation>
							<xsd:documentation>System level default for ADSCallout in the absence of an ADSRegistration call from a Decision System. Set to TRUE if all flow points should do a callout. Set to FALSE if all flow should not do a callout. ADSCallOut can be overriden at a given flow point. If not specified at a configured Callout at the system level, this attribute MUST default to “false ”</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="FilterConfiguration" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>If Filtering is supported, the FilterConfiguration element MUST be supplied. FilterConfiguration defines default filtering behavior for all or specific flows within a MUX.</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:attribute name="defaultFilterType" type="typeOfEntryType" use="required">
						<xsd:annotation>
							<xsd:documentation>Default filter type (MUST be provided)
· whitelist – if an application matches a blacklist filter it will be dropped, otherwise it will be allowed (pass all signals and data)
· blacklist -  if an application matches a whitelist filter it will be passed, otherwise it will be rejected (drop all signaling and data)
- private:. </xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="videoInputTsFilterType" type="typeOfEntryType">
						<xsd:annotation>
							<xsd:documentation>Default filter type on all video-input-ts Flow Points)</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="sessionFilterType" type="typeOfEntryType">
						<xsd:annotation>
							<xsd:documentation>Default filter type on all program-session Flow Points.</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="videoOutputTsFilterType" type="typeOfEntryType">
						<xsd:annotation>
							<xsd:documentation>Default filter type on all video-output-ts Flow Points</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="VideoIPDRConfig" type="VideoIPDRConfigType" minOccurs="0"/>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="RevisionAttributeGroup"/>
		<xsd:attribute name="vendorControlValue">
			<xsd:annotation>
				<xsd:documentation>This is an optional value that may be used as a control value when integrating different systems. (e.g.. A MUX may use this value as a  way to "sign" export files. On import the MUX vendor may validate the signature against the last export sent.)</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<!--Flow configuration Type-->
	<xsd:complexType name="FlowConfigurationType">
		<xsd:annotation>
			<xsd:documentation>FlowConfigurationType for use in static configuration of a flow point within a configuration. (ex. CCAP OSSI schema video element)
IPDRConfig - used to override the global setting from ConfigurationType
ConfigurationItem - one or more entries to define an application filter, an udpate or a private definition on the flow.			
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="IPDRConfig" type="IPDRReportingControlType" minOccurs="0"/>
			<xsd:element name="FlowConfigItem" type="FlowConfigurationItemType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="VideoOutputTs" type="VideoOutputTsType" minOccurs="0"/>
			<xsd:element name="SourceManagementConfig" type="SourceManagementConfigType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attributeGroup ref="RevisionAttributeGroup"/>
		<xsd:attribute name="adsCallOutState" type="xsd:boolean">
			<xsd:annotation>
				<xsd:documentation>Override global adsCallOutState setting. If set to TRUE, an ADS Callout should be done.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="FlowConfigurationItemType">
		<xsd:annotation>
			<xsd:documentation>ConfigurationItemType for use within FlowConfigurationType </xsd:documentation>
		</xsd:annotation>
		<xsd:sequence minOccurs="0">
			<xsd:element name="AppList" minOccurs="0">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="AppListType">
							<xsd:attribute name="configurationEntryType" type="configurationEntryTypeType" use="required">
								<xsd:annotation>
									<xsd:documentation>Type of configuration entry - appFilter, update, or private </xsd:documentation>
								</xsd:annotation>
							</xsd:attribute>
							<xsd:attribute name="fileRef" type="xsd:anyURI">
								<xsd:annotation>
									<xsd:documentation>URI path to the CoDF file  </xsd:documentation>
								</xsd:annotation>
							</xsd:attribute>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
		<xsd:attribute name="mpegProgramNumber">
			<xsd:annotation>
				<xsd:documentation>Choose a specific program number within a flow</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	<!-- IPDR config for video services  -->
	<xsd:complexType name="VideoIPDRConfigType">
		<xsd:sequence>
			<xsd:annotation>
				<xsd:documentation>
                    The container for configuring global IPDR sessions and collectors.
                  </xsd:documentation>
			</xsd:annotation>
			<xsd:sequence>
				<xsd:element name="ExporterConfig" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
                          ExporterConfig allows an IPDR Exporter to be turned on and off.
                        </xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Enabled" type="xsd:boolean" default="true" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
                                Configures whether or not the IPDR Exporter is enabled.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="StreamingSession" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>
						This configuration object is used to configure individual streaming sessions associated with service definitions.
                        </xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="SessionId" type="xsd:unsignedShort">
								<xsd:annotation>
									<xsd:documentation>
                                The ID for this instance.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="KeepAliveInterval" type="xsd:unsignedShort" default="20" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
                                The interval in seconds at which IPDR 'keepalives' are sent from the MUX 3.0 IPDR exporter to the collector.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="AckTimeInterval" default="30" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
                                The interval in seconds in which the MUX 3.0 IPDR exporter waits for an acknowledgment.
                              </xsd:documentation>
								</xsd:annotation>
								<xsd:simpleType>
									<xsd:restriction base="xsd:unsignedByte">
										<xsd:minInclusive value="1"/>
										<xsd:maxInclusive value="60"/>
									</xsd:restriction>
								</xsd:simpleType>
							</xsd:element>
							<xsd:element name="AckSequenceInterval" default="200" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
                                The maximum number of unacknowledged records that can be sent by the MUX 3.0 IPDR exporter before receiving an acknowledgement.
                              </xsd:documentation>
								</xsd:annotation>
								<xsd:simpleType>
									<xsd:restriction base="xsd:unsignedShort">
										<xsd:minInclusive value="1"/>
										<xsd:maxInclusive value="500"/>
									</xsd:restriction>
								</xsd:simpleType>
							</xsd:element>
							<xsd:element name="CollectionInterval">
								<xsd:annotation>
									<xsd:documentation>
                                Where streaming is of the type timeInterval, this object configures the interval in seconds at which IPDR information is extracted from the MUX 3.0 management objects and transmitted to the collector. 
                                Where streaming is of the type timeEvent, this object identifies the interval at which the MUX 3.0 IPDR exporter will close the IPDR session to allow IPDR session processing to occur. Records created by Service Definitions supporting timeEvent are sent when the event is generated.
                              </xsd:documentation>
								</xsd:annotation>
								<xsd:simpleType>
									<xsd:restriction base="xsd:unsignedInt">
										<xsd:minInclusive value="0"/>
										<xsd:maxInclusive value="86400"/>
									</xsd:restriction>
								</xsd:simpleType>
							</xsd:element>
							<xsd:element name="StreamingType">
								<xsd:annotation>
									<xsd:documentation>
                                The type of IPDR streaming used for the session. The value of other(1) is used when a vendor-extension has been implemented for this attribute.
                              </xsd:documentation>
								</xsd:annotation>
								<xsd:simpleType>
									<xsd:restriction base="xsd:string">
										<xsd:enumeration value="other"/>
										<xsd:enumeration value="time-interval"/>
										<xsd:enumeration value="ad-hoc"/>
										<xsd:enumeration value="event"/>
										<xsd:enumeration value="time-event"/>
									</xsd:restriction>
								</xsd:simpleType>
							</xsd:element>
							<xsd:element name="Enabled" type="xsd:boolean" default="true" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
										This object controls whether the IPDR Session is enabled or disabled.
									 </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="ServiceDefinitionType" type="xsd:string">
								<xsd:annotation>
									<xsd:documentation>
										This object configures the service type definition for this IPDR session. This is a string that should specify the URI of the service definition schema.
									 </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="CollectorReference" minOccurs="0" maxOccurs="unbounded">
								<xsd:annotation>
									<xsd:documentation>
                                A reference to a collector id.
                              </xsd:documentation>
								</xsd:annotation>
								<xsd:simpleType>
									<xsd:restriction base="xsd:unsignedByte"/>
								</xsd:simpleType>
							</xsd:element>
							<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Collector" minOccurs="0" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>
                          This configuration object allows the operator to configure an IPDR collector.
                        </xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="CollectorId" type="xsd:unsignedByte">
								<xsd:annotation>
									<xsd:documentation>
                                This key configures a unique identifier for this collector.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="CollectorIp" type="inet:ip-address">
								<xsd:annotation>
									<xsd:documentation>
                                The IP address of collector from which the MUX 3.0 will accept a connect. The collector establishes a connection to the MUX 3.0.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="CollectorName" type="xsd:string" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
                                Optional name for the IPDR collector. 
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="CollectorPort" type="inet:port-number" default="4737" minOccurs="0">
								<xsd:annotation>
									<xsd:documentation>
                                The port used by the collector to communicate with the MUX 3.0.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="Priority" type="xsd:unsignedByte">
								<xsd:annotation>
									<xsd:documentation>
                                This object configures the priority of this IPDR collector. The priority is used to elect the primary and active collector. The collector with the highest priority (lowest number) is elected.
                              </xsd:documentation>
								</xsd:annotation>
							</xsd:element>
							<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
			</xsd:sequence>
		</xsd:sequence>
		<xsd:attributeGroup ref="ReportingAttributeGroup"/>
	</xsd:complexType>
	<xsd:complexType name="IPDRReportingControlType">
		<xsd:annotation>
			<xsd:documentation>IPDR Reporting Control - set to TRUE to enable reporting, set to FALSE to disable reporting.</xsd:documentation>
		</xsd:annotation>
		<xsd:attributeGroup ref="ReportingAttributeGroup"/>
	</xsd:complexType>
	<xsd:complexType name="ExtType">
		<xsd:annotation>
			<xsd:documentation>This type may contain elements or attributes from any namespace and is provided for future extensibility.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:anyAttribute namespace="##any" processContents="lax"/>
	</xsd:complexType>
	<xsd:attributeGroup name="RevisionAttributeGroup">
		<xsd:attribute name="revision" type="xsd:unsignedInt">
			<xsd:annotation>
				<xsd:documentation>Revision number for this entry. Start at 1 and increment each time there is an update.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="revisionDateTime" type="xsd:dateTime">
			<xsd:annotation>
				<xsd:documentation>Time/Date stamp for the revision.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>
	<xsd:attributeGroup name="ReportingAttributeGroup">
		<xsd:annotation>
			<xsd:documentation>Use to control reporting on a global and flow point basis.</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="defaultReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting. TRUE means report; FALSE means don't report. When used globally, this value will apply (becomes the default for all local ReportingAttributeGroup usage) but can be overridden on a case by case basis. The global state is FALSE by default. If FALSE, any other reporting control in this attribute group shall be ignored; otherwise, each additonal reporting control shall be applied.</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="pmtReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for the PMT. TRUE means report; FALSE means don't report. When used globally, this value can be overriden on a an individual flow point. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="eissReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for the ETV_EISS. TRUE means report; FALSE means don't report. When used globally, this value can be overridden on an individual flow point. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="diiReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for the ETV_DII. TRUE means report; FALSE means don't report. When used globally, this value can be overridden on an individual flow point.. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="ddbReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for the ETV_DDB. TRUE means report; FALSE means don't report. When used globally, this value can be overridden on an individual flow point.. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="sdtReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for the SDT. TRUE means report; FALSE means don't report. When used globally, this value can be overridden on an individual flow point. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="scte35ReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for SCTE 35 sections. TRUE means report; FALSE means don't report. When used globally, this value can be overridden on an individual flow point. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="bwReportingState" type="xsd:boolean" default="false">
			<xsd:annotation>
				<xsd:documentation>Specify the default state of reporting for bandwidth.TRUE means report; FALSE means don't report. When used globally, this value can be overridden on an individual flow point. FALSE by default. </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="bwSampleInterval" type="xsd:unsignedInt" default="5">
			<xsd:annotation>
				<xsd:documentation>The sampling interval (in seconds) for bandwidth collection.  If not specified, the default is 5 (seconds) </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="bwNumSamples" type="xsd:unsignedInt" default="6">
			<xsd:annotation>
				<xsd:documentation>The number of sample intervals for which the MaxBandwidth and AvgBandwidth are calculated.  If not specified, the default is 6 (sample intervals) </xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:attributeGroup>
	<!--configurationEntryTypeType-->
	<xsd:simpleType name="configurationEntryTypeType">
		<xsd:annotation>
			<xsd:documentation>The type of the configuration entry. appFilter if its a whitelist/blacklist, update, or private.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="appFilter|update|private:.+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- GUID Type -->
	<xsd:simpleType name="GUIDType">
		<xsd:annotation>
			<xsd:documentation xml:lang="en">                 The representation of a GUID, generally the id of an element.             </xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- InstanceIDType -->
	<xsd:simpleType name="InstanceIDType">
		<xsd:annotation>
			<xsd:documentation>
For use in uniquely identifying application instances and events. This format supports a Version 1 (MAC-based) UUID as defined in [RFC 4122] and encoded as a Base64URL string as defined in [RFC 4648]. The 16-byte binary UUID will encode to a 22-byte string by using a modified Base64 for URL variant, where no padding '=' will be used, and the '+' and '/' characters of standard Base64 are respectively replaced by '-' and '_'.</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[a-zA-Z0-9_-]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!--AppList typeOfEntryType-->
	<xsd:simpleType name="typeOfEntryType">
		<xsd:annotation>
			<xsd:documentation>AppList entry type - whitelist or blacklist</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="whitelist|blacklist|private:.+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- AppListType -->
	<xsd:complexType name="AppListType">
		<xsd:annotation>
			<xsd:documentation>Contains one or more AppListItem entries					</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="AppListEntry" type="AppListEntryType" maxOccurs="unbounded"/>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<!-- AppListElement -->
	<xsd:element name="AppList" type="AppListType"/>
	<xsd:element name="Configuration" type="ConfigurationType"/>
	<xsd:element name="FlowConfig" type="FlowConfigurationType"/>
	<xsd:element name="SourceManagementConfig" type="SourceManagementConfigType"/>
	<xsd:complexType name="SourceManagementConfigType">
		<xsd:sequence>
			<xsd:element name="Settings" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Rule" minOccurs="0" maxOccurs="unbounded">
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="RuleType">
										<xsd:attribute name="nameOfFlowPoint" type="xsd:string">
											<xsd:annotation>
												<xsd:documentation>Optional nameOfFlowPoint to apply the rule to. If omitted, the rule applies to the flow point where this entry is placed.</xsd:documentation>
											</xsd:annotation>
										</xsd:attribute>
										<xsd:attribute name="pidType">
											<xsd:annotation>
												<xsd:documentation>Optional elementary stream type. If omitted, the rule applies to all eiss and etvbif PIDs in the specifed flow point. If the flow point has multiple programs all PIDs of this type will be processed unless otherwise constrained to a specific program number.</xsd:documentation>
											</xsd:annotation>
											<xsd:simpleType>
												<xsd:restriction base="xsd:string">
													<xsd:pattern value="eiss|etv-data|private:.+"/>
												</xsd:restriction>
											</xsd:simpleType>
										</xsd:attribute>
										<xsd:attribute name="pid" type="xsd:unsignedShort">
											<xsd:annotation>
												<xsd:documentation>Optional 13-bit packet ID (PID). If omitted, the rule applies to all PIDs in the specifed flow point.</xsd:documentation>
											</xsd:annotation>
										</xsd:attribute>
										<xsd:attribute name="programNumber" type="xsd:unsignedLong">
											<xsd:annotation>
												<xsd:documentation>Optional program number within the designed stream to apply the rule to. If omitted, the rule applies to all programs in the specifed flow point. This also applies to alll PIDs within the program unless constrained otherwise.</xsd:documentation>
											</xsd:annotation>
										</xsd:attribute>
										<xsd:attribute name="tracking" type="GUIDType" use="required">
											<xsd:annotation>
												<xsd:documentation>Tracking uniquely identifies this entry. It is a GUID that can be passed in SCTE 130 PSNs or in reporting entries. (IPDR: string)</xsd:documentation>
											</xsd:annotation>
										</xsd:attribute>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
					</xsd:sequence>
					<xsd:attribute name="priority" type="xsd:unsignedByte" use="optional" default="255">
						<xsd:annotation>
							<xsd:documentation>The priority value defined to allow differentiation among the various stream flows based on the relative importance of the individual streams. The lower the value defined the higher the priority.</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Ext" type="ExtType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
