using System;
using System.Runtime.InteropServices;
namespace System.Text
{
/// Represents a UTF-7 encoding of Unicode characters.
/// 1
// Token: 0x020005FE RID: 1534
[MonoTODO("Serialization format not compatible with .NET")]
[ComVisible(true)]
[Serializable]
public class UTF7Encoding : Encoding
{
/// Initializes a new instance of the class.
// Token: 0x0600381D RID: 14365 RVA: 0x000C0D3C File Offset: 0x000BEF3C
public UTF7Encoding()
: this(false)
{
}
/// Initializes a new instance of the class. A parameter specifies whether to allow optional characters.
/// true to specify that optional characters are allowed; otherwise, false.
// Token: 0x0600381E RID: 14366 RVA: 0x000C0D48 File Offset: 0x000BEF48
public UTF7Encoding(bool allowOptionals)
: base(65000)
{
this.allowOptionals = allowOptionals;
this.body_name = "utf-7";
this.encoding_name = "Unicode (UTF-7)";
this.header_name = "utf-7";
this.is_mail_news_display = true;
this.is_mail_news_save = true;
this.web_name = "utf-7";
this.windows_code_page = 1200;
}
/// Returns the hash code for the current object.
/// A 32-bit signed integer hash code.
/// 1
// Token: 0x06003820 RID: 14368 RVA: 0x000C0DF0 File Offset: 0x000BEFF0
[ComVisible(false)]
public override int GetHashCode()
{
int hashCode = base.GetHashCode();
return (!this.allowOptionals) ? hashCode : (-hashCode);
}
/// Gets a value indicating whether the specified object is equal to the current object.
/// true if is a object and is equal to the current object; otherwise, false.
/// An object to compare to the current object.
/// 2
// Token: 0x06003821 RID: 14369 RVA: 0x000C0E18 File Offset: 0x000BF018
[ComVisible(false)]
public override bool Equals(object value)
{
UTF7Encoding utf7Encoding = value as UTF7Encoding;
return utf7Encoding != null && (this.allowOptionals == utf7Encoding.allowOptionals && base.EncoderFallback.Equals(utf7Encoding.EncoderFallback)) && base.DecoderFallback.Equals(utf7Encoding.DecoderFallback);
}
// Token: 0x06003822 RID: 14370 RVA: 0x000C0E70 File Offset: 0x000BF070
private static int InternalGetByteCount(char[] chars, int index, int count, bool flush, int leftOver, bool isInShifted, bool allowOptionals)
{
if (chars == null)
{
throw new ArgumentNullException("chars");
}
if (index < 0 || index > chars.Length)
{
throw new ArgumentOutOfRangeException("index", Encoding._("ArgRange_Array"));
}
if (count < 0 || count > chars.Length - index)
{
throw new ArgumentOutOfRangeException("count", Encoding._("ArgRange_Array"));
}
int num = 0;
int i = leftOver >> 8;
byte[] array = UTF7Encoding.encodingRules;
while (count > 0)
{
int num2 = (int)chars[index++];
count--;
int num3;
if (num2 < 128)
{
num3 = (int)array[num2];
}
else
{
num3 = 0;
}
switch (num3)
{
case 0:
break;
case 1:
goto IL_E3;
case 2:
if (allowOptionals)
{
goto IL_E3;
}
break;
case 3:
if (isInShifted)
{
if (i != 0)
{
num++;
i = 0;
}
num++;
isInShifted = false;
}
num += 2;
continue;
default:
continue;
}
if (!isInShifted)
{
num++;
i = 0;
isInShifted = true;
}
for (i += 16; i >= 6; i -= 6)
{
num++;
}
continue;
IL_E3:
if (isInShifted)
{
if (i != 0)
{
num++;
i = 0;
}
num++;
isInShifted = false;
}
num++;
}
if (isInShifted && flush)
{
if (i != 0)
{
num++;
}
num++;
}
return num;
}
/// Calculates the number of bytes produced by encoding a set of characters from the specified character array.
/// The number of bytes produced by encoding the specified characters.
/// The character array containing the set of characters to encode.
/// The index of the first character to encode.
/// The number of characters to encode.
///
/// is null (Nothing).
///
/// or is less than zero.-or- and do not denote a valid range in .-or- The resulting number of bytes is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x06003823 RID: 14371 RVA: 0x000C0FDC File Offset: 0x000BF1DC
public override int GetByteCount(char[] chars, int index, int count)
{
return UTF7Encoding.InternalGetByteCount(chars, index, count, true, 0, false, this.allowOptionals);
}
// Token: 0x06003824 RID: 14372 RVA: 0x000C0FF0 File Offset: 0x000BF1F0
private static int InternalGetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush, ref int leftOver, ref bool isInShifted, bool allowOptionals)
{
if (chars == null)
{
throw new ArgumentNullException("chars");
}
if (bytes == null)
{
throw new ArgumentNullException("bytes");
}
if (charIndex < 0 || charIndex > chars.Length)
{
throw new ArgumentOutOfRangeException("charIndex", Encoding._("ArgRange_Array"));
}
if (charCount < 0 || charCount > chars.Length - charIndex)
{
throw new ArgumentOutOfRangeException("charCount", Encoding._("ArgRange_Array"));
}
if (byteIndex < 0 || byteIndex > bytes.Length)
{
throw new ArgumentOutOfRangeException("byteIndex", Encoding._("ArgRange_Array"));
}
int num = byteIndex;
int num2 = bytes.Length;
int i = leftOver >> 8;
int num3 = leftOver & 255;
byte[] array = UTF7Encoding.encodingRules;
string text = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
while (charCount > 0)
{
int num4 = (int)chars[charIndex++];
charCount--;
int num5;
if (num4 < 128)
{
num5 = (int)array[num4];
}
else
{
num5 = 0;
}
switch (num5)
{
case 0:
break;
case 1:
goto IL_19D;
case 2:
if (allowOptionals)
{
goto IL_19D;
}
break;
case 3:
if (isInShifted)
{
if (i != 0)
{
if (num + 1 > num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = (byte)text[num3 << 6 - i];
}
if (num + 1 > num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = 45;
isInShifted = false;
i = 0;
num3 = 0;
}
if (num + 2 > num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = 43;
bytes[num++] = 45;
continue;
default:
continue;
}
if (!isInShifted)
{
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = 43;
isInShifted = true;
i = 0;
}
num3 = (num3 << 16) | num4;
i += 16;
while (i >= 6)
{
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
i -= 6;
bytes[num++] = (byte)text[num3 >> i];
num3 &= (1 << i) - 1;
}
continue;
IL_19D:
if (isInShifted)
{
if (i != 0)
{
if (num + 1 > num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = (byte)text[num3 << 6 - i];
}
if (num + 1 > num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = 45;
isInShifted = false;
i = 0;
num3 = 0;
}
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = (byte)num4;
}
if (isInShifted && flush)
{
if (i != 0)
{
if (num + 1 > num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "bytes");
}
bytes[num++] = (byte)text[num3 << 6 - i];
}
bytes[num++] = 45;
i = 0;
num3 = 0;
isInShifted = false;
}
leftOver = (i << 8) | num3;
return num - byteIndex;
}
/// Encodes a set of characters from the specified character array into the specified byte array.
/// The actual number of bytes written into .
/// The character array containing the set of characters to encode.
/// The index of the first character to encode.
/// The number of characters to encode.
/// The byte array to contain the resulting sequence of bytes.
/// The index at which to start writing the resulting sequence of bytes.
///
/// is null (Nothing).-or- is null (Nothing).
///
/// or or is less than zero.-or- and do not denote a valid range in .-or- is not a valid index in .
///
/// does not have enough capacity from to the end of the array to accommodate the resulting bytes.
/// A fallback occurred (see Understanding Encodings for fuller explanation)-and- is set to .
/// 1
// Token: 0x06003825 RID: 14373 RVA: 0x000C1360 File Offset: 0x000BF560
public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
{
int num = 0;
bool flag = false;
return UTF7Encoding.InternalGetBytes(chars, charIndex, charCount, bytes, byteIndex, true, ref num, ref flag, this.allowOptionals);
}
// Token: 0x06003826 RID: 14374 RVA: 0x000C1388 File Offset: 0x000BF588
private static int InternalGetCharCount(byte[] bytes, int index, int count, int leftOver)
{
if (bytes == null)
{
throw new ArgumentNullException("bytes");
}
if (index < 0 || index > bytes.Length)
{
throw new ArgumentOutOfRangeException("index", Encoding._("ArgRange_Array"));
}
if (count < 0 || count > bytes.Length - index)
{
throw new ArgumentOutOfRangeException("count", Encoding._("ArgRange_Array"));
}
int num = 0;
bool flag = (leftOver & 16777216) == 0;
bool flag2 = (leftOver & 33554432) != 0;
int num2 = (leftOver >> 16) & 255;
sbyte[] array = UTF7Encoding.base64Values;
while (count > 0)
{
int num3 = (int)bytes[index++];
count--;
if (flag)
{
if (num3 != 43)
{
num++;
}
else
{
flag = false;
flag2 = true;
}
}
else
{
if (num3 == 45)
{
if (flag2)
{
num++;
}
num2 = 0;
flag = true;
}
else if ((int)array[num3] != -1)
{
num2 += 6;
if (num2 >= 16)
{
num++;
num2 -= 16;
}
}
else
{
num++;
flag = true;
num2 = 0;
}
flag2 = false;
}
}
return num;
}
/// Calculates the number of characters produced by decoding a sequence of bytes from the specified byte array.
/// The number of characters produced by decoding the specified sequence of bytes.
/// The byte array containing the sequence of bytes to decode.
/// The index of the first byte to decode.
/// The number of bytes to decode.
///
/// is null (Nothing).
///
/// or is less than zero.-or- and do not denote a valid range in .-or- The resulting number of characters is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x06003827 RID: 14375 RVA: 0x000C14AC File Offset: 0x000BF6AC
public override int GetCharCount(byte[] bytes, int index, int count)
{
return UTF7Encoding.InternalGetCharCount(bytes, index, count, 0);
}
// Token: 0x06003828 RID: 14376 RVA: 0x000C14B8 File Offset: 0x000BF6B8
private static int InternalGetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, ref int leftOver)
{
if (bytes == null)
{
throw new ArgumentNullException("bytes");
}
if (chars == null)
{
throw new ArgumentNullException("chars");
}
if (byteIndex < 0 || byteIndex > bytes.Length)
{
throw new ArgumentOutOfRangeException("byteIndex", Encoding._("ArgRange_Array"));
}
if (byteCount < 0 || byteCount > bytes.Length - byteIndex)
{
throw new ArgumentOutOfRangeException("byteCount", Encoding._("ArgRange_Array"));
}
if (charIndex < 0 || charIndex > chars.Length)
{
throw new ArgumentOutOfRangeException("charIndex", Encoding._("ArgRange_Array"));
}
int num = charIndex;
int num2 = chars.Length;
bool flag = (leftOver & 16777216) == 0;
bool flag2 = (leftOver & 33554432) != 0;
bool flag3 = (leftOver & 67108864) != 0;
int num3 = (leftOver >> 16) & 255;
int num4 = leftOver & 65535;
sbyte[] array = UTF7Encoding.base64Values;
while (byteCount > 0)
{
int num5 = (int)bytes[byteIndex++];
byteCount--;
if (flag)
{
if (num5 != 43)
{
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "chars");
}
if (flag3)
{
throw new ArgumentException(Encoding._("Arg_InvalidUTF7"), "chars");
}
chars[num++] = (char)num5;
}
else
{
flag = false;
flag2 = true;
}
}
else
{
int num6;
if (num5 == 45)
{
if (flag2)
{
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "chars");
}
if (flag3)
{
throw new ArgumentException(Encoding._("Arg_InvalidUTF7"), "chars");
}
chars[num++] = '+';
}
flag = true;
num3 = 0;
num4 = 0;
}
else if ((num6 = (int)array[num5]) != -1)
{
num4 = (num4 << 6) | num6;
num3 += 6;
if (num3 >= 16)
{
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "chars");
}
num3 -= 16;
char c = (char)(num4 >> num3);
if ((c & 'ﰀ') == '\ud800')
{
flag3 = true;
}
else if ((c & 'ﰀ') == '\udc00')
{
if (!flag3)
{
throw new ArgumentException(Encoding._("Arg_InvalidUTF7"), "chars");
}
flag3 = false;
}
chars[num++] = c;
num4 &= (1 << num3) - 1;
}
}
else
{
if (num >= num2)
{
throw new ArgumentException(Encoding._("Arg_InsufficientSpace"), "chars");
}
if (flag3)
{
throw new ArgumentException(Encoding._("Arg_InvalidUTF7"), "chars");
}
chars[num++] = (char)num5;
flag = true;
num3 = 0;
num4 = 0;
}
flag2 = false;
}
}
leftOver = num4 | (num3 << 16) | ((!flag) ? 16777216 : 0) | ((!flag2) ? 0 : 33554432) | ((!flag3) ? 0 : 67108864);
return num - charIndex;
}
/// Decodes a sequence of bytes from the specified byte array into the specified character array.
/// The actual number of characters written into .
/// The byte array containing the sequence of bytes to decode.
/// The index of the first byte to decode.
/// The number of bytes to decode.
/// The character array to contain the resulting set of characters.
/// The index at which to start writing the resulting set of characters.
///
/// is null (Nothing).-or- is null (Nothing).
///
/// or or is less than zero.-or- and do not denote a valid range in .-or- is not a valid index in .
///
/// does not have enough capacity from to the end of the array to accommodate the resulting characters.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x06003829 RID: 14377 RVA: 0x000C17DC File Offset: 0x000BF9DC
public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
{
int num = 0;
int num2 = UTF7Encoding.InternalGetChars(bytes, byteIndex, byteCount, chars, charIndex, ref num);
if ((num & 67108864) != 0)
{
throw new ArgumentException(Encoding._("Arg_InvalidUTF7"), "chars");
}
return num2;
}
/// Calculates the maximum number of bytes produced by encoding the specified number of characters.
/// The maximum number of bytes produced by encoding the specified number of characters.
/// The number of characters to encode.
///
/// is less than zero.-or- The resulting number of bytes is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x0600382A RID: 14378 RVA: 0x000C181C File Offset: 0x000BFA1C
public override int GetMaxByteCount(int charCount)
{
if (charCount < 0)
{
throw new ArgumentOutOfRangeException("charCount", Encoding._("ArgRange_NonNegative"));
}
if (charCount == 0)
{
return 0;
}
return 8 * (charCount / 3) + charCount % 3 * 3 + 2;
}
/// Calculates the maximum number of characters produced by decoding the specified number of bytes.
/// The maximum number of characters produced by decoding the specified number of bytes.
/// The number of bytes to decode.
///
/// is less than zero.-or- The resulting number of characters is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x0600382B RID: 14379 RVA: 0x000C1850 File Offset: 0x000BFA50
public override int GetMaxCharCount(int byteCount)
{
if (byteCount < 0)
{
throw new ArgumentOutOfRangeException("byteCount", Encoding._("ArgRange_NonNegative"));
}
return byteCount;
}
/// Obtains a decoder that converts a UTF-7 encoded sequence of bytes into a sequence of Unicode characters.
/// A that converts a UTF-7 encoded sequence of bytes into a sequence of Unicode characters.
/// 1
// Token: 0x0600382C RID: 14380 RVA: 0x000C1870 File Offset: 0x000BFA70
public override Decoder GetDecoder()
{
return new UTF7Encoding.UTF7Decoder();
}
/// Obtains an encoder that converts a sequence of Unicode characters into a UTF-7 encoded sequence of bytes.
/// A that converts a sequence of Unicode characters into a UTF-7 encoded sequence of bytes.
/// 1
// Token: 0x0600382D RID: 14381 RVA: 0x000C1878 File Offset: 0x000BFA78
public override Encoder GetEncoder()
{
return new UTF7Encoding.UTF7Encoder(this.allowOptionals);
}
/// Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.
/// The number of bytes produced by encoding the specified characters.
/// A pointer to the first character to encode.
/// The number of characters to encode.
///
/// is null (Nothing in Visual Basic .NET).
///
/// is less than zero.-or- The resulting number of bytes is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x0600382E RID: 14382 RVA: 0x000C1888 File Offset: 0x000BFA88
[CLSCompliant(false)]
[ComVisible(false)]
public unsafe override int GetByteCount(char* chars, int count)
{
return base.GetByteCount(chars, count);
}
/// Calculates the number of bytes produced by encoding the characters in the specified object.
/// The number of bytes produced by encoding the specified characters.
/// The object containing the set of characters to encode.
///
/// is null (Nothing).
/// The resulting number of bytes is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for fuller explanation)-and- is set to .
/// 1
// Token: 0x0600382F RID: 14383 RVA: 0x000C1894 File Offset: 0x000BFA94
[ComVisible(false)]
public override int GetByteCount(string s)
{
return base.GetByteCount(s);
}
/// Encodes a set of characters starting at the specified character pointer into a sequence of bytes that are stored starting at the specified byte pointer.
/// The actual number of bytes written at the location indicated by .
/// A pointer to the first character to encode.
/// The number of characters to encode.
/// A pointer to the location at which to start writing the resulting sequence of bytes.
/// The maximum number of bytes to write.
///
/// is null (Nothing).-or- is null (Nothing).
///
/// or is less than zero.
///
/// is less than the resulting number of bytes.
/// A fallback occurred (see Understanding Encodings for fuller explanation)-and- is set to .
/// 1
// Token: 0x06003830 RID: 14384 RVA: 0x000C18A0 File Offset: 0x000BFAA0
[ComVisible(false)]
[CLSCompliant(false)]
public unsafe override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount)
{
return base.GetBytes(chars, charCount, bytes, byteCount);
}
/// Encodes a set of characters from the specified into the specified byte array.
/// The actual number of bytes written into .
/// The containing the set of characters to encode.
/// The index of the first character to encode.
/// The number of characters to encode.
/// The byte array to contain the resulting sequence of bytes.
/// The index at which to start writing the resulting sequence of bytes.
///
/// is null (Nothing).-or- is null (Nothing).
///
/// or or is less than zero.-or- and do not denote a valid range in .-or- is not a valid index in .
///
/// does not have enough capacity from to the end of the array to accommodate the resulting bytes.
/// A fallback occurred (see Understanding Encodings for fuller explanation)-and- is set to .
/// 1
// Token: 0x06003831 RID: 14385 RVA: 0x000C18B0 File Offset: 0x000BFAB0
[ComVisible(false)]
public override int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex)
{
return base.GetBytes(s, charIndex, charCount, bytes, byteIndex);
}
/// Calculates the number of characters produced by decoding a sequence of bytes starting at the specified byte pointer.
/// The number of characters produced by decoding the specified sequence of bytes.
/// A pointer to the first byte to decode.
/// The number of bytes to decode.
///
/// is null (Nothing).
///
/// is less than zero.-or- The resulting number of characters is greater than the maximum number that can be returned as an int.
/// A fallback occurred (see Understanding Encodings for fuller explanation)-and- is set to .
/// 1
// Token: 0x06003832 RID: 14386 RVA: 0x000C18C0 File Offset: 0x000BFAC0
[CLSCompliant(false)]
[ComVisible(false)]
public unsafe override int GetCharCount(byte* bytes, int count)
{
return base.GetCharCount(bytes, count);
}
/// Decodes a sequence of bytes starting at the specified byte pointer into a set of characters that are stored starting at the specified character pointer.
/// The actual number of characters written at the location indicated by .
/// A pointer to the first byte to decode.
/// The number of bytes to decode.
/// A pointer to the location at which to start writing the resulting set of characters.
/// The maximum number of characters to write.
///
/// is null (Nothing).-or- is null (Nothing).
///
/// or is less than zero.
///
/// is less than the resulting number of characters.
/// A fallback occurred (see Understanding Encodings for complete explanation)-and- is set to .
/// 1
// Token: 0x06003833 RID: 14387 RVA: 0x000C18CC File Offset: 0x000BFACC
[CLSCompliant(false)]
[ComVisible(false)]
public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int charCount)
{
return base.GetChars(bytes, byteCount, chars, charCount);
}
/// Decodes a range of bytes from a byte array into a string.
/// A containing the results of decoding the specified sequence of bytes.
/// The byte array containing the sequence of bytes to decode.
/// The index of the first byte to decode.
/// The number of bytes to decode.
///
/// is null (Nothing).
///
/// or is less than zero.-or- and do not denote a valid range in .
/// A fallback occurred (see Understanding Encodings for fuller explanation)-and- is set to .
/// 1
// Token: 0x06003834 RID: 14388 RVA: 0x000C18DC File Offset: 0x000BFADC
[ComVisible(false)]
public override string GetString(byte[] bytes, int index, int count)
{
return base.GetString(bytes, index, count);
}
// Token: 0x040016C2 RID: 5826
internal const int UTF7_CODE_PAGE = 65000;
// Token: 0x040016C3 RID: 5827
private const string base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
// Token: 0x040016C4 RID: 5828
private bool allowOptionals;
// Token: 0x040016C5 RID: 5829
private static readonly byte[] encodingRules = new byte[]
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 2, 2, 2, 2, 2, 2, 1,
1, 1, 2, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 1, 2, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 0, 2, 2, 2, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 2, 2, 2, 0, 0
};
// Token: 0x040016C6 RID: 5830
private static readonly sbyte[] base64Values = new sbyte[]
{
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 62, -1, -1, -1, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, -1, -1,
-1, -1, -1, -1, -1, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, -1, -1, -1, -1, -1, -1, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1
};
// Token: 0x020005FF RID: 1535
private sealed class UTF7Decoder : Decoder
{
// Token: 0x06003835 RID: 14389 RVA: 0x000C18E8 File Offset: 0x000BFAE8
public UTF7Decoder()
{
this.leftOver = 0;
}
// Token: 0x06003836 RID: 14390 RVA: 0x000C18F8 File Offset: 0x000BFAF8
public override int GetCharCount(byte[] bytes, int index, int count)
{
return UTF7Encoding.InternalGetCharCount(bytes, index, count, this.leftOver);
}
// Token: 0x06003837 RID: 14391 RVA: 0x000C1908 File Offset: 0x000BFB08
public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
{
return UTF7Encoding.InternalGetChars(bytes, byteIndex, byteCount, chars, charIndex, ref this.leftOver);
}
// Token: 0x040016C7 RID: 5831
private int leftOver;
}
// Token: 0x02000600 RID: 1536
private sealed class UTF7Encoder : Encoder
{
// Token: 0x06003838 RID: 14392 RVA: 0x000C191C File Offset: 0x000BFB1C
public UTF7Encoder(bool allowOptionals)
{
this.allowOptionals = allowOptionals;
}
// Token: 0x06003839 RID: 14393 RVA: 0x000C192C File Offset: 0x000BFB2C
public override int GetByteCount(char[] chars, int index, int count, bool flush)
{
return UTF7Encoding.InternalGetByteCount(chars, index, count, flush, this.leftOver, this.isInShifted, this.allowOptionals);
}
// Token: 0x0600383A RID: 14394 RVA: 0x000C194C File Offset: 0x000BFB4C
public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush)
{
return UTF7Encoding.InternalGetBytes(chars, charIndex, charCount, bytes, byteIndex, flush, ref this.leftOver, ref this.isInShifted, this.allowOptionals);
}
// Token: 0x040016C8 RID: 5832
private bool allowOptionals;
// Token: 0x040016C9 RID: 5833
private int leftOver;
// Token: 0x040016CA RID: 5834
private bool isInShifted;
}
}
}