This release note and the software that accompanies it are copyright (c) 2013, Intel Corporation or its suppliers, and may only be installed and used in accordance with the license that accompanies the software.

This Software is furnished under license and may only be used or copied in accordance with the terms of that license. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted by this document. The Software is subject to change without notice, and should not be construed as a commitment by Intel Corporation or its suppliers to market, license, sell or support any product or technology. Unless otherwise provided for in the license under which this Software is provided, the Software is provided AS IS, with no warranties of any kind, express or implied. Except as expressly permitted by the Software license, neither Intel Corporation nor its suppliers assumes any responsibility or liability for any errors or inaccuracies that may appear herein. Except as expressly permitted by the Software license, no part of the Software may be reproduced, stored in a retrieval system, transmitted in any form, or distributed by any means without the express written consent of Intel Corporation.


==========================
Supported RAID Controllers
==========================
This download supports Intel(R) RAID controllers using SAS software stack  (RCS25ZB040, RCS25ZB040LX, RS25AB080, RS25SB008, RMS2PB080, RMS25PB040, RMT3PB080, RMS25CB080, RMS25CB080N,MS25PB080N, RMS25CB040, RMT3CB080, RS25NB008, RS25DB080, RS2VB080, RS2VB040, RT3WB080, RS2WC040, RS2WC080, RS2SG240, RS2WG160, RMS2MH080, RMS2AF080, RMS2AF040, RS2MB044, RS2BL080, RS2BL080DE, RS2BL040, RS2PI008DE, RS2PI008, SRCSASBB8I, SRCSASLS4I, SRCSASJV, SRCSASRB, SRCSATAWB, SROMBSASFC, SROMBSASMP2, SROMBSASMR, SRCSASPH16I, SRCSAS18E, SRCSAS144E, SROMBSAS18E), please verify that this utility has been tested with the RAID card you have chosen to use by checking the drivers web page for your controller at http://support.intel.com.


===================
Package Information
===================
Version = 8.07.07
OS supported = DOS, FreeBSD, Linux, Solaris, Windows


==================
Known Restrictions
==================
N/A


=======================
Contents on the package
=======================
The following files are included in this zip:

Name						Description
ir3_CmdTool2_v8.07.07_rel-notes.txt		This file
License_v2.pdf					License Agreement
DOS\CmdTool2.exe				DOS Utility
DOS\LICENSE_DOS32A				DOS32A License Agreement
FreeBSD\CmdTool2				FreeBSD 32bit Utility
FreeBSD\CmdTool2_64				FreeBSD 64bit Utility
Linux\CmdTool2-8.07.07-1.noarch.rpm		Linux Installation package
Solaris\CmdTool2				Solaris utility
Solaris\CmdTool2.pkg				Solaris Installation package
Windows\CmdTool2.exe				Windows 32bit utility
windows\CmdTool2_64.exe				Windows 64bit utility


==========================
Installation instructions:
==========================

DOS
==========
This utility is a DOS Based command line utility that can be used to query the controller and attached devices for status, Update Firmware, and create/manage logical drive configuration.
Extract DOS folder contents to a user specified location such as = a:\


FreeBSD
==========
This utility is a FreeBSD Based command line utility that can be used to query the controller and attached devices for status, Update Firmware, and create/manage logical drive configuration.
Extract the FreeBSD folder contents to a user specified location


Linux
==========
This utility is a Linux Based command line utility that can be used to query the controller and attached devices for status, Update Firmware, and create/manage logical drive configuration.
Extract Linux folder contents to a user specified location and run the rpm.

The CmdTool2 application depends on few standard libraries. 
Please ensure that these libraries are present in the system before installing CmdTool2 rpm. 
CmdTool2 will not function without these libraries.

1) unzip the CmdTool2 package.
2) To install the Lib_Utils RPM, run the command "rpm -ivh <Lib_Utils-1.xx-xx.noarch.rpm>"
3) To install the CmdTool2 RPM, run the comand "rpm -ivh <CmdTool2-x.xx-x.noarch.rpm>"
4) To upgrade the CmdTool2 RPM, run the comand "rpm -Uvh <CmdTool2-x.xx-x.noarch.rpm>"

Installation of CmdTool2 on Ubuntu (conversion of RPM to debian package)
------------------------------------------------------------------------
1) alien -k CmdTool2-x.xx-x.noarch.rpm
   This command generates debian package <cmdtool2_x.xx.xx-x_all.deb>

2) dpkg -i cmdtool2_x.xx.xx-x_all.deb
   This command installs CmdTool2 Debian package at /opt/MegaRAID/CmdTool2 directory.

Notes:
1. If older version of the libutil (i.e. <Lib_Utils-1.xx-xx.noarch.rpm>) is installed on the system, 
    please uninstall the older version of the RPM using the command "rpm -e <Lib_Utils-1.xx-xx>"
    and then install the latest libutil rpm <Lib_Utils-1.xx-xx.noarch.rpm> or <Lib_Utils-1.xx-xx> packaged in this zip file.

2. If older version of the libutil rpm <Lib_Utils-1.xx-xx.noarch.rpm> is installed on the system, 
    To perform upgrade from previous version to latest version run the command 
    "rpm -Uvh --nopostun <Lib_Utils-1.xx-xx.rpm> ". 
	
Example: 
   If "Lib_Utils-1.00-06.noarch.rpm" is installed on the target system to to perform upgrade to latest RPM
   "Lib_Utils-1.00-07.noarch.rpm" run the command  "rpm -Uvh --nopostun Lib_Utils-1.00-07.noarch.rpm".

4. On RHEL-3 (X64) and SLES-9 (X64), CmdTool2 requires libstdc++.so.6. It is assumed that these standard libraries are present in the system.

5. On RHEL-6 (x64), CmdTool2 requires ncurses-libs-5.7-3.20090208.el6.i686. It is assumed that these standard libraries are present in the system..


Solaris
==========
This utility is a Solaris Based command line utility that can be used to query the controller and attached devices for status, Update Firmware, and create/manage logical drive configuration.
Extract Solaris folder contents to a user specified location and install the utility pkg.


Windows
==========
This utility is a Windows Based command line utility that can be used to query the controller and attached devices for status, Update Firmware, and create/manage logical drive configuration.
Extract Windows folder contents to a user specified location such as = a:\



Supported options in CmdTool2
=============================
The utility supports many command line options, which can be seen by running help from the command line:

CmdTool2 -help or CmdTool2 -h or CmdTool2 -? 

Supported options:
CmdTool2 -v 
CmdTool2 -help|-h|-?
CmdTool2 -adpCount 
CmdTool2 -AdpSetProp {CacheFlushInterval -val}|{ RebuildRate -val} 
    |{PatrolReadRate -val}|{BgiRate -val}|{CCRate -val} 
    |{ReconRate -val}|{SpinupDriveCount -val}|{SpinupDelay -val} 
    |{CoercionMode -val}|{ClusterEnable -val}|{PredFailPollInterval -val} 
    |{BatWarnDsbl -val} |{EccBucketSize -val} | {EccBucketLeakRate -val} 
    |{AbortCCOnError -val} | AlarmEnbl | AlarmDsbl | AlarmSilence 
    |{SMARTCpyBkEnbl -val} | NCQEnbl | NCQDsbl -aN|-a0,1,2|-aALL 
    |{SSDSMARTCpyBkEnbl -val} -aN|-a0,1,2|-aALL 
    |{MaintainPdFailHistoryEnbl -val} -aN|-a0,1,2|-aALL 
    |{EnblSpinDownUnConfigDrvs -val} -aN|-a0,1,2|-aALL 
    |{EnblSSDPatrolRead -val} -aN|-a0,1,2|-aALL 
    | AutoEnhancedImportEnbl | AutoEnhancedImportDsbl -aN|-a0,1,2|-aALL 
CmdTool2 -AdpSetProp -AutoDetectBackPlaneDsbl -val -aN|-a0,1,2|-aALL 
       val - 0=Enable Auto Detect of SGPIO and i2c SEP. 
             1=Disable Auto Detect of SGPIO. 
             2=Disable Auto Detect of i2c SEP. 
             3=Disable Auto Detect of SGPIO and i2c SEP. 
CmdTool2 -AdpSetProp -CopyBackDsbl -val -aN|-a0,1,2|-aALL 
       val - 0=Enable Copyback. 
             1=Disable Copyback. 
CmdTool2 -AdpSetProp -LoadBalanceMode -val -aN|-a0,1,2|-aALL 
       val - 0=Auto Load balance mode. 
             1=Disable Load balance mode. 
CmdTool2 -AdpSetProp -UseFDEOnlyEncrypt -val -aN|-a0,1,2|-aALL 
       val - 0=FDE and controller encryption (if HW supports) is allowed. 
             1=Only support FDE encryption, disallow controller encryption. 
CmdTool2 -AdpSetProp -PrCorrectUncfgdAreas -val -aN|-a0,1,2|-aALL 
       val - 0= Correcting Media error during PR is disabled. 
             1=Correcting Media error during PR is allowed. 
CmdTool2 -AdpGetProp CacheFlushInterval | RebuildRate | PatrolReadRate | BgiRate 
    | CCRate | ReconRate | SpinupDriveCount | SpinupDelay | CoercionMode
    | PredFailPollInterval | EccBucketSize | EccBucketLeakRate | EccBucketCount
    | ClusterEnable | BatWarnDsbl | AbortCCOnError | AlarmDsply 
    | AutoDetectBackPlaneDsbl| CopyBackDsbl | LoadBalanceMode | SMARTCpyBkEnbl | SSDSMARTCpyBkEnbl | MaintainPdFailHistoryEnbl | EnblSpinDownUnConfigDrvs 
    | EnblSSDPatrolRead 
    | NCQDsply -aN|-a0,1,2|-aALL 
    | UseFDEOnlyEncrypt | WBSupport  -aN|-a0,1,2|-aALL 
    | AutoEnhancedImportDsply -aN|-a0,1,2|-aALL 
    | PrCorrectUncfgdAreas -aN|-a0,1,2|-aALL 
CmdTool2 -AdpAllInfo -aN|-a0,1,2|-aALL  
CmdTool2 -AdpGetTime -aN|-a0,1,2|-aALL  
CmdTool2 -AdpSetTime yyyymmdd hh:mm:ss -aN   
CmdTool2 -AdpSetVerify -f fileName -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBIOS -Enbl |-Dsbl | -SOE | -BE | -Dsply -aN|-a0,1,2|-aALL 
CmdTool2 -AdpBootDrive {-Set {-Lx | -physdrv[E0:S0]}}|-Get -aN|-a0,1,2|-aALL 
CmdTool2 -AdpAutoRbld -Enbl|-Dsbl|-Dsply -aN|-a0,1,2|-aALL
CmdTool2 -AdpCacheFlush -aN|-a0,1,2|-aALL
CmdTool2 -AdpPR -Dsbl|EnblAuto|EnblMan|Start|Stop|Info| SSDPatrolReadEnbl | SSDPatrolReadDsbl
         |{SetDelay Val}|{-SetStartTime yyyymmdd hh}|{maxConcurrentPD Val} -aN|-a0,1,2|-aALL
CmdTool2 -AdpCcSched -Dsbl|-Info|{-ModeConc | -ModeSeq [-ExcludeLD -LN|-L0,1,2]
   [-SetStartTime yyyymmdd hh ] [-SetDelay val ] } -aN|-a0,1,2|-aALL
CmdTool2 -AdpCcSched -SetStartTime yyyymmdd hh -aN|-a0,1,2|-aALL
CmdTool2 -AdpCcSched -SetDelay val  -aN|-a0,1,2|-aALL
CmdTool2 -FwTermLog -BBUoff|BBUoffTemp|BBUon|BBUGet|Dsply|Clear -aN|-a0,1,2|-aALL
CmdTool2 -AdpAlILog -aN|-a0,1,2|-aALL 
CmdTool2 -AdpDiag [val] -aN|-a0,1,2|-aALL
          val - Time in second.
CmdTool2 -AdpShutDown -aN|-a0,1,2|-aALL
CmdTool2 -PDList -aN|-a0,1,2|-aALL 
CmdTool2 -PDGetNum -aN|-a0,1,2|-aALL 
CmdTool2 -pdInfo -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL  
CmdTool2 -PDOnline  -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL 
CmdTool2 -PDOffline -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL 
CmdTool2 -PDMakeGood -PhysDrv[E0:S0,E1:S1,...] | [-Force] -aN|-a0,1,2|-aALL 
CmdTool2 -PDMakeSystem -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL 
CmdTool2 -PDHSP {-Set [-Dedicated [-ArrayN|-Array0,1,2...]] [-EnclAffinity] [-nonRevertible]} 
     |-Rmv -PhysDrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL 
CmdTool2 -PDRbld -Start|-Stop|-ShowProg |-ProgDsply 
        -PhysDrv [E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL  
CmdTool2 -PDClear -Start|-Stop|-ShowProg |-ProgDsply 
        -PhysDrv [E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL  
CmdTool2 -PdLocate {[-start] | -stop} -physdrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL 
CmdTool2 -PdMarkMissing -physdrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL 
CmdTool2 -PdGetMissing -aN|-a0,1,2|-aALL 
CmdTool2 -PdReplaceMissing -physdrv[E0:S0] -arrayA, -rowB -aN 
CmdTool2 -PdPrpRmv [-UnDo] -physdrv[E0:S0] -aN|-a0,1,2|-aALL  
CmdTool2 -EncInfo -aN|-a0,1,2|-aALL 
CmdTool2 -PhyInfo -phyM -aN|-a0,1,2|-aALL  
CmdTool2 -PdFwDownload [-SataBridge] -PhysDrv[0:1,1:2,..]-f <filename> -aN|-a0,1,2|-aALL  
CmdTool2 -LDInfo -Lx|-L0,1,2|-Lall -aN|-a0,1,2|-aALL 
CmdTool2 -LDSetProp  {-Name LdNamestring} | -RW|RO|Blocked | WT|WB [-Immediate] |RA|NORA|ADRA 
        | Cached|Direct | -EnDskCache|DisDskCache | CachedBadBBU|NoCachedBadBBU
        -Lx|-L0,1,2|-Lall -aN|-a0,1,2|-aALL 
CmdTool2 -LDGetProp  -Cache | -Access | -Name | -DskCache -Lx|-L0,1,2|-LALL  
        -aN|-a0,1,2|-aALL 
CmdTool2 -LDInit {-Start [-full]}|-Abort|-ShowProg|-ProgDsply -Lx|-L0,1,2|-LALL -aN|-a0,1,2|-aALL 
CmdTool2 -LDCC {-Start [-force]}|-Abort|-ShowProg|-ProgDsply -Lx|-L0,1,2|-LALL -aN|-a0,1,2|-aALL 
CmdTool2 -LDBI -Enbl|-Dsbl|-getSetting|-Abort|-ShowProg|-ProgDsply -Lx|-L0,1,2|-LALL -aN|-a0,1,2|-aALL  
CmdTool2 -LDRecon {-Start -rX [{-Add | -Rmv} -Physdrv[E0:S0,...]]}|-ShowProg|-ProgDsply 
        -Lx -aN 
CmdTool2 -LdPdInfo -aN|-a0,1,2|-aALL 
CmdTool2 -LDGetNum -aN|-a0,1,2|-aALL 
CmdTool2 -LDBBMClr -Lx|-L0,1,2,...|-Lall -aN|-a0,1,2|-aALL 
CmdTool2 -CfgLdAdd -rX[E0:S0,E1:S1,...] [WT|WB] [NORA|RA|ADRA] [Direct|Cached]
        [CachedBadBBU | NoCachedBadBBU][-szXXX [-szYYY ...]]
        [-strpszM] [-Hsp[E0:S0,...]] [-AfterLdX] [-Force]|[FDE|CtrlBased] -aN 
CmdTool2 -CfgEachDskRaid0 [WT|WB] [NORA|RA|ADRA] [Direct|Cached] 
        [CachedBadBBU|NoCachedBadBBU] [-strpszM]|[FDE|CtrlBased] -aN|-a0,1,2|-aALL
CmdTool2 -CfgClr -aN|-a0,1,2|-aALL 
CmdTool2 -CfgDsply -aN|-a0,1,2|-aALL 
CmdTool2 -CfgLdDel -LX|-L0,2,5...|-LALL -aN|-a0,1,2|-aALL 
CmdTool2 -CfgFreeSpaceinfo -aN|-a0,1,2|-aALL 
CmdTool2 -CfgSpanAdd -r10 -Array0[E0:S0,E1:S1] -Array1[E0:S0,E1:S1] [-ArrayX[E0:S0,E1:S1] ...] 
        [WT|WB] [NORA|RA|ADRA] [Direct|Cached] [CachedBadBBU|NoCachedBadBBU]
        [-szXXX[-szYYY ...]][-strpszM][-AfterLdX]|[FDE|CtrlBased] -aN
CmdTool2 -CfgSpanAdd -r50 -Array0[E0:S0,E1:S1,E2:S2,...] -Array1[E0:S0,E1:S1,E2:S2,...] 
        [-ArrayX[E0:S0,E1:S1,E2:S2,...] ...] [WT|WB] [NORA|RA|ADRA] [Direct|Cached] 
        [CachedBadBBU|NoCachedBadBBU][-szXXX[-szYYY ...]][-strpszM][-AfterLdX] | 
        [FDE|CtrlBased] -aN
CmdTool2 -CfgAllFreeDrv -rX [-SATAOnly] [-SpanCount XXX] [WT|WB] [NORA|RA|ADRA] 
        [Direct|Cached] [CachedBadBBU|NoCachedBadBBU] [-strpszM]
        [-HspCount XX [-HspType -Dedicated|-EnclAffinity|-nonRevertible]] 
        [FDE|CtrlBased] -aN 
CmdTool2 -CfgSave -f filename -aN   
CmdTool2 -CfgRestore -f filename -aN   
CmdTool2 -CfgForeign -Scan | [-SecurityKey sssssssssss] -aN|-a0,1,2|-aALL    
CmdTool2 -CfgForeign -Dsply [x] | [-SecurityKey sssssssssss] -aN|-a0,1,2|-aALL    
CmdTool2 -CfgForeign -Preview [x] | [-SecurityKey sssssssssss] -aN|-a0,1,2|-aALL    
CmdTool2 -CfgForeign -Import [x] | [-SecurityKey sssssssssss] -aN|-a0,1,2|-aALL    
CmdTool2 -CfgForeign -Clear [x]|[-SecurityKey sssssssssss] -aN|-a0,1,2|-aALL    
        x - index of foreign configurations. Optional. All by default. 
CmdTool2 -AdpEventLog -GetEventLogInfo -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -GetEvents {-info -warning -critical -fatal} {-f <fileName>} -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -GetSinceShutdown {-info -warning -critical -fatal} {-f <fileName>} -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -GetSinceReboot {-info -warning -critical -fatal} {-f <fileName>} -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -IncludeDeleted {-info -warning -critical -fatal} {-f <fileName>} -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -GetLatest n {-info -warning -critical -fatal} {-f <fileName>} -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -GetCCIncon -f <fileName> -LX|-L0,2,5...|-LALL -aN|-a0,1,2|-aALL 
CmdTool2 -AdpEventLog -Clear -aN|-a0,1,2|-aALL 
CmdTool2 -AdpBbuCmd -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -GetBbuStatus -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -GetBbuCapacityInfo -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -GetBbuDesignInfo -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -GetBbuProperties -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -BbuLearn -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -BbuMfgSleep -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -BbuMfgSeal -aN|-a0,1,2|-aALL  
CmdTool2 -AdpBbuCmd -SetBbuProperties -f <fileName> -aN|-a0,1,2|-aALL 
CmdTool2 -AdpFacDefSet -aN 
CmdTool2 -AdpFwFlash -f filename [-NoSigChk] [-NoVerChk] -aN|-a0,1,2|-aALL  
CmdTool2 -AdpGetConnectorMode -ConnectorN|-Connector0,1|-ConnectorAll -aN|-a0,1,2|-aALL  
CmdTool2 -AdpSetConnectorMode -Internal|-External|-Auto -ConnectorN|-Connector0,1|-ConnectorAll -aN|-a0,1,2|-aALL  
CmdTool2 -PhyErrorCounters -aN|-a0,1,2|-aALL  
CmdTool2 -DirectPdMapping -Enbl|-Dsbl|-Dsply -aN|-a0,1,2|-aALL  
CmdTool2 -PDCpyBk -Start -PhysDrv[E0:S0,E1:S1] -aN|-a0,1,2|-aALL 
CmdTool2 -PDCpyBk -Stop|-ShowProg|-ProgDsply -PhysDrv[E0:S0] -aN|-a0,1,2|-aALL 
CmdTool2 -PDInstantSecureErase -PhysDrv[E0:S0,E1:S1,...] | [-Force] -aN|-a0,1,2|-aALL 
CmdTool2 -LDMakeSecure -Lx|-L0,1,2,...|-Lall -aN|-a0,1,2|-aALL 
CmdTool2 -DestroySecurityKey | [-Force] -aN 
CmdTool2 -CreateSecurityKey -SecurityKey sssssssssss | [-Passphrase sssssssssss] |[-KeyID kkkkkkkkkkk] -aN 
CmdTool2 -ChangeSecurityKey -OldSecurityKey sssssssssss | -SecurityKey sssssssssss| 
          [-Passphrase sssssssssss] | [-KeyID kkkkkkkkkkk] -aN
CmdTool2 -GetKeyID [-PhysDrv[E0:S0]] -aN 
CmdTool2 -SetKeyID -KeyID kkkkkkkkkkk -aN 
CmdTool2 -VerifySecurityKey -SecurityKey sssssssssss -aN 
CmdTool2 -GetPreservedCacheList -aN|-a0,1,2|-aALL 
CmdTool2 -DiscardPreservedCache -Lx|-L0,1,2|-Lall -aN|-a0,1,2|-aALL 

       sssssssssss  - It must be between eight and thirty-two 
                      characters and contain at least one number, 
                      one lowercase letter, one uppercase 
                      letter and one non-alphanumeric character.
       kkkkkkkkkkk -  Must be less than 256 characters. 

    Note: The directly connected drives can be specified as [:S] 

    Wildcard '?' can be used to specify the enclosure ID for the drive in the 
      only enclosure without direct connected device or the direct connected 
      drives with no enclosure in the system.

      Note:[-aALL] option assumes that the parameters specified are valid 
       for all the Adapters. 

    The following options may be given at the end of any command above: 

    [-Silent] [-AppLogFile filename] [-NoLog] [-page[N]] 
                 [-] is optional. 
                  N - Number of lines per page. 

=============
Fixes/Updates
=============
Version 8.07.07
- libsysfs custom implementation issue.
- While the BBU is fully charged, megacli adpbbucmd reports that it is both discharging and not discharging
- MegaCli and StorCli can not manage both Liberator (and prior) and TB controllers in the same system under FreeBSD with the mf
- Catera- MegaCli 32 Crashes in Windows
- Segmentation Fault while running discard preserved cache in megacli

Version 8.07.06
- CLI Crashes When Running ADP FW Flash Command
- No controller properties for Online FW Update

*Third-party trademarks are the property of their respective owners.
