summaryrefslogtreecommitdiff
path: root/MIBS/telco-systems/binos/PRVT-EPS-MIB
diff options
context:
space:
mode:
authorDavid Leutgeb <david.leutgeb@mannundmouse.com>2023-12-05 12:25:34 +0100
committerDavid Leutgeb <david.leutgeb@mannundmouse.com>2023-12-05 12:25:34 +0100
commit98a672123c7872f6b9b75a9a2b6bb3aea504de6a (patch)
tree9b13bd7f563c3198047bd359195327cf28b3caf0 /MIBS/telco-systems/binos/PRVT-EPS-MIB
downloadmibs-main.tar.gz
mibs-main.zip
Initial commitHEADmain
Diffstat (limited to 'MIBS/telco-systems/binos/PRVT-EPS-MIB')
-rw-r--r--MIBS/telco-systems/binos/PRVT-EPS-MIB605
1 files changed, 605 insertions, 0 deletions
diff --git a/MIBS/telco-systems/binos/PRVT-EPS-MIB b/MIBS/telco-systems/binos/PRVT-EPS-MIB
new file mode 100644
index 0000000..a4a4a32
--- /dev/null
+++ b/MIBS/telco-systems/binos/PRVT-EPS-MIB
@@ -0,0 +1,605 @@
+PRVT-EPS-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY,
+ OBJECT-TYPE,
+ NOTIFICATION-TYPE,
+ Unsigned32 FROM SNMPv2-SMI -- [RFC2578]
+ TEXTUAL-CONVENTION,
+ RowStatus,
+ TruthValue FROM SNMPv2-TC
+ MODULE-COMPLIANCE,
+ OBJECT-GROUP,
+ NOTIFICATION-GROUP FROM SNMPv2-CONF -- [RFC2580]
+ switch FROM PRVT-SWITCH-MIB
+ Dot1agCfmMepIdOrZero,
+ Dot1agCfmMDLevelOrNone FROM IEEE8021-CFM-MIB
+ sdpInfoEntry FROM PRVT-SERV-MIB
+ ;
+
+prvtEpsMib MODULE-IDENTITY
+ LAST-UPDATED "201004170000Z"
+ ORGANIZATION "BATM Advanced Communication"
+ CONTACT-INFO
+ " BATM/Telco Systems Support team
+ Email:
+ For North America: techsupport@telco.com
+ For North Europe: support@batm.de, info@batm.de
+ For the rest of the world: techsupport@telco.com"
+ DESCRIPTION
+ "Private MIB supporting Linear Ethernet Protection Switching (ITU-T G.8031)"
+
+-- revision history
+ REVISION "201103230000Z"
+ DESCRIPTION
+ "Added Protection Counter"
+ REVISION "201004170000Z"
+ DESCRIPTION
+ "Add protection failure trap. Add recovery traps."
+ REVISION "200907150000Z"
+ DESCRIPTION
+ "Updates for 9.4 release"
+ REVISION "200903240000Z"
+ DESCRIPTION
+ "Initial"
+ ::= { switch 132 }
+
+prvtEpsMibNotifications OBJECT IDENTIFIER ::= { prvtEpsMib 0 }
+prvtEpsMibObjects OBJECT IDENTIFIER ::= { prvtEpsMib 1 }
+
+PrvtEpsRequestStateType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ ""
+ REFERENCE
+ "G.8031 clause 11.3"
+ SYNTAX INTEGER {
+ rsNone (-1),
+ rsNoRequest (0),
+ rsDoNotRevert (1),
+ rsReverseRequest (2),
+ rsExercise (4),
+ rsWaitToRestore (5),
+ rsClear (6),
+ rsManualSwitch (7),
+ rsSignalDegrade (9),
+ rsSignalFail (11),
+ rsForcedSwitch (13),
+ rsSignalFailForProtection (14),
+ rsLockoutOfProtection (15)
+ }
+
+PrvtEpsProtectionType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ ""
+ REFERENCE
+ "G.8031 clause 11.4"
+ SYNTAX INTEGER {
+ pt1Plus1 (0),
+ pt1To1 (1)
+ }
+
+PrvtEpsDirectionType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ ""
+ REFERENCE
+ "G.8031 clause 11.4"
+ SYNTAX INTEGER {
+ dtUnidirectional (0),
+ dtBidirectional (1)
+ }
+
+PrvtEpsActivePathType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ ""
+ REFERENCE
+ "G.8031 clause 11.6"
+ SYNTAX INTEGER {
+ working (0),
+ protection (1)
+ }
+
+PrvtEpsMonitoringType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ ""
+ SYNTAX INTEGER {
+ none (0),
+ cfmPM (1),
+ saa (2)
+ }
+
+PrvtEpsDefectFopType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ ""
+ REFERENCE
+ "G.8031 clause 11.15"
+ SYNTAX BITS {
+ fullyIncompatibleProvisioning (0),
+ protectionSwitchingIncomplete (1),
+ protectionConfigurationMismatch (2),
+ epsConfigurationMismatch (3)
+ }
+
+PrvtEpsPathStatusType ::= TEXTUAL-CONVENTION
+ STATUS current
+ DESCRIPTION
+ "Status of the primary or backup links"
+ SYNTAX INTEGER {
+ psOk (0),
+ psFailed (1)
+ }
+
+prvtEpsService OBJECT IDENTIFIER ::= { prvtEpsMibObjects 1 }
+
+prvtEpsServiceTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF PrvtEpsServiceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The table contains Ethernet Protection Switching services information."
+ ::= { prvtEpsService 1 }
+
+prvtEpsServiceEntry OBJECT-TYPE
+ SYNTAX PrvtEpsServiceEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "Ethernet Protection Switching information about a specific service."
+ INDEX { prvtEpsSvcId }
+ ::= { prvtEpsServiceTable 1 }
+
+PrvtEpsServiceEntry ::= SEQUENCE {
+ prvtEpsSvcId Unsigned32,
+ prvtEpsServiceCfmMdLevel Dot1agCfmMDLevelOrNone,
+ prvtEpsServicePrimaryLocalCfmMep Dot1agCfmMepIdOrZero,
+ prvtEpsServicePrimaryRemoteCfmMep Dot1agCfmMepIdOrZero,
+ prvtEpsServiceSecondaryLocalCfmMep Dot1agCfmMepIdOrZero,
+ prvtEpsServiceSecondaryRemoteCfmMep Dot1agCfmMepIdOrZero,
+ prvtEpsServiceLocalState PrvtEpsRequestStateType,
+ prvtEpsServiceHoldOffTimer Unsigned32,
+ prvtEpsServiceWaitToRestoreTimer Unsigned32,
+ prvtEpsServiceApsChannel TruthValue,
+ prvtEpsServiceProtection PrvtEpsProtectionType,
+ prvtEpsServiceDirection PrvtEpsDirectionType,
+ prvtEpsServiceRevertive TruthValue,
+ prvtEpsServiceActivePath PrvtEpsActivePathType,
+ prvtEpsServiceDegradeTestType PrvtEpsMonitoringType,
+ prvtEpsServiceDegradeTestOwner OCTET STRING,
+ prvtEpsServiceDegradeTestName OCTET STRING,
+ prvtEpsServiceDegradeTestEnable TruthValue,
+ prvtEpsServiceDefectFop PrvtEpsDefectFopType,
+ prvtEpsServiceOperationalStatus TruthValue,
+ prvtEpsServicePrimaryStatus PrvtEpsPathStatusType,
+ prvtEpsServiceSecondaryStatus PrvtEpsPathStatusType,
+ prvtEpsServiceRemoteState PrvtEpsRequestStateType,
+ prvtEpsServiceRemoteApsChannel TruthValue,
+ prvtEpsServiceRemoteProtection PrvtEpsProtectionType,
+ prvtEpsServiceRemoteDirection PrvtEpsDirectionType,
+ prvtEpsServiceRemoteRevertive TruthValue,
+ prvtEpsServiceAdminFreeze TruthValue,
+ prvtEpsServiceAdminStatus INTEGER,
+ prvtEpsServiceRowStatus RowStatus,
+ prvtEpsServiceProtectionCounter Unsigned32
+}
+
+prvtEpsSvcId OBJECT-TYPE
+ SYNTAX Unsigned32 (0..4294967295)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION "The service ID."
+ ::= { prvtEpsServiceEntry 1 }
+
+prvtEpsServiceCfmMdLevel OBJECT-TYPE
+ SYNTAX Dot1agCfmMDLevelOrNone
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Value of the CFM MD level where the protected domain is situated."
+ DEFVAL { -1 }
+ ::= { prvtEpsServiceEntry 2 }
+
+prvtEpsServicePrimaryLocalCfmMep OBJECT-TYPE
+ SYNTAX Dot1agCfmMepIdOrZero
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Primary local CFM MEP Id."
+ DEFVAL { 0 }
+ ::= { prvtEpsServiceEntry 3 }
+
+prvtEpsServicePrimaryRemoteCfmMep OBJECT-TYPE
+ SYNTAX Dot1agCfmMepIdOrZero
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Primary remote CFM MEP Id."
+ DEFVAL { 0 }
+ ::= { prvtEpsServiceEntry 4 }
+
+prvtEpsServiceSecondaryLocalCfmMep OBJECT-TYPE
+ SYNTAX Dot1agCfmMepIdOrZero
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Backup local CFM MEP Id."
+ DEFVAL { 0 }
+ ::= { prvtEpsServiceEntry 5 }
+
+prvtEpsServiceSecondaryRemoteCfmMep OBJECT-TYPE
+ SYNTAX Dot1agCfmMepIdOrZero
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Backup remote CFM MEP Id."
+ DEFVAL { 0 }
+ ::= { prvtEpsServiceEntry 6 }
+
+prvtEpsServiceLocalState OBJECT-TYPE
+ SYNTAX PrvtEpsRequestStateType
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Protection state of the local side. The values can be set:
+ rsManualSwitch(7), rsClear(6) or rsLockoutOfProtection(15).
+ The values can be get:
+ rsNoRequest (0),
+ rsDoNotRevert (1),
+ rsReverseRequest (2),
+ rsExercise (4),
+ rsWaitToRestore (5),
+ rsClear (6),
+ rsManualSwitch (7),
+ rsSignalDegrade (9),
+ rsSignalFail (11),
+ rsForcedSwitch (13),
+ rsSignalFailForProtection (14),
+ rsLockoutOfProtection (15)."
+ ::= { prvtEpsServiceEntry 7 }
+
+prvtEpsServiceHoldOffTimer OBJECT-TYPE
+ SYNTAX Unsigned32 (0..10000)
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Value of the Hold Off timer in msec (increments of 100msec)."
+ REFERENCE "G.8031 clause 11.12"
+ DEFVAL { 0 }
+ ::= { prvtEpsServiceEntry 8 }
+
+prvtEpsServiceWaitToRestoreTimer OBJECT-TYPE
+ SYNTAX Unsigned32 (0|5..12)
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Value of the Wait To Restore timer in seconds (0 to disable it)."
+ REFERENCE "G.8031 clause 11.13"
+ DEFVAL { 5 }
+ ::= { prvtEpsServiceEntry 9 }
+
+prvtEpsServiceApsChannel OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Active APS communication."
+ ::= { prvtEpsServiceEntry 10 }
+
+prvtEpsServiceProtection OBJECT-TYPE
+ SYNTAX PrvtEpsProtectionType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Type of protection (1+1 or 1:1)."
+ ::= { prvtEpsServiceEntry 11 }
+
+prvtEpsServiceDirection OBJECT-TYPE
+ SYNTAX PrvtEpsDirectionType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Type of protection (unidirectional or bidirectional)."
+ ::= { prvtEpsServiceEntry 12 }
+
+prvtEpsServiceRevertive OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Protection type (revertive or non-revertive)."
+ ::= { prvtEpsServiceEntry 13 }
+
+prvtEpsServiceActivePath OBJECT-TYPE
+ SYNTAX PrvtEpsActivePathType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Protected service active path."
+ DEFVAL { working }
+ ::= { prvtEpsServiceEntry 14 }
+
+prvtEpsServiceDegradeTestType OBJECT-TYPE
+ SYNTAX PrvtEpsMonitoringType
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Type of test used for monitoring signal degrade situations."
+ DEFVAL { 0 }
+ ::= { prvtEpsServiceEntry 15 }
+
+prvtEpsServiceDegradeTestOwner OBJECT-TYPE
+ SYNTAX OCTET STRING (SIZE(0..32))
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Owner of the SAA test used for monitoring."
+ DEFVAL { '00'H }
+ ::= { prvtEpsServiceEntry 16 }
+
+prvtEpsServiceDegradeTestName OBJECT-TYPE
+ SYNTAX OCTET STRING (SIZE(0..32))
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Name of the CFM or SAA test used for monitoring."
+ DEFVAL { '00'H }
+ ::= { prvtEpsServiceEntry 17 }
+
+prvtEpsServiceDegradeTestEnable OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Start/stop CFM or SAA test for performance monitoring."
+ DEFVAL { false }
+ ::= { prvtEpsServiceEntry 18 }
+
+prvtEpsServiceDefectFop OBJECT-TYPE
+ SYNTAX PrvtEpsDefectFopType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Defects noticed by APS protocol could be either none or a composition of the bits (0-3):
+ fullyIncompatibleProvisioning(0) - occures by the reception of three APS frames with the
+ incompatible 'B' bit value during the period of 22.5 seconds;
+ protectionSwitchingIncomplete(1) - occures if the transmitted 'Requested Signal' and the
+ received 'Bridged Signal' do not match for a period of 50ms or longer;
+ protectionConfigurationMismatch(2) - working/protection configuration mismatch, occures by
+ the reception of three APS frames from the working transport entity during the period of
+ 22.5 seconds;
+ epsConfigurationMismatch(3) - provisioning mismatch - for example the local side is
+ set in revertive mode, the remote side is set in non revertive mode."
+ ::= { prvtEpsServiceEntry 19 }
+
+prvtEpsServiceOperationalStatus OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The purpose of this status is to identify to the User whether
+ this service is ready for running. The operational status can
+ be up or down. When creating the service the operational
+ status will be down. Receiving CCMs from both transport
+ entities and establishment of APS on the protection transport
+ entity will bring the operational status to up."
+ ::= { prvtEpsServiceEntry 20 }
+
+prvtEpsServicePrimaryStatus OBJECT-TYPE
+ SYNTAX PrvtEpsPathStatusType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Primary path state (psOk(0) or psFailed(1))."
+ ::= { prvtEpsServiceEntry 21 }
+
+prvtEpsServiceSecondaryStatus OBJECT-TYPE
+ SYNTAX PrvtEpsPathStatusType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Secondary path state (psOk(0) or psFailed(1))."
+ ::= { prvtEpsServiceEntry 22 }
+
+prvtEpsServiceRemoteState OBJECT-TYPE
+ SYNTAX PrvtEpsRequestStateType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Protection state of the remote side.
+ The values can be get:
+ rsNoRequest (0),
+ rsDoNotRevert (1),
+ rsReverseRequest (2),
+ rsExercise (4),
+ rsWaitToRestore (5),
+ rsClear (6),
+ rsManualSwitch (7),
+ rsSignalDegrade (9),
+ rsSignalFail (11),
+ rsForcedSwitch (13),
+ rsSignalFailForProtection (14),
+ rsLockoutOfProtection (15)."
+ ::= { prvtEpsServiceEntry 23 }
+
+prvtEpsServiceRemoteApsChannel OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Active APS communication reported by the remote."
+ ::= { prvtEpsServiceEntry 24 }
+
+prvtEpsServiceRemoteProtection OBJECT-TYPE
+ SYNTAX PrvtEpsProtectionType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Type of protection (1+1 or 1:1) reported by the remote."
+ ::= { prvtEpsServiceEntry 25 }
+
+prvtEpsServiceRemoteDirection OBJECT-TYPE
+ SYNTAX PrvtEpsDirectionType
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Type of protection (unidirectional or bidirectional) reported by the remote."
+ ::= { prvtEpsServiceEntry 26 }
+
+prvtEpsServiceRemoteRevertive OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "Protection type (revertive or non-revertive) reported by the remote."
+ ::= { prvtEpsServiceEntry 27 }
+
+
+prvtEpsServiceAdminFreeze OBJECT-TYPE
+ SYNTAX TruthValue
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Used to freeze the state of the protection service."
+ DEFVAL { false }
+ ::= { prvtEpsServiceEntry 28 }
+
+
+prvtEpsServiceAdminStatus OBJECT-TYPE
+ SYNTAX INTEGER {
+ up ( 1 ),
+ down ( 2 )
+ }
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "Administrative status of the protection."
+ DEFVAL { 2 }
+ ::= { prvtEpsServiceEntry 29 }
+
+prvtEpsServiceRowStatus OBJECT-TYPE
+ SYNTAX RowStatus
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The status of the row.
+ The writable columns in a row can not be changed if the row
+ is active. All columns must have a valid value before a row
+ can be activated."
+ ::= { prvtEpsServiceEntry 30 }
+
+prvtEpsServiceProtectionCounter OBJECT-TYPE
+SYNTAX Unsigned32
+MAX-ACCESS read-only
+STATUS current
+DESCRIPTION
+"Counts how many times the service has gone to Protection."
+::= { prvtEpsServiceEntry 31 }
+
+
+
+
+prvtEpsDefectAlarm NOTIFICATION-TYPE
+ OBJECTS { prvtEpsServiceOperationalStatus,
+ prvtEpsServiceDefectFop
+ }
+ STATUS current
+ DESCRIPTION
+ "1. EPS service is either operational or not operational;
+ 2. Failure of protocol defects."
+ ::= { prvtEpsMibNotifications 1 }
+
+prvtEpsSwitchoverAlarm NOTIFICATION-TYPE
+ OBJECTS { prvtEpsServiceActivePath
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued if the active link is changed,
+ pointing to the path where the switchover occured."
+ ::= { prvtEpsMibNotifications 2 }
+
+
+prvtEpsLostCommunication NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of non reception of APS frames
+ in three consecutive intervals each representing 5 seconds."
+ ::= { prvtEpsMibNotifications 3 }
+
+prvtEpsRestoredCommunication NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "APS frames are received normally after APS communication failure."
+ ::= { prvtEpsMibNotifications 4 }
+
+
+prvtEpsSignalFailDetected NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of CCMs are not received
+ and (3.5 * CCMtime(CCMinterval)) has expired."
+ ::= { prvtEpsMibNotifications 5 }
+
+prvtEpsSignalDegradeDetected NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of monitored error threshold is crossed:
+ 1W Jitter error,
+ 2W Jitter error,
+ Latency error,
+ Frame loss error."
+ ::= { prvtEpsMibNotifications 6 }
+
+prvtEpsProtctSignalFailDetected NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of CCMs are not received on the protected link
+ and (3.5 * CCMtime(CCMinterval)) has expired or the protected link is down."
+ ::= { prvtEpsMibNotifications 7 }
+
+prvtEpsSignalFailRecovery NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of CCMs start to be received
+ correctly again after a prvtEpsSignalFailDetected alarm occured
+ and (3.5 * CCMtime(CCMinterval)) timer no longer expires or the link is up ."
+ ::= { prvtEpsMibNotifications 8 }
+
+prvtEpsSignalDegradeRecovery NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of monitored error threshold is crossed bellow limis:
+ 1W Jitter error,
+ 2W Jitter error,
+ Latency error,
+ Frame loss error."
+ ::= { prvtEpsMibNotifications 9 }
+
+prvtEpsProtctSignalFailRecovery NOTIFICATION-TYPE
+ OBJECTS { prvtEpsSvcId
+ }
+ STATUS current
+ DESCRIPTION
+ "The alarm is issued in case of CCMs start to be received correctly again
+ on the protected link after a prvtEpsProtctSignalFailDetected alarm occured
+ and (3.5 * CCMtime(CCMinterval)) timer no longer expires or the link is up ."
+ ::= { prvtEpsMibNotifications 10 }
+
+END \ No newline at end of file