//Packets

		#region IPacketLib Members

		public virtual void SendVersionAndCryptKey()
		{
			//Construct the new packet
			using (var pak = new GSTCPPacketOut(GetPacketCode(eServerPackets.CryptKey)))
			{
				//Enable encryption
				#if !NOENCRYPTION
				pak.WriteByte(0x01);
				#else
				pak.WriteByte(0x00);
				#endif

				//if(is_si)
				pak.WriteByte(0x32);
				//else
				//	pak.WriteByte(0x31);
				pak.WriteByte(ParseVersion((int) m_gameClient.Version, true));
				pak.WriteByte(ParseVersion((int) m_gameClient.Version, false));
				//pak.WriteByte(build);
				pak.WriteByte(0x00);

				#if !NOENCRYPTION
				byte[] publicKey = new byte[500];
				UInt32 keyLen = CryptLib168.ExportRSAKey(publicKey, (UInt32) 500, false);
				pak.WriteShort((ushort) keyLen);
				pak.Write(publicKey, 0, (int) keyLen);
				//From now on we expect RSA!
				((PacketEncoding168) m_gameClient.PacketProcessor.Encoding).EncryptionState = PacketEncoding168.eEncryptionState.RSAEncrypted;
				#endif

				SendTCP(pak);
			}
		}