mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			423 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			423 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<!--
 | 
						|
  Licensed to the Apache Software Foundation (ASF) under one
 | 
						|
  or more contributor license agreements. See the NOTICE file
 | 
						|
  distributed with this work for additional information
 | 
						|
  regarding copyright ownership. The ASF licenses this file
 | 
						|
  to you under the Apache License, Version 2.0 (the
 | 
						|
  "License"); you may not use this file except in compliance
 | 
						|
  with the License. You may obtain a copy of the License at
 | 
						|
 | 
						|
  http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 | 
						|
  Unless required by applicable law or agreed to in writing,
 | 
						|
  software distributed under the License is distributed on an
 | 
						|
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
						|
  KIND, either express or implied. See the License for the
 | 
						|
  specific language governing permissions and limitations
 | 
						|
  under the License.
 | 
						|
-->
 | 
						|
 | 
						|
<beans xmlns="http://www.springframework.org/schema/beans"
 | 
						|
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 | 
						|
  xmlns:context="http://www.springframework.org/schema/context"
 | 
						|
  xmlns:tx="http://www.springframework.org/schema/tx" 
 | 
						|
  xmlns:aop="http://www.springframework.org/schema/aop"
 | 
						|
  xsi:schemaLocation="http://www.springframework.org/schema/beans
 | 
						|
                      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 | 
						|
                      http://www.springframework.org/schema/tx 
 | 
						|
                      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
 | 
						|
                      http://www.springframework.org/schema/aop
 | 
						|
                      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
 | 
						|
                      http://www.springframework.org/schema/context
 | 
						|
                      http://www.springframework.org/schema/context/spring-context-3.0.xsd">                     
 | 
						|
 | 
						|
 | 
						|
<!--
 | 
						|
 
 | 
						|
  non-OSS deployment configuration
 | 
						|
      
 | 
						|
  OSS/non-OSS counter-exclusive components and related configurations should be put here
 | 
						|
  for example, configurationDaoImpl component, it has exclusive configuration settings in OSS and non-OSS deployment,
 | 
						|
  its component declaration should be put in both componentContext.xml.in and nonossComponentContext.xml.in, each with
 | 
						|
  independent configuration
 | 
						|
    
 | 
						|
-->
 | 
						|
  <bean id="DatabaseUpgradeChecker" class="com.cloud.upgrade.DatabaseUpgradeChecker"/>
 | 
						|
  <bean id="GlobalLoadBalancingRulesServiceImpl" class ="org.apache.cloudstack.region.gslb.GlobalLoadBalancingRulesServiceImpl" >
 | 
						|
    <property name="GslbServiceProvider">
 | 
						|
      <ref bean="Netscaler"/>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!--
 | 
						|
    DAO with customized configuration under non-OSS deployment
 | 
						|
  -->
 | 
						|
  <bean id="configurationDaoImpl" class="org.apache.cloudstack.framework.config.dao.ConfigurationDaoImpl">
 | 
						|
    <property name="configParams">
 | 
						|
      <map>
 | 
						|
        <entry key="premium" value="true" />
 | 
						|
      </map>
 | 
						|
    </property>  
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!--
 | 
						|
    VMware support components
 | 
						|
  -->  
 | 
						|
  <bean id="VmwareFencer" class="com.cloud.ha.VmwareFencer">
 | 
						|
    <property name="name" value="VMwareFenceBuilder"/>
 | 
						|
  </bean>
 | 
						|
  <bean id="vmwareServerDiscoverer" class="com.cloud.hypervisor.vmware.VmwareServerDiscoverer">
 | 
						|
    <property name="name" value="VMware Discover"/>
 | 
						|
  </bean>
 | 
						|
  <bean id="VMwareGuru" class="com.cloud.hypervisor.guru.VMwareGuru">
 | 
						|
    <property name="name" value="VMwareGuru"/>
 | 
						|
  </bean>
 | 
						|
  <bean id="VmwareInvestigator" class="com.cloud.ha.VmwareInvestigator">
 | 
						|
    <property name="name" value="VMwareInvestigator"/>
 | 
						|
  </bean>
 | 
						|
  <bean id="VmwareManager" class="com.cloud.hypervisor.vmware.manager.VmwareManagerImpl"/>
 | 
						|
  <bean id="vmwareContextFactory" class="com.cloud.hypervisor.vmware.resource.VmwareContextFactory" />
 | 
						|
  <bean id="VmwareDatacenterDaoImpl" class="com.cloud.hypervisor.vmware.dao.VmwareDatacenterDaoImpl" />
 | 
						|
  <bean id="VmwareDatacenterZoneMapDaoImpl" class="com.cloud.hypervisor.vmware.dao.VmwareDatacenterZoneMapDaoImpl" />
 | 
						|
  <bean id="LegacyZoneDaoImpl" class="com.cloud.hypervisor.vmware.dao.LegacyZoneDaoImpl" />
 | 
						|
 | 
						|
  <!--
 | 
						|
    Nicira support components
 | 
						|
  -->
 | 
						|
  <bean id="niciraNvpDaoImpl" class="com.cloud.network.dao.NiciraNvpDaoImpl" />
 | 
						|
  <bean id="niciraNvpNicMappingDaoImpl" class="com.cloud.network.dao.NiciraNvpNicMappingDaoImpl" />
 | 
						|
  <bean id="niciraNvpRouterMappingDaoImpl" class="com.cloud.network.dao.NiciraNvpRouterMappingDaoImpl" />
 | 
						|
  <bean id="NiciraNvpGuestNetworkGuru" class="com.cloud.network.guru.NiciraNvpGuestNetworkGuru">
 | 
						|
    <property name="name" value="NiciraNvpGuestNetworkGuru"/>
 | 
						|
  </bean>
 | 
						|
  <bean id="NiciraNvp" class="com.cloud.network.element.NiciraNvpElement">
 | 
						|
    <property name="name" value="NiciraNvp"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
      BigSwitch Components
 | 
						|
  -->
 | 
						|
  <bean id="BigSwitchVns" class="com.cloud.network.element.BigSwitchVnsElement">
 | 
						|
    <property name="name" value="BigSwitchVns"/>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!--
 | 
						|
    Netapp support components
 | 
						|
  -->  
 | 
						|
  <bean id="lunDaoImpl" class="com.cloud.netapp.dao.LunDaoImpl" />
 | 
						|
  <bean id="poolDaoImpl" class="com.cloud.netapp.dao.PoolDaoImpl" />
 | 
						|
  <bean id="netappVolumeDaoImpl" class="com.cloud.netapp.dao.VolumeDaoImpl" />
 | 
						|
  <bean id="NetappManager" class="com.cloud.netapp.NetappManagerImpl"/>
 | 
						|
 | 
						|
  <!--
 | 
						|
   JuniperSRX support components
 | 
						|
  -->
 | 
						|
  <bean id="JuniperSRX" class="com.cloud.network.element.JuniperSRXExternalFirewallElement">
 | 
						|
    <property name="name" value="JuniperSRX"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
    NetScalar support components
 | 
						|
  -->
 | 
						|
  <bean id="netScalerPodDaoImpl" class="com.cloud.network.dao.NetScalerPodDaoImpl" />
 | 
						|
  <bean id="Netscaler" class="com.cloud.network.element.NetscalerElement">
 | 
						|
    <property name="name" value="Netscaler"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
    F5BigIP support components
 | 
						|
  -->
 | 
						|
  <bean id="F5BigIP" class="com.cloud.network.element.F5ExternalLoadBalancerElement">
 | 
						|
    <property name="name" value="F5BigIP"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
    Cisco Nexus support components
 | 
						|
  -->  
 | 
						|
  <bean id="ciscoNexusVSMDeviceDaoImpl" class="com.cloud.network.dao.CiscoNexusVSMDeviceDaoImpl" />
 | 
						|
  <bean id="CiscoNexus1000vVSM" class="com.cloud.network.element.CiscoNexusVSMElement">
 | 
						|
    <property name="name" value="CiscoNexus1000vVSM"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
    Cisco VNMC support components
 | 
						|
  -->
 | 
						|
  <bean id="ciscoVnmcDaoImpl" class="com.cloud.network.dao.CiscoVnmcDaoImpl" />
 | 
						|
  <bean id="ciscoAsa1000vDaoImpl" class="com.cloud.network.dao.CiscoAsa1000vDaoImpl" />
 | 
						|
  <bean id="networkAsa1000vMapDaoImpl" class="com.cloud.network.dao.NetworkAsa1000vMapDaoImpl" />
 | 
						|
  <bean id="CiscoVNMC" class="com.cloud.network.element.CiscoVnmcElement">
 | 
						|
    <property name="name" value="CiscoVNMC"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
    BigSwitch support components
 | 
						|
  -->  
 | 
						|
  <bean id="bigSwitchVnsDaoImpl" class="com.cloud.network.dao.BigSwitchVnsDaoImpl" />
 | 
						|
  <bean id="bigSwitchVnsElement" class="com.cloud.network.element.BigSwitchVnsElement">
 | 
						|
    <property name="name" value="BigSwitchVnsElement"/>
 | 
						|
  </bean>
 | 
						|
 | 
						|
 | 
						|
  <!--
 | 
						|
    Midonet support components
 | 
						|
  -->
 | 
						|
  <bean id="MidoNetGuestNetworkGuru" class="com.cloud.network.guru.MidoNetGuestNetworkGuru">
 | 
						|
    <property name="name" value="MidoNetGuestNetworkGuru"/>
 | 
						|
  </bean>
 | 
						|
  <bean id="MidoNetElement" class="com.cloud.network.element.MidoNetElement">
 | 
						|
    <property name="name" value="MidoNetElement"/>
 | 
						|
  </bean>
 | 
						|
 | 
						|
 | 
						|
  <!--
 | 
						|
    UCS support components
 | 
						|
  -->
 | 
						|
  <bean id="ucsBladeDaoImpl" class="com.cloud.ucs.database.UcsBladeDaoImpl" />
 | 
						|
  <bean id="ucsManagerDaoImpl" class="com.cloud.ucs.database.UcsManagerDaoImpl" />
 | 
						|
  
 | 
						|
<!--
 | 
						|
 | 
						|
  Deployment configurations of various adapters
 | 
						|
    
 | 
						|
  It determines whether or not a adapter is activated or how it is loaded in order in its managing provider,
 | 
						|
     
 | 
						|
-->
 | 
						|
 | 
						|
  <!--Motion Strategies-->
 | 
						|
  <bean id="vmwareStorageMotionStrategy" class="org.apache.cloudstack.storage.motion.VmwareStorageMotionStrategy" />
 | 
						|
  <bean id="dataMotionServiceImpl" class="org.apache.cloudstack.storage.motion.DataMotionServiceImpl">
 | 
						|
    <property name="strategies">
 | 
						|
      <list>
 | 
						|
        <ref bean="ancientDataMotionStrategy"/>
 | 
						|
        <ref bean="xenserverStorageMotionStrategy"/>
 | 
						|
        <ref local="vmwareStorageMotionStrategy"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="cloudStackImageStoreProviderImpl"
 | 
						|
        class="org.apache.cloudstack.storage.datastore.provider.CloudStackImageStoreProviderImpl"/>
 | 
						|
  <bean id="s3ImageStoreProviderImpl"
 | 
						|
        class="org.apache.cloudstack.storage.datastore.provider.S3ImageStoreProviderImpl"/>
 | 
						|
  <bean id="swiftImageStoreProviderImpl"
 | 
						|
        class="org.apache.cloudstack.storage.datastore.provider.SwiftImageStoreProviderImpl"/>
 | 
						|
  <bean id="solidFireDataStoreProvider"
 | 
						|
        class="org.apache.cloudstack.storage.datastore.provider.SolidfirePrimaryDataStoreProvider"/>
 | 
						|
 | 
						|
  <!--Storage Providers-->
 | 
						|
  <bean id="dataStoreProviderManager"
 | 
						|
        class="org.apache.cloudstack.storage.datastore.provider.DataStoreProviderManagerImpl">
 | 
						|
    <property name="providers">
 | 
						|
      <list merge="true">
 | 
						|
        <ref bean="cloudStackPrimaryDataStoreProviderImpl"/>
 | 
						|
        <ref bean="cloudStackImageStoreProviderImpl"/>
 | 
						|
        <ref bean="s3ImageStoreProviderImpl"/>
 | 
						|
        <ref local="swiftImageStoreProviderImpl"/>
 | 
						|
        <ref bean="solidFireDataStoreProvider"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!-- Security adapters -->
 | 
						|
  <bean id="userAuthenticators" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="SHA256SaltedUserAuthenticator"/>
 | 
						|
          <ref bean="MD5UserAuthenticator"/>
 | 
						|
          <ref bean="LdapAuthenticator"/>
 | 
						|
          <ref bean="PlainTextUserAuthenticator"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
  <bean id="userPasswordEncoders" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="SHA256SaltedUserAuthenticator"/>
 | 
						|
          <ref bean="MD5UserAuthenticator"/>
 | 
						|
          <ref bean="LdapAuthenticator"/>
 | 
						|
          <ref bean="PlainTextUserAuthenticator"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="securityCheckers" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
	      <ref bean="roleBasedEntityAccessChecker"/>
 | 
						|
	      <ref bean="affinityGroupAccessChecker"/>
 | 
						|
          <ref bean="domainChecker"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!-- Resource discoverers -->
 | 
						|
  <bean id="resourceDiscoverers" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="XcpServerDiscoverer"/>
 | 
						|
          <ref bean="SecondaryStorageDiscoverer"/>
 | 
						|
          <ref bean="KvmServerDiscoverer"/>
 | 
						|
          <ref bean="BareMetalDiscoverer"/>
 | 
						|
          <ref bean="OvmDiscoverer"/>
 | 
						|
          <ref bean="vmwareServerDiscoverer"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!-- HA adapters -->
 | 
						|
  <bean id="haInvestigators" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="CheckOnAgentInvestigator"/>
 | 
						|
          <ref bean="XenServerInvestigator"/>
 | 
						|
          <ref bean="VmwareInvestigator"/>
 | 
						|
          <ref bean="UserVmDomRInvestigator"/>
 | 
						|
          <ref bean="ManagementIPSystemVMInvestigator"/>
 | 
						|
          <ref bean="KVMInvestigator"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="haFenceBuilders" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="XenServerFencer"/>
 | 
						|
          <ref bean="KVMFencer"/>
 | 
						|
          <ref bean="OvmFencer"/>
 | 
						|
          <ref bean="VmwareFencer"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!-- Deployment/allocation adapters -->
 | 
						|
  <bean id="deploymentPlanners" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="FirstFitPlanner" />
 | 
						|
          <ref bean="UserDispersingPlanner" />
 | 
						|
          <ref bean="UserConcentratedPodPlanner" />
 | 
						|
          <ref bean="ImplicitDedicationPlanner" />
 | 
						|
          <ref bean="BareMetalPlanner" />
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="podAllocators" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="UserConcentratedAllocator"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <bean id="hostAllocators" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="FirstFitRouting"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="storagePoolAllocators" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="LocalStoragePoolAllocator"/>
 | 
						|
          <ref bean="clusterScopeStoragePoolAllocator"/>
 | 
						|
          <ref bean="zoneWideStoragePoolAllocator"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!-- Networking adapters -->
 | 
						|
  <bean id="ipDeployers" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="elasticLoadBalancerElement"/>
 | 
						|
          <ref bean="VirtualRouter"/>
 | 
						|
          <ref bean="VpcVirtualRouter"/>
 | 
						|
          <ref bean="NiciraNvp"/>
 | 
						|
          <ref bean="InternalLbVm"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="dhcpProviders" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="VirtualRouter"/>
 | 
						|
          <ref bean="VpcVirtualRouter"/>
 | 
						|
          <ref bean="BareMetalDhcp"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <bean id="networkGurus" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="StorageNetworkGuru"/>
 | 
						|
          <ref bean="ExternalGuestNetworkGuru"/>
 | 
						|
          <ref bean="PublicNetworkGuru"/>
 | 
						|
          <ref bean="PodBasedNetworkGuru"/>
 | 
						|
          <ref bean="DirectPodBasedNetworkGuru"/>
 | 
						|
          <ref bean="ControlNetworkGuru"/>
 | 
						|
          <ref bean="DirectNetworkGuru"/>
 | 
						|
          <ref bean="OvsGuestNetworkGuru"/>
 | 
						|
          <ref bean="PrivateNetworkGuru"/>
 | 
						|
          <ref bean="NiciraNvpGuestNetworkGuru"/>
 | 
						|
          <ref bean="MidoNetGuestNetworkGuru"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <bean id="networkElements" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="JuniperSRX"/>
 | 
						|
          <ref bean="Netscaler"/>
 | 
						|
          <ref bean="F5BigIP"/>
 | 
						|
          <ref bean="CiscoNexus1000vVSM"/>
 | 
						|
          <ref bean="CiscoVNMC"/>
 | 
						|
          <ref bean="NiciraNvp" />
 | 
						|
          <ref bean="MidoNetElement" />
 | 
						|
          <ref bean="bigSwitchVnsElement"/>
 | 
						|
          <ref bean="VirtualRouter"/>
 | 
						|
          <ref bean="Ovs"/>
 | 
						|
          <ref bean="SecurityGroupProvider"/>
 | 
						|
          <ref bean="VpcVirtualRouter"/>
 | 
						|
          <ref bean="InternalLbVm"/>
 | 
						|
          <ref bean="BareMetalDhcp"/>
 | 
						|
          <ref bean="BareMetalPxe"/>
 | 
						|
          <ref bean="BareMetalUserdata"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <!--
 | 
						|
   AffinityGroup Processors
 | 
						|
  -->
 | 
						|
  <bean id="HostAntiAffinityProcessor" class="org.apache.cloudstack.affinity.HostAntiAffinityProcessor">
 | 
						|
   	<property name="name" value="HostAntiAffinityProcessor"/>
 | 
						|
   	<property name="type" value="host anti-affinity"/>
 | 
						|
  </bean>
 | 
						|
  
 | 
						|
  <bean id="affinityProcessors" class="com.cloud.utils.component.AdapterList">
 | 
						|
    <property name="Adapters">
 | 
						|
      <list>
 | 
						|
          <ref bean="HostAntiAffinityProcessor" />
 | 
						|
          <ref bean="ExplicitDedicationProcessor"/>
 | 
						|
      </list>
 | 
						|
    </property>
 | 
						|
  </bean>
 | 
						|
 | 
						|
  <!--
 | 
						|
    Dedicated Resources components
 | 
						|
  -->
 | 
						|
 | 
						|
  <bean id="DedicatedResourceManagerImpl" class="org.apache.cloudstack.dedicated.DedicatedResourceManagerImpl"/>
 | 
						|
  <bean id="ExplicitDedicationProcessor" class="org.apache.cloudstack.affinity.ExplicitDedicationProcessor">
 | 
						|
    <property name="name" value="ExplicitDedicationProcessor"/>
 | 
						|
    <property name="type" value="ExplicitDedication"/>
 | 
						|
  </bean>
 | 
						|
 | 
						|
</beans>
 |