; Copyright (c) Microsoft Corporation. All rights reserved.
;
;==--==
; NOTE: do not use \", use ' instead
; NOTE: Use # or ; for comments
; These are the managed resources for System.Core.Dll. See
; ResourceManager documentation and the ResGen tool.
;
; ///// begin Common /////
;
ArgumentOutOfRange_NeedNonNegNum=Non negative number is required.
;
; ///// end Common /////
;
;
; ///// begin IO /////
;
; ArgumentException
;
Argument_WrongAsyncResult=IAsyncResult object did not come from the corresponding async method on this type.
Argument_InvalidOffLen=Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.
Argument_NeedNonemptyPipeName=pipeName cannot be an empty string.
Argument_EmptyServerName=serverName cannot be an empty string. Use \".\" for current machine.
Argument_NonContainerInvalidAnyFlag=This flag may not be set on a pipe.
Argument_InvalidHandle=Invalid handle.
;
; ArgumentNullException
;
ArgumentNull_Buffer=Buffer cannot be null.
ArgumentNull_ServerName=serverName cannot be null. Use "." for current machine.
;
; ArgumentOutOfRangeException
;
ArgumentOutOfRange_AdditionalAccessLimited=additionalAccessRights is limited to the PipeAccessRights.ChangePermissions, PipeAccessRights.TakeOwnership, and PipeAccessRights.AccessSystemSecurity flags when creating NamedPipeServerStreams.
ArgumentOutOfRange_AnonymousReserved=The pipeName "anonymous" is reserved.
ArgumentOutOfRange_TransmissionModeByteOrMsg=For named pipes, transmission mode can be TransmissionMode.Byte or PipeTransmissionMode.Message. For anonymous pipes, transmission mode can be TransmissionMode.Byte.
ArgumentOutOfRange_DirectionModeInOrOut=PipeDirection.In or PipeDirection.Out required.
ArgumentOutOfRange_DirectionModeInOutOrInOut=For named pipes, the pipe direction can be PipeDirection.In, PipeDirection.Out or PipeDirection.InOut. For anonymous pipes, the pipe direction can be PipeDirection.In or PipeDirection.Out.
ArgumentOutOfRange_ImpersonationInvalid=TokenImpersonationLevel.None, TokenImpersonationLevel.Anonymous, TokenImpersonationLevel.Identification, TokenImpersonationLevel.Impersonation or TokenImpersonationLevel.Delegation required.
ArgumentOutOfRange_ImpersonationOptionsInvalid=impersonationOptions contains an invalid flag.
ArgumentOutOfRange_OptionsInvalid=options contains an invalid flag.
ArgumentOutOfRange_HandleInheritabilityNoneOrInheritable=HandleInheritability.None or HandleInheritability.Inheritable required.
ArgumentOutOfRange_InvalidTimeout=Timeout must be non-negative or equal to -1 (Timeout.Infinite)
ArgumentOutOfRange_MaxNumServerInstances=maxNumberOfServerInstances must either be a value between 1 and 254, or NamedPipeServerStream.MaxAllowedServerInstances (to obtain the maximum number allowed by system resources).
IndexOutOfRange_IORaceCondition=Probable I/O race condition detected while copying memory. The I/O package is not thread safe by default unless stated otherwise. In multithreaded applications, access streams in a thread-safe way, such as a thread-safe wrapper returned by TextReader's or TextWriter's Synchronized methods. This also applies to classes like StreamWriter and StreamReader.
;
; InvalidOperationException
;
InvalidOperation_EndReadCalledMultiple=EndRead can only be called once for each asynchronous operation.
InvalidOperation_EndWriteCalledMultiple=EndWrite can only be called once for each asynchronous operation.
InvalidOperation_EndWaitForConnectionCalledMultiple=EndWaitForConnection can only be called once for each asynchronous operation.
InvalidOperation_PipeNotYetConnected=Pipe hasn't been connected yet.
InvalidOperation_PipeDisconnected=Pipe is in a disconnected state.
InvalidOperation_PipeHandleNotSet=Pipe handle has not been set. Did your PipeStream implementation call InitializeHandle?
InvalidOperation_PipeNotAsync=Pipe is not opened in asynchronous mode.
InvalidOperation_PipeReadModeNotMessage=ReadMode is not of PipeTransmissionMode.Message.
InvalidOperation_PipeMessageTypeNotSupported=This pipe does not support message type transmission.
InvalidOperation_PipeAlreadyConnected=Already in a connected state.
InvalidOperation_PipeAlreadyDisconnected=Already in a disconnected state.
InvalidOperation_PipeClosed=Pipe is closed.
;
;
;
IO_FileTooLongOrHandleNotSync=IO operation will not work. Most likely the file will become too long or the handle was not opened to support synchronous IO operations.
;
; EOFException
;
IO_EOF_ReadBeyondEOF=Unable to read beyond the end of the stream.
;
; FileNotFoundException
;
IO_FileNotFound=Unable to find the specified file.
IO_FileNotFound_FileName=Could not find file '{0}'.
;
; IOException
;
IO_IO_AlreadyExists_Name=Cannot create "{0}" because a file or directory with the same name already exists.
IO_IO_BindHandleFailed=BindHandle for ThreadPool failed on this handle.
IO_DriveNotFound_Drive=Could not find the drive '{0}'. The drive might not be ready or might not be mapped.
IO_PathNotFound_Path=Could not find a part of the path '{0}'.
IO_PathNotFound_NoPathName=Could not find a part of the path.
;
; PathTooLongException
;
IO_PathTooLong=The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
;
; NotSupportedException
;
NotSupported_IONonFileDevices=Opening Win32 devices other than file such as COM ports, printers, disk partitions and tape drives is not supported. Avoid use of "\\\\.\\" in the path.
NotSupported_MemStreamNotExpandable=Memory stream is not expandable.
NotSupported_UnreadableStream=Stream does not support reading.
NotSupported_UnseekableStream=Stream does not support seeking.
NotSupported_UnwritableStream=Stream does not support writing.
NotSupported_AnonymousPipeUnidirectional=Anonymous pipes can only be in one direction.
NotSupported_AnonymousPipeMessagesNotSupported=Anonymous pipes do not support PipeTransmissionMode.Message ReadMode.
;
; ObjectDisposedException
;
ObjectDisposed_FileClosed=Cannot access a closed file.
ObjectDisposed_PipeClosed=Cannot access a closed pipe.
ObjectDisposed_ReaderClosed=Cannot read from a closed TextReader.
ObjectDisposed_StreamClosed=Cannot access a closed Stream.
ObjectDisposed_WriterClosed=Cannot write to a closed TextWriter.
;
; PlatformNotSupportedException
;
PlatformNotSupported_NamedPipeServers=Named Pipe Servers are not supported on Windows 95/98/ME.
;
; UnauthorizedAccessException
;
UnauthorizedAccess_IODenied_Path=Access to the path '{0}' is denied.
UnauthorizedAccess_IODenied_NoPathName=Access to the path is denied.
Perflib_InsufficientMemory_InstanceCounterBlock=Cannot allocate raw counter data for CounterSet '{0}' Instance '{1}'.
Perflib_InsufficientMemory_CounterSetTemplate=Cannot allocate memory for CounterSet '{0}' template with size '{1}'.
Perflib_InvalidOperation_CounterRefValue=Cannot locate raw counter data location for CounterSet '{0}', Counter '{1}, in Instance '{2}'.
Perflib_InvalidOperation_CounterSetNotInstalled=CounterSet '{0}' not installed yet.
Perflib_InvalidOperation_InstanceNotFound=Cannot find Instance '{0}' in CounterSet '{1}'.
Perflib_InvalidOperation_AddCounterAfterInstance=Cannot AddCounter to CounterSet '{0}' after CreateCounterSetInstance.
Perflib_InvalidOperation_NoActiveProvider=CounterSet provider '{0}' not active.
Perflib_InvalidOperation_CounterSetContainsNoCounter=CounterSet '{0}' does not include any counters.
;
; ///// end Diagnostics.PerformanceData /////
;
;
; ///// begin System.Collections.Generic /////
;
; ArgumentException
Arg_ArrayPlusOffTooSmall=Destination array is not long enough to copy all the items in the collection. Check array index and length.
Arg_HSCapacityOverflow=HashSet capacity is too big.
; InvalidOperationException
InvalidOperation_EnumFailedVersion=Collection was modified; enumeration operation may not execute.
InvalidOperation_EnumOpCantHappen=Enumeration has either not started or has already finished.
; Serialization Exceptions
Serialization_MissingKeys=The Keys for this dictionary are missing.
;
; ///// end System.Collections.Generic /////
;
;
; ///// begin System.Threading.ReaderWriterLockSlim /////
;
; LockRecursionException
;
LockRecursionException_RecursiveReadNotAllowed=Recursive read lock acquisitions not allowed in this mode.
LockRecursionException_RecursiveWriteNotAllowed=Recursive write lock acquisitions not allowed in this mode.
LockRecursionException_RecursiveUpgradeNotAllowed=Recursive upgradeable lock acquisitions not allowed in this mode.
LockRecursionException_ReadAfterWriteNotAllowed=A read lock may not be acquired with the write lock held in this mode.
LockRecursionException_WriteAfterReadNotAllowed=Write lock may not be acquired with read lock held. This pattern is prone to deadlocks. Please ensure that read locks are released before taking a write lock. If an upgrade is necessary, use an upgrade lock in place of the read lock.
LockRecursionException_UpgradeAfterReadNotAllowed=Upgradeable lock may not be acquired with read lock held.
LockRecursionException_UpgradeAfterWriteNotAllowed=Upgradeable lock may not be acquired with write lock held in this mode. Acquiring Upgradeable lock gives the ability to read along with an option to upgrade to a writer.
;
;SynchronizationLockException
;
SynchronizationLockException_MisMatchedRead=The read lock is being released without being held.
SynchronizationLockException_MisMatchedWrite=The write lock is being released without being held.
SynchronizationLockException_MisMatchedUpgrade=The upgradeable lock is being released without being held.
SynchronizationLockException_IncorrectDispose=The lock is being disposed while still being used. It either is being held by a thread and/or has active waiters waiting to acquire the lock.
;
; ///// end System.Threading.ReaderWriterLockSlim /////
;
;
; Cryptography exception strings
;
Cryptography_ArgECDHKeySizeMismatch=The keys from both parties must be the same size to generate a secret agreement.
Cryptography_ArgECDHRequiresECDHKey=Keys used with the ECDiffieHellmanCng algorithm must have an algorithm group of ECDiffieHellman.
Cryptography_ArgECDsaRequiresECDsaKey=Keys used with the ECDsaCng algorithm must have an algorithm group of ECDsa.
Cryptography_ArgExpectedECDiffieHellmanCngPublicKey=DeriveKeyMaterial requires an ECDiffieHellmanCngPublicKey.
Cryptography_ArgMustBeCngAlgorithm=Object must be of type CngAlgorithm.
Cryptography_ArgMustBeCngAlgorithmGroup=Object must be of type CngAlgorithmGroup.
Cryptography_ArgMustBeCngKeyBlobFormat=Object must be of type CngKeyBlobFormat.
Cryptography_ArgMustBeCngProvider=Object must be of type CngProvider.
Cryptography_DecryptWithNoKey=Decrypting a value requires that a key be set on the algorithm object.
Cryptography_ECXmlSerializationFormatRequired=XML serialization of an elliptic curve key requires using an overload which specifies the XML format to be used.
Cryptography_InvalidAlgorithmGroup=The algorithm group '{0}' is invalid.
Cryptography_InvalidAlgorithmName=The algorithm name '{0}' is invalid.
Cryptography_InvalidCipherMode=The specified cipher mode is not valid for this algorithm.
Cryptography_InvalidIVSize=The specified initialization vector (IV) does not match the block size for this algorithm.
Cryptography_InvalidKeyBlobFormat=The key blob format '{0}' is invalid.
Cryptography_InvalidKeySize=The specified key is not a valid size for this algorithm.
Cryptography_InvalidPadding=Padding is invalid and cannot be removed.
Cryptography_InvalidProviderName=The provider name '{0}' is invalid.
Cryptography_MissingDomainParameters=Could not read the domain parameters from the XML string.
Cryptography_MissingPublicKey=Could not read the public key from the XML string.
Cryptography_MissingIV=The cipher mode specified requires that an initialization vector (IV) be used.
Cryptography_MustTransformWholeBlock=TransformBlock may only process bytes in block sized increments.
Cryptography_NonCompliantFIPSAlgorithm=This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
Cryptography_OpenInvalidHandle=Cannot open an invalid handle.
Cryptography_OpenEphemeralKeyHandleWithoutEphemeralFlag=The CNG key handle being opened was detected to be ephemeral, but the EphemeralKey open option was not specified.
Cryptography_PartialBlock=The input data is not a complete block.
Cryptography_PlatformNotSupported=The specified cryptographic algorithm is not supported on this platform.
Cryptography_TlsRequiresLabelAndSeed=The TLS key derivation function requires both the label and seed properties to be set.
Cryptography_TransformBeyondEndOfBuffer=Attempt to transform beyond end of buffer.
Cryptography_UnexpectedXmlNamespace=The XML namespace '{0}' was unexpected, expected '{1}'.
;
; ///// begin System.CommandLine ////
;
; CommandLineParser Resource Messages
ArgumentException_RangeMinRangeMaxRangeType=Cannot accept MinRange {0} because it is not the same type as MaxRange {1}. Verify that the MaxRange and MinRange values are of the same type and try again.
ArgumentException_RangeNotIComparable=Cannot accept MaxRange and MinRange because they are not IComparable.
ArgumentException_RangeMaxRangeSmallerThanMinRange=Cannot accept MaxRange because it is less than MinRange. Specify a MaxRange value that is greater than or equal to the MinRange value and try again.
ArgumentException_CountMaxLengthSmallerThanMinLength=MaxLength should be greater than MinLength.
ArgumentException_LengthMaxLengthSmallerThanMinLength=Cannot accept MaxLength value. Specify MaxLength value greater than the value of MinLength and try again.
ArgumentException_UnregisteredParameterName=Parameter {0} has not been added to this parser.
ArgumentException_InvalidParameterName={0} is an invalid parameter name.
ArgumentException_DuplicateName=The name {0} is already in use.
ArgumentException_DuplicatePosition=The position {0} is already in use.
ArgumentException_NoParametersFound=The object has no parameters associated with it.
ArgumentException_HelpMessageBaseNameNullOrEmpty=Help message base name may not be null or empty.
ArgumentException_HelpMessageResourceIdNullOrEmpty=Help message resource id may not be null or empty.
ArgumentException_HelpMessageNullOrEmpty=Help message may not be null or empty.
ArgumentException_RegexPatternNullOrEmpty=The regular expression pattern may not be null or empty.
ArgumentException_DuplicateParameterAttribute=Duplicate parameter attributes with the same parameter set on parameter {0}.
ArgumentException_MissingBaseNameOrResourceId=On parameter {0}, either both HelpMessageBaseName and HelpMessageResourceId must be set or neither can be set.
ArgumentException_DuplicateRemainingArgumets=Can not set {0} as the remaining arguments parameter for parameter set {1} because that parameter set already has a parameter set as the remaining arguments parameter.
ArgumentException_TypeMismatchForRemainingArguments=Parameter {0} must be an array of strings if it can have its value from the remaining arguments.
ArgumentException_ValidationParameterTypeMismatch=Validator {0} may not be applied to a parameter of type {1}.
ArgumentException_ParserBuiltWithValueType=The parameter toBind may not be an instance of a value type.
InvalidOperationException_GetParameterTypeMismatch=Parameter {0} may not retrieved with type {1} since it is of type {2}.
InvalidOperationException_GetParameterValueBeforeParse=Parse must be called before retrieving parameter values.
InvalidOperationException_SetRemainingArgumentsParameterAfterParse=AllowRemainingArguments may not be set after Parse has been called.
InvalidOperationException_AddParameterAfterParse=Parameters may not be added after Parse has been called.
InvalidOperationException_BindAfterBind=Parse may only be called once.
InvalidOperationException_GetRemainingArgumentsNotAllowed=GetRemainingArguments may not be called unless AllowRemainingArguments is set to true.
InvalidOperationException_ParameterSetBeforeParse=The SpecifiedParameterSet property may only be accessed after Parse has been called successfully.
CommandLineParser_Aliases=Aliases
CommandLineParser_ErrorMessagePrefix=Error
CommandLineParser_HelpMessagePrefix=Usage
ParameterBindingException_AmbiguousParameterName=Prefix {0} resolves to multiple parameters: {1}. Use a more specific prefix for this parameter.
ParameterBindingException_ParameterValueAlreadySpecified=Parameter {0} already given value of {1}.
ParameterBindingException_RequiredParameterMissingCommandLineValue=Parameter {0} must be followed by a value.
ParameterBindingException_UnboundCommandLineArguments=Unbound parameters left on command line: {0}.
ParameterBindingException_UnboundMandatoryParameter=Values for required parameters missing: {0}.
ParameterBindingException_ResponseFileException=Could not open response file {0}: {1}
ParameterBindingException_ValididationError=Could not validate parameter {0}: {1}
ParameterBindingException_TransformationError=Could not convert {0} to type {1}.
ParameterBindingException_AmbiguousParameterSet=Named parameters specify an ambiguous parameter set. Specify more parameters by name.
ParameterBindingException_UnknownParameterSet=No valid parameter set for named parameters. Make sure all named parameters belong to the same parameter set.
ParameterBindingException_NestedResponseFiles=A response file may not contain references to other response files.
ValidateMetadataException_RangeGreaterThanMaxRangeFailure=The value {0} was greater than the maximum value {1}. Specify a value less than or equal to the maximum value and try again.
ValidateMetadataException_RangeSmallerThanMinRangeFailure=The value {0} was smaller than the minimum value {1}. Specify a value greater than or equal to the minimum value and try again.
ValidateMetadataException_PatternFailure=The value {0} does not match the pattern {1}.
ValidateMetadataException_CountMinLengthFailure=The number of values should be greater than or equal to {0} instead of {1}.
ValidateMetadataException_CountMaxLengthFailure=The number of values should be less than or equal to {0} instead of {1}.
ValidateMetadataException_LengthMinLengthFailure=The length should be greater than or equal to {0} instead of {1}.
ValidateMetadataException_LengthMaxLengthFailure=The length should be less than or equal to {0} instead of {1}.
;
; ///// begin MemoryMappedFiles /////
;
; ArgumentException
;
Argument_MapNameEmptyString=Map name cannot be an empty string.
Argument_EmptyFile=A positive capacity must be specified for a Memory Mapped File backed by an empty file.
Argument_NewMMFWriteAccessNotAllowed=MemoryMappedFileAccess.Write is not permitted when creating new memory mapped files. Use MemoryMappedFileAccess.ReadWrite instead.
Argument_ReadAccessWithLargeCapacity=When specifying MemoryMappedFileAccess.Read access, the capacity must not be larger than the file size.
Argument_NewMMFAppendModeNotAllowed=FileMode.Append is not permitted when creating new memory mapped files. Instead, use MemoryMappedFileView to ensure write-only access within a specified region.
;
; ArgumentNullException
;
ArgumentNull_MapName=Map name cannot be null.
ArgumentNull_FileStream=fileStream cannot be null.
;
; ArgumentOutOfRangeException
;
ArgumentOutOfRange_CapacityLargerThanLogicalAddressSpaceNotAllowed=The capacity cannot be greater than the size of the system's logical address space.
ArgumentOutOfRange_NeedPositiveNumber=A positive number is required.
ArgumentOutOfRange_PositiveOrDefaultCapacityRequired=The capacity must be greater than or equal to 0. 0 represents the the size of the file being mapped.
ArgumentOutOfRange_PositiveOrDefaultSizeRequired=The size must be greater than or equal to 0. If 0 is specified, the view extends from the specified offset to the end of the file mapping.
ArgumentOutOfRange_PositionLessThanCapacityRequired=The position may not be greater or equal to the capacity of the accessor.
ArgumentOutOfRange_CapacityGEFileSizeRequired=The capacity may not be smaller than the file size.
;
; IOException
;
IO_NotEnoughMemory=Not enough memory to map view.
;
;
; InvalidOperationException
;
InvalidOperation_CalledTwice=Cannot call this operation twice.
InvalidOperation_ViewIsNull=The underlying MemoryMappedView object is null.
;
; NotSupportedException
;
NotSupported_DelayAllocateFileBackedNotAllowed=The MemoryMappedFileOptions.DelayAllocatePages option is not supported with memory mapped files mapping files on disk.
NotSupported_MMViewStreamsFixedLength=MemoryMappedViewStreams are fixed length.
;
; ObjectDisposedException
;
ObjectDisposed_ViewAccessorClosed=Cannot access a closed accessor.
ObjectDisposed_StreamIsClosed=Cannot access a closed Stream.
NotSupported_SubclassOverride=Method not supported. Derived class must override.
Cryptography_ArgDSARequiresDSAKey=Keys used with the DSACng algorithm must have an algorithm group of DSA.
Cryptography_ArgRSAaRequiresRSAKey=Keys used with the RSACng algorithm must have an algorithm group of RSA.
Cryptography_CngKeyWrongAlgorithm=This key is for algorithm '{0}'. Expected '{1}'.
Cryptography_DSA_HashTooShort=The supplied hash cannot be shorter in length than the DSA key's Q value.
Cryptography_HashAlgorithmNameNullOrEmpty=The hash algorithm name cannot be null or empty.
Cryptography_InvalidDsaParameters_MissingFields=The specified DSA parameters are not valid; P, Q, G and Y are all required.
Cryptography_InvalidDsaParameters_MismatchedPGY=The specified DSA parameters are not valid; P, G and Y must be the same length (the key size).
Cryptography_InvalidDsaParameters_MismatchedQX=The specified DSA parameters are not valid; Q and X (if present) must be the same length.
Cryptography_InvalidDsaParameters_MismatchedPJ=The specified DSA parameters are not valid; J (if present) must be shorter than P.
Cryptography_InvalidDsaParameters_SeedRestriction_ShortKey=The specified DSA parameters are not valid; Seed, if present, must be 20 bytes long for keys shorter than 1024 bits.
Cryptography_InvalidDsaParameters_QRestriction_ShortKey=The specified DSA parameters are not valid; Q must be 20 bytes long for keys shorter than 1024 bits.
Cryptography_InvalidDsaParameters_QRestriction_LargeKey=The specified DSA parameters are not valid; Q's length must be one of 20, 32 or 64 bytes.
Cryptography_InvalidRsaParameters=The specified RSA parameters are not valid; both Exponent and Modulus are required fields.
Cryptography_InvalidSignatureAlgorithm=The hash algorithm is not supported for signatures. Only MD5, SHA1, SHA256,SHA384, and SHA512 are supported at this time.
Cryptography_KeyBlobParsingError=Key Blob not in expected format.
Cryptography_NotSupportedKeyAlgorithm=Key Algorithm is not supported.
Cryptography_NotValidPublicOrPrivateKey=Key is not a valid public or private key.
Cryptography_NotValidPrivateKey=Key is not a valid private key.
Cryptography_UnexpectedTransformTruncation=CNG provider unexpectedly terminated encryption or decryption prematurely.
Cryptography_UnsupportedPaddingMode=The specified PaddingMode is not supported.
Cryptography_WeakKey=Specified key is a known weak key for this algorithm and cannot be used.
Cryptography_CurveNotSupported=The specified curve '{0}' or its parameters are not valid for this platform.
Cryptography_InvalidCurve=The specified curve '{0}' is not valid for this platform.
Cryptography_InvalidCurveOid=The specified Oid is not valid. The Oid.FriendlyName or Oid.Value property must be set.
Cryptography_InvalidCurveKeyParameters=The specified key parameters are not valid. Q.X and Q.Y are required fields. Q.X, Q.Y must be the same length. If D is specified it must be the same length as Q.X and Q.Y for named curves or the same length as Order for explicit curves.
Cryptography_InvalidECCharacteristic2Curve=The specified Characteristic2 curve parameters are not valid. Polynomial, A, B, G.X, G.Y, and Order are required. A, B, G.X, G.Y must be the same length, and the same length as Q.X, Q.Y and D if those are specified. Seed, Cofactor and Hash are optional. Other parameters are not allowed.
Cryptography_InvalidECPrimeCurve=The specified prime curve parameters are not valid. Prime, A, B, G.X, G.Y and Order are required and must be the same length, and the same length as Q.X, Q.Y and D if those are specified. Seed, Cofactor and Hash are optional. Other parameters are not allowed.
Cryptography_InvalidECNamedCurve=The specified named curve parameters are not valid. Only the Oid parameter must be set.
Cryptography_UnknownHashAlgorithm='{0}' is not a known hash algorithm.