1.1 --- a/epoc32/include/smutset.inl Wed Mar 31 12:27:01 2010 +0100
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,607 +0,0 @@
1.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 -// All rights reserved.
1.6 -// This component and the accompanying materials are made available
1.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
1.8 -// which accompanies this distribution, and is available
1.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.10 -//
1.11 -// Initial Contributors:
1.12 -// Nokia Corporation - initial contribution.
1.13 -//
1.14 -// Contributors:
1.15 -//
1.16 -// Description:
1.17 -//
1.18 -
1.19 -#include <smcmmain.h>
1.20 -#include <smut.h>
1.21 -
1.22 -/**
1.23 -Constructor.
1.24 -
1.25 -@param aType
1.26 -The type of operation for which progress information is being given.
1.27 -*/
1.28 -inline TSmsProgress::TSmsProgress(TSmsProgressType aType)
1.29 -: iError(KErrNone),
1.30 - iType(aType),
1.31 - iState(0),
1.32 - iRcpDone(0),
1.33 - iRcpCount(0),
1.34 - iMsgDone(0),
1.35 - iMsgCount(0),
1.36 - iEnumerateFolder(0)
1.37 - {
1.38 - iServiceCenterAddress.Zero();
1.39 - }
1.40 -
1.41 -/**
1.42 -Gets the validity period for messages sent by the SMS MTM.
1.43 -
1.44 -If the service centre is unable to deliver the SMS message before this time
1.45 -expires, a failure report may be generated by the service centre, and no further
1.46 -attempts will be made to deliver the message to ther recipient.
1.47 -
1.48 -Validity period is only used for SMS-SUBMIT, mobile originated messages.
1.49 -
1.50 -@return
1.51 -The validity period of the message.
1.52 -*/
1.53 -inline const TTimeIntervalMinutes& CSmsMessageSettings::ValidityPeriod() const
1.54 - {
1.55 - return iValidityPeriod;
1.56 - }
1.57 -
1.58 -/**
1.59 -Sets the validity period for messages sent by the SMS MTM.
1.60 -
1.61 -@param aValidityPeriod
1.62 -The validity period.
1.63 -
1.64 -@panic SMCM 8
1.65 -The validity period is negative or greater than the maximum validity period
1.66 -(debug only).
1.67 -*/
1.68 -inline void CSmsMessageSettings::SetValidityPeriod(TTimeIntervalMinutes aValidityPeriod)
1.69 - {
1.70 - __ASSERT_DEBUG(aValidityPeriod.Int()>=0 && aValidityPeriod.Int()<=ESmsVPMaximum,Panic(ESmscVPOutOfRange));
1.71 - iValidityPeriod=aValidityPeriod;
1.72 - }
1.73 -
1.74 -/**
1.75 -Gets the values of the UI concatenated-SMS-allowed flag.
1.76 -
1.77 -If true, the UI should pass a long message in one piece to the MTM. If false,
1.78 -it should split the message manually into 140 byte parts. The value of this
1.79 -flag does not affect the behaviour of the SMS MTM.
1.80 -
1.81 -@return
1.82 -The concatenated-SMS-allowed flag.
1.83 -*/
1.84 -inline TBool CSmsMessageSettings::CanConcatenate() const
1.85 - {
1.86 - return iMsgFlags&ESmsSettingsCanConcatenate;
1.87 - }
1.88 -
1.89 -/**
1.90 -Sets the values of the UI concatenated-SMS-allowed flag.
1.91 -
1.92 -If true, the UI should pass a long message in one piece to the MTM. If false,
1.93 -it should split the message manually into 140 byte parts. The value of this
1.94 -flag does not affect the behaviour of the SMS MTM.
1.95 -
1.96 -@param aCanConcatenate
1.97 -The value to set the concatenated-SMS-allowed flag to.
1.98 -*/
1.99 -inline void CSmsMessageSettings::SetCanConcatenate(TBool aCanConcatenate)
1.100 - {
1.101 - iMsgFlags = (iMsgFlags & ~ESmsSettingsCanConcatenate) | (aCanConcatenate?ESmsSettingsCanConcatenate : ESmsSettingsNoFlags);
1.102 - }
1.103 -
1.104 -/**
1.105 -Gets the value of the reject-duplicate setting.
1.106 -
1.107 -If this is true, the service instructs the SC to reject an Sms-Submit for an
1.108 -SMS still held in the SC that has the same message reference number and same
1.109 -destination address as an previously submitted SMS from the same originating
1.110 -address.
1.111 -
1.112 -@return
1.113 -The value of the reject-duplicate setting.
1.114 -*/
1.115 -inline TBool CSmsMessageSettings::RejectDuplicate() const
1.116 - {
1.117 - return iMsgFlags&ESmsSettingsRejectDuplicate;
1.118 - }
1.119 -
1.120 -/**
1.121 -Sets the value of the reject-duplicate setting.
1.122 -
1.123 -@param aRejectDuplicate
1.124 -The value to set the reject-duplicate setting to.
1.125 -*/
1.126 -inline void CSmsMessageSettings::SetRejectDuplicate(TBool aRejectDuplicate)
1.127 - {
1.128 - iMsgFlags = (iMsgFlags & ~ESmsSettingsRejectDuplicate) | (aRejectDuplicate?ESmsSettingsRejectDuplicate : ESmsSettingsNoFlags);
1.129 - }
1.130 -
1.131 -/**
1.132 -Tests if a status report (TP-SRR in GSM spec 03.40) will be requested from
1.133 -the Service Centre.
1.134 -
1.135 -A value of ETrue indicates that a status report will be requested.
1.136 -
1.137 -@return
1.138 -The value of the Status report flag.
1.139 -*/
1.140 -inline TBool CSmsMessageSettings::DeliveryReport() const
1.141 - {
1.142 - return iMsgFlags&ESmsSettingsDeliveryReport;
1.143 - }
1.144 -
1.145 -/**
1.146 -Sets if a status report (TP-SRR in GSM spec 03.40) will be requested from the
1.147 -Service Centre.
1.148 -
1.149 -A value of ETrue indicates that a status report will be requested.
1.150 -
1.151 -@param aDeliveryReport
1.152 -The value of the status report flag.
1.153 -*/
1.154 -inline void CSmsMessageSettings::SetDeliveryReport(TBool aDeliveryReport)
1.155 - {
1.156 - iMsgFlags = (iMsgFlags & ~ESmsSettingsDeliveryReport) | (aDeliveryReport?ESmsSettingsDeliveryReport : ESmsSettingsNoFlags);
1.157 - }
1.158 -
1.159 -/**
1.160 -Gets the boolean flag that indicates whether a the reply path (Service Centre
1.161 -address) should be included in the SMS-SUBMIT message (TP-RP in GSM spec 03.40).
1.162 -
1.163 -A value of ETrue indicates that the Service Centre address should be included.
1.164 -This flag is only relavent for SMS-SUBMIT messages.
1.165 -
1.166 -@return
1.167 -The value of the reply path flag.
1.168 -*/
1.169 -
1.170 -inline TBool CSmsMessageSettings::ReplyPath() const
1.171 - {
1.172 - return iMsgFlags&ESmsSettingsReplyPathRequested;
1.173 - }
1.174 -
1.175 -/**
1.176 -Sets the boolean flag that indicates whether a the reply path (Service Centre
1.177 -address) should be included in the SMS-SUBMIT message (TP-RP in GSM spec 03.40).
1.178 -
1.179 -A value of ETrue indicates that the Service Centre address should be included.
1.180 -This flag is only relavent for SMS-SUBMIT messages.
1.181 -
1.182 -@param aReplyPathRequest
1.183 -The value of the reply path flag.
1.184 -*/
1.185 -inline void CSmsMessageSettings::SetReplyPath(TBool aReplyPathRequest)
1.186 - {
1.187 - iMsgFlags = (iMsgFlags & ~ESmsSettingsReplyPathRequested) | (aReplyPathRequest?ESmsSettingsReplyPathRequested : ESmsSettingsNoFlags);
1.188 - }
1.189 -
1.190 -/**
1.191 -Gets the form in which the message should be delivered to the recipient by
1.192 -the service centre.
1.193 -
1.194 -Note that the form may or may not actually be supported by the service centre,
1.195 -and that the format of the recipient address(es) may need to be different
1.196 -to a normal telephone number if MessageConversion() is set to any other value
1.197 -than ESmsConvPIDNone, ESmsConvFax, ESmsConvPaging or ESmsConvErmes.
1.198 -
1.199 -@return
1.200 -The value of the message form specifier.
1.201 -*/
1.202 -inline TSmsPIDConversion CSmsMessageSettings::MessageConversion() const
1.203 - {
1.204 - return iMessageConversion;
1.205 - }
1.206 -
1.207 -/**
1.208 -Sets the form in which the message should be delivered to the recipient by the
1.209 -Service Centre.
1.210 -
1.211 -Note that the form may or may not actually be supported by the service centre,
1.212 -and that the format of the recipient address(es) may need to be different
1.213 -to a normal telephone number if MessageConversion() is set to any other value
1.214 -than ESmsConvPIDNone, ESmsConvFax, ESmsConvPaging or ESmsConvErmes.
1.215 -
1.216 -
1.217 -@param aMessageConversion
1.218 -The message form specifier.
1.219 -*/
1.220 -inline void CSmsMessageSettings::SetMessageConversion(TSmsPIDConversion aMessageConversion)
1.221 - {
1.222 - iMessageConversion=aMessageConversion;
1.223 - }
1.224 -
1.225 -/**
1.226 -Gets the default character set used in the SMS message.
1.227 -
1.228 -Text is stored in Unicode on the Symbian OS phone and is converted into the
1.229 -appropriate character set when the message is sent.
1.230 -
1.231 -@return
1.232 -The default character set for the message.
1.233 -*/
1.234 -inline TSmsDataCodingScheme::TSmsAlphabet CSmsMessageSettings::CharacterSet() const
1.235 - {
1.236 - return iAlphabet;
1.237 - }
1.238 -
1.239 -/**
1.240 -Sets the default character set used in the SMS message.
1.241 -
1.242 -Text is stored in Unicode on the Symbian OS phone and is converted into the
1.243 -appropriate character set when the message is sent.
1.244 -
1.245 -@param aAlphabet
1.246 -The value of the default character set for the message.
1.247 -*/
1.248 -inline void CSmsMessageSettings::SetCharacterSet(TSmsDataCodingScheme::TSmsAlphabet aAlphabet)
1.249 - {
1.250 - iAlphabet=aAlphabet;
1.251 - }
1.252 -
1.253 -/**
1.254 -Sets the format in which the validity period should be sent in a SMS-DELIVER
1.255 -type message.
1.256 -
1.257 -This is field TP-VPF from GSM spec 03.40.
1.258 -
1.259 -@param aValidityPeriodFormat
1.260 -The validity period format.
1.261 -*/
1.262 -inline void CSmsMessageSettings::SetValidityPeriodFormat(TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat)
1.263 - {
1.264 - iValidityPeriodFormat = aValidityPeriodFormat;
1.265 - }
1.266 -
1.267 -/**
1.268 -Gets the format in which the validity period should be sent in a SMS-DELIVER
1.269 -type message.
1.270 -
1.271 -@return
1.272 -The validity period format.
1.273 -*/
1.274 -inline const TSmsFirstOctet::TSmsValidityPeriodFormat CSmsMessageSettings::ValidityPeriodFormat() const
1.275 - {
1.276 - return iValidityPeriodFormat;
1.277 - }
1.278 -
1.279 -/**
1.280 -Sets the flag which indicates whether the service center timestamp should
1.281 -be used for the date field in the TMsvEntry in message store. If the flag
1.282 -is not set, then the timestamp from the associated CSmsMessage is used.
1.283 -
1.284 -@param aUseServiceCenterTimestamp
1.285 -Flag to indicate whether to use the service center timestamp
1.286 -*/
1.287 -inline void CSmsMessageSettings::SetUseServiceCenterTimeStampForDate(TBool aUseServiceCenterTimestamp)
1.288 - {
1.289 - iMsgFlags = (iMsgFlags & ~ESmsSettingsUseServiceCenterTimeStamp) | (aUseServiceCenterTimestamp ? ESmsSettingsUseServiceCenterTimeStamp : ESmsSettingsNoFlags);
1.290 - }
1.291 -
1.292 -/**
1.293 -Gets the flag which indicates whether the service center timestamp should
1.294 -be used for the date field in the TMsvEntry in message store. If the flag
1.295 -is not set, then the timestamp from the associated CSmsMessage is used.
1.296 -
1.297 -@return Flag which indcates if service center timestamp will be used.
1.298 -*/
1.299 -inline TBool CSmsMessageSettings::UseServiceCenterTimeStampForDate() const
1.300 - {
1.301 - return iMsgFlags & ESmsSettingsUseServiceCenterTimeStamp;
1.302 - }
1.303 -
1.304 -/**
1.305 -Gets whether the editor should quote the received message at the beginning of
1.306 -the reply message.
1.307 -
1.308 -@return
1.309 -A value of ETrue if the editor should quote the received message at the beginning
1.310 -of the reply. EFalse if not.
1.311 -*/
1.312 -inline TBool CSmsSettings::ReplyQuoted() const
1.313 - {
1.314 - return iSetFlags&ESmsSettingsReplyQuoted;
1.315 - }
1.316 -
1.317 -/**
1.318 -Sets whether the editor should quote the received message at the beginning of
1.319 -the reply message.
1.320 -
1.321 -@param aReplyQuited
1.322 -The value to set the reply-quoted flag to.
1.323 -*/
1.324 -inline void CSmsSettings::SetReplyQuoted(TBool aReplyQuoted)
1.325 - {
1.326 - iSetFlags = (iSetFlags & ~ESmsSettingsReplyQuoted) | (aReplyQuoted?ESmsSettingsReplyQuoted : ESmsSettingsNoFlags);
1.327 - }
1.328 -
1.329 -/**
1.330 -Gets the default schedule delivery type of a new message created using the SMS
1.331 -client MTM.
1.332 -
1.333 -@return
1.334 -The schedule delivery type.
1.335 -*/
1.336 -inline TSmsDelivery CSmsSettings::Delivery() const
1.337 - {
1.338 - return iDelivery;
1.339 - }
1.340 -
1.341 -/**
1.342 -Sets the default schedule delivery type of a new message created using the SMS
1.343 -client MTM.
1.344 -
1.345 -@param aDelivery
1.346 -The schedule delivery type.
1.347 -*/
1.348 -inline void CSmsSettings::SetDelivery(TSmsDelivery aDelivery)
1.349 - {
1.350 - iDelivery=aDelivery;
1.351 - }
1.352 -
1.353 -
1.354 -/**
1.355 -Gets the way in which status reports that are received by the watcher are handled.
1.356 -
1.357 -By default, this is EDoNotWatchForReport. This value is not supported and
1.358 -therefore the value must be changed from the default.
1.359 -
1.360 -@return
1.361 -How SMS status reports are handled.
1.362 -
1.363 -@see CSmsSettings::TSmsReportHandling
1.364 -*/
1.365 -inline CSmsSettings::TSmsReportHandling CSmsSettings::StatusReportHandling() const
1.366 - {
1.367 - return iStatusReportHandling;
1.368 - }
1.369 -
1.370 -/**
1.371 -Sets the way in which status reports that are received by the watcher are handled.
1.372 -
1.373 -@param aStatusReportHandling
1.374 -The SMS status report handling data.
1.375 -
1.376 -@see CSmsSettings::TSmsReportHandling
1.377 -*/
1.378 -inline void CSmsSettings::SetStatusReportHandling(CSmsSettings::TSmsReportHandling aStatusReportHandling)
1.379 - {
1.380 - iStatusReportHandling = aStatusReportHandling;
1.381 - }
1.382 -
1.383 -/**
1.384 -Gets the way in which special messages that are received by the watcher are
1.385 -handled.
1.386 -
1.387 -By default, this is EDoNotWatchForReport. This value is not supported and
1.388 -therefore the value must be changed from the default.
1.389 -
1.390 -@return
1.391 -How special messages are handled.
1.392 -
1.393 -@see CSmsSettings::TSmsReportHandling
1.394 -*/
1.395 -inline CSmsSettings::TSmsReportHandling CSmsSettings::SpecialMessageHandling() const
1.396 - {
1.397 - return iSpecialMessageHandling;
1.398 - }
1.399 -
1.400 -/**
1.401 -Sets the way in which special messages that are received by the watcher are
1.402 -handled.
1.403 -
1.404 -@param aSpecialMessageHandling
1.405 -The special messages handling data.
1.406 -
1.407 -@see CSmsSettings::TSmsReportHandling
1.408 -*/
1.409 -inline void CSmsSettings::SetSpecialMessageHandling(CSmsSettings::TSmsReportHandling aSpecialMessageHandling)
1.410 - {
1.411 - iSpecialMessageHandling = aSpecialMessageHandling;
1.412 - }
1.413 -
1.414 -/**
1.415 -Sets whether the Service settings should be used to update the communications
1.416 -database.
1.417 -
1.418 -If set, this uses the service settings to update the comms db MODEM table's
1.419 -MODEM_MESSAGE_CENTRE_NUMBER, MODEM_MESSAGE_VALIDITY_PERIOD and
1.420 -MODEM_MESSAGE_DELIVERY_REPORT fields. The update is done when the Service
1.421 -settings are stored into the message store using CSmsSettings::StoreL().
1.422 -
1.423 -The default setting is for the comms db not to be updated - TSmsSettingsCommDbAction::ENone.
1.424 -
1.425 -@param aCommDbAction
1.426 -The communications database action.
1.427 -
1.428 -@see CSmsSettings::TSmsSettingsCommDbAction
1.429 -@see CSmsSettings::StoreL
1.430 -*/
1.431 -inline void CSmsSettings::SetCommDbAction(CSmsSettings::TSmsSettingsCommDbAction aCommDbAction)
1.432 - {
1.433 - iCommDbAction = aCommDbAction;
1.434 - }
1.435 -
1.436 -/**
1.437 -Gets the communications database action.
1.438 -
1.439 -For details, see CSmsSettings::SetCommDbAction().
1.440 -
1.441 -@return
1.442 -The communications database action.
1.443 -
1.444 -@see CSmsSettings::TSmsSettingsCommDbAction
1.445 -@see CSmsSettings::SetCommDbAction
1.446 -*/
1.447 -inline CSmsSettings::TSmsSettingsCommDbAction CSmsSettings::CommDbAction() const
1.448 - {
1.449 - return iCommDbAction;
1.450 - }
1.451 -
1.452 -/**
1.453 -Sets whether the Service's SMS bearer setting should be used to update the
1.454 -communications database.
1.455 -
1.456 -If set, this uses the service setting to update the comm db global table's
1.457 -SMS_BEARER field. The update is done when the Service settings are stored into
1.458 -the message store using CSmsSettings::StoreL().
1.459 -
1.460 -The default setting is for the comms db not to be updated - TSmsSettingsCommDbAction::ENone.
1.461 -
1.462 -@param aSmsBearerAction
1.463 -The SMS bearer action.
1.464 -
1.465 -@see CSmsSettings::TSmsSettingsCommDbAction
1.466 -@see CSmsSettings::StoreL
1.467 -*/
1.468 -inline void CSmsSettings::SetSmsBearerAction(CSmsSettings::TSmsSettingsCommDbAction aSmsBearerAction)
1.469 - {
1.470 - iSmsBearerAction = aSmsBearerAction;
1.471 - }
1.472 -
1.473 -/**
1.474 -Gets the SMS bearer action.
1.475 -
1.476 -For details, see CSmsSettings::SetCommDbAction().
1.477 -
1.478 -@return The SMS bearer action.
1.479 -
1.480 -@see CSmsSettings::TSmsSettingsCommDbAction
1.481 -@see CSmsSettings::SetSmsBearerAction
1.482 -*/
1.483 -inline CSmsSettings::TSmsSettingsCommDbAction CSmsSettings::SmsBearerAction() const
1.484 - {
1.485 - return iSmsBearerAction;
1.486 - }
1.487 -
1.488 -/**
1.489 -Sets the SMS bearer.
1.490 -
1.491 -@param aSmsBearer
1.492 -The SMS bearer.
1.493 -*/
1.494 -inline void CSmsSettings::SetSmsBearer(CSmsSettings::TMobileSmsBearer aSmsBearer)
1.495 - {
1.496 - iSmsBearer = aSmsBearer;
1.497 - }
1.498 -
1.499 -/**
1.500 -Gets the SMS bearer.
1.501 -
1.502 -@return
1.503 -The SMS bearer.
1.504 -*/
1.505 -inline CSmsSettings::TMobileSmsBearer CSmsSettings::SmsBearer() const
1.506 - {
1.507 - return iSmsBearer;
1.508 - }
1.509 -
1.510 -/**
1.511 -Sets the folder ID into which received class 2 SMS-DELIVER messages are stored.
1.512 -
1.513 -@param aId
1.514 -The folder ID for received class 2 messages.
1.515 -*/
1.516 -inline void CSmsSettings::SetClass2Folder(TMsvId aId)
1.517 - {
1.518 - iClass2Folder = aId;
1.519 - }
1.520 -
1.521 -/**
1.522 -Gets the folder ID into which received class 2 SMS-DELIVER messages are stored.
1.523 -
1.524 -@return
1.525 -The class 2 folder ID.
1.526 -*/
1.527 -inline TMsvId CSmsSettings::Class2Folder() const
1.528 - {
1.529 - return iClass2Folder;
1.530 - }
1.531 -
1.532 -/**
1.533 -Sets the maximum length of the message entry description.
1.534 -
1.535 -The default value is given by KSmsDescriptionLength.
1.536 -
1.537 -@param aDescriptionLength
1.538 -The maximum length.
1.539 -
1.540 -@see KSmsDescriptionLength
1.541 -*/
1.542 -inline void CSmsSettings::SetDescriptionLength(TInt aDescriptionLength)
1.543 - {
1.544 - iDescriptionLength = aDescriptionLength;
1.545 - }
1.546 -
1.547 -/**
1.548 -Gets the maximum length of the message entry description.
1.549 -
1.550 -@return
1.551 -The maximum length of the message entry description.
1.552 -
1.553 -@see KSmsDescriptionLength
1.554 -*/
1.555 -inline TInt CSmsSettings::DescriptionLength() const
1.556 - {
1.557 - return iDescriptionLength;
1.558 - }
1.559 -
1.560 -/**
1.561 -Gets the ID by which to identify the SMS-DELIVER message PDU for this recipient.
1.562 -
1.563 -@return
1.564 -The log ID for this recipient.
1.565 -*/
1.566 -inline TLogId CSmsNumber::LogId() const
1.567 - {
1.568 - return iLogId;
1.569 - }
1.570 -
1.571 -/**
1.572 -Sets the ID by which to identify the SMS-DELIVER message PDU for this recipient.
1.573 -
1.574 -@param aLogId
1.575 -The log ID for this recipient.
1.576 -*/
1.577 -inline void CSmsNumber::SetLogId(TLogId aLogId)
1.578 - {
1.579 - iLogId = aLogId;
1.580 - }
1.581 -
1.582 -/**
1.583 -Tests if a status report (TP-SRR in GSM spec 03.40) for the last segment will be requested from
1.584 -the Service Centre.
1.585 -
1.586 -A value of ETrue indicates that a status report will be requested for the last segment.
1.587 -
1.588 -@return
1.589 -The value of the Status report flag only for the last segment.
1.590 -*/
1.591 -
1.592 -inline TBool CSmsMessageSettings::LastSegmentDeliveryReport() const
1.593 - {
1.594 - return iMsgFlags & ESmsSettingsLastSegmentDeliveryReport;
1.595 - }
1.596 -
1.597 -/**
1.598 -Sets if a status report (TP-SRR in GSM spec 03.40) for the last segment will be requested from the
1.599 -Service Centre.
1.600 -
1.601 -A value of ETrue indicates that a status report will be requested for the last segment.
1.602 -
1.603 -@param aDeliveryReport
1.604 -The value of the status report flagfor the last segment.
1.605 -*/
1.606 -
1.607 -inline void CSmsMessageSettings::SetLastSegmentDeliveryReport(TBool aDeliveryReport)
1.608 - {
1.609 - iMsgFlags = (iMsgFlags & ~ESmsSettingsLastSegmentDeliveryReport) | (aDeliveryReport?ESmsSettingsLastSegmentDeliveryReport : ENoSmsSettingsLastSegmentDeliveryReport);
1.610 - }