public HardLock str2Hardlock(string str)
        {
            int pos = 0;
            int dia, mes, ano, hor;

            HardLockBuilder hlb = new HardLockBuilder()
                .withVersaHardLock(Convert.ToInt32(str.Substring(pos, TAMANHO_NUMERO).Trim())); //[01]

            pos += TAMANHO_NUMERO;

            hlb = hlb.withNCanais(Convert.ToInt32(str.Substring(pos, TAMANHO_NUMERO).Trim()));  //[04]

            pos += TAMANHO_NUMERO;

            DateTime? validade = null;
            char ch = str.ToCharArray(pos, 1)[0];
            if (ch != '0')
            {
                dia = Convert.ToInt32(str.ToCharArray(pos++, 1)[0]);        //[07]
                mes = Convert.ToInt32(str.ToCharArray(pos++, 1)[0]);        //[08]
                ano = 2000 + Convert.ToInt32(str.ToCharArray(pos++, 1)[0]); //[09]
                DateTime dt = new DateTime(ano, mes, dia, 23, 59, 59);
                validade = dt;

                if (DateTime.Now.CompareTo(validade.Value) > 0)
                {
                    hlb = hlb.invalido();
                }
            }
            else
            {
                pos += 3; //[07][08][09]
            }

            hlb = hlb.withValidade(validade);

            hlb = hlb.withVMajor(Convert.ToInt32(str.Substring(pos, TAMANHO_NUMERO).Trim()));      //[10]
            pos += TAMANHO_NUMERO;
            hlb = hlb.withVMinor(Convert.ToInt32(str.Substring(pos, TAMANHO_NUMERO).Trim()));      //[13]
            pos += TAMANHO_NUMERO;
            hlb = hlb.withNUsers(Convert.ToInt32(str.Substring(pos, TAMANHO_NUMERO).Trim()));      //[16]
            pos += TAMANHO_NUMERO;

            hlb = hlb.withVoiceMail(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)//[19]
                .withFaxMail(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)       //[20]
                .withCampanha(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)      //[21]
                .withXFace(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)         //[22]
                .withBroadcast(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)     //[23]
                .withRobot(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)         //[24]
                .withSpeech(str.ToCharArray(pos++, 1)[0] == '1' ? true : false)        //[25]
                .withTextToSpeech(str.ToCharArray(pos++, 1)[0] == '1' ? true : false); //[26]

            dia = Convert.ToInt32(str.ToCharArray(pos++, 1)[0]);        //[27]
            mes = Convert.ToInt32(str.ToCharArray(pos++, 1)[0]);        //[28]
            ano = 2000 + Convert.ToInt32(str.ToCharArray(pos++, 1)[0]); //[29]
            hor = Convert.ToInt32(str.ToCharArray(pos++, 1)[0]);        //[30]

            DateTime controle = new DateTime(ano, mes, dia, hor, 0, 0);

            HardLock hl = hlb.withDTControle(controle).build();
            return hl;
        }