Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
        :meth:`~satcfe.base.FuncoesSAT.trocar_codigo_de_ativacao`.
969950
def trocar_codigo_de_ativacao(retorno):
        
        resposta = analisar_retorno(forcar_unicode(retorno),
                funcao='TrocarCodigoDeAtivacao')
        if resposta.EEEEE not in ('18000',):
            raise ExcecaoRespostaSAT(resposta)
        return resposta
1206899
def ler_configuracao
      #@artigo.merge!(YAML.load(ler_arquivo(Formatafacil::Tarefa.arquivo_configuracao)))
      #converte_parametros_para_boolean

      #@modelo = @artigo['modelo']
      if File.exist?(@arquivo_abstract) then
        @artigo['abstract'] = ler_arquivo(@arquivo_abstract)
        @artigo.merge!(ler_metadados_do_arquivo(@arquivo_abstract))
      end
      if File.exist?(@arquivo_resumo) then
        @artigo['resumo'] = ler_arquivo(@arquivo_resumo)
      end
      @artigo['bibliografia'] = ler_arquivo(@arquivo_bibliografia) if File.exist?(@arquivo_bibliografia)

      #unifica_metadados

    end
417572
def analisar(retorno):
        
        resposta = analisar_retorno(forcar_unicode(retorno),
                funcao='ConsultarStatusOperacional',
                classe_resposta=RespostaConsultarStatusOperacional,
                campos=RespostaSAT.CAMPOS + (
                        ('NSERIE', as_clean_unicode),
                        ('TIPO_LAN', as_clean_unicode),
                        ('LAN_IP', normalizar_ip),
                        ('LAN_MAC', unicode),
                        ('LAN_MASK', normalizar_ip),
                        ('LAN_GW', normalizar_ip),
                        ('LAN_DNS_1', normalizar_ip),
                        ('LAN_DNS_2', normalizar_ip),
                        ('STATUS_LAN', as_clean_unicode),
                        ('NIVEL_BATERIA', as_clean_unicode),
                        ('MT_TOTAL', as_clean_unicode),
                        ('MT_USADA', as_clean_unicode),
                        ('DH_ATUAL', as_datetime),
                        ('VER_SB', as_clean_unicode),
                        ('VER_LAYOUT', as_clean_unicode),
                        ('ULTIMO_CF_E_SAT', as_clean_unicode),
                        ('LISTA_INICIAL', as_clean_unicode),
                        ('LISTA_FINAL', as_clean_unicode),
                        ('DH_CFE', as_datetime_or_none),
                        ('DH_ULTIMA', as_datetime),
                        ('CERT_EMISSAO', as_date),
                        ('CERT_VENCIMENTO', as_date),
                        ('ESTADO_OPERACAO', int),
                    ),
                campos_alternativos=[
                        # se falhar resultarão apenas os 5 campos padrão
                        RespostaSAT.CAMPOS,
                    ]
            )
        if resposta.EEEEE not in ('10000',):
            raise ExcecaoRespostaSAT(resposta)
        return resposta
728125
function(input) {

			// Nos deshacemos del caracter final `:` para su validación

			var size = (input = _toString(input)).length;

			input = (input.substr(size-1, 1) === ':') ? input.substr(0, input.length-1) : input;

			// Si el protocolo es correcto añadimos `:` al final del mismo
			// si no lo es devolvemos una cadena vacía

			return Public.normalize.regex_rfc3986_schema.test((input = input.toLowerCase())) ? (input + ':') : '';

		}
928883
private function respaldarDocumentosEmitidos()
    {
        // obtener DTE emitidos en el Portal MIPYME del SII
        $this->log('Descargando documentos emitidos');
        $emitidos = $this->LibreDTE->post('/utilidades/sii/mipyme_dte_emitidos/'.$this->args['contribuyente'], [
            'auth'=>[
                'rut' => $this->args['usuario'],
                'clave' => $this->args['clave'],
            ],
        ]);
        if ($emitidos['status']['code']!=200) {
            $this->log(' [error] Al obtener DTE emitidos en Portal MIPYME del SII: '.$emitidos['body']);
            return;
        }
        file_put_contents($this->args['salida'].'/emitidos_'.$this->args['contribuyente'].'.json', json_encode($emitidos['body'], JSON_PRETTY_PRINT));
        // descargar PDF y XML de los documentos
        $n_docs = count($emitidos['body']);
        $i = 0;
        foreach ($emitidos['body'] as $doc) {
            $i++;
            $this->log('Descargando PDF y XML '.$this->num($i).'/'.$this->num($n_docs).' '.$doc['dte'].' #'.$doc['folio']);
            // descargar PDF
            $pdf = $this->LibreDTE->post('/utilidades/sii/mipyme_dte_emitido_pdf/'.$this->args['contribuyente'].'/'.$doc['codigo'], [
                'auth'=>[
                    'rut' => $this->args['usuario'],
                    'clave' => $this->args['clave'],
                ],
            ]);
            if ($pdf['status']['code']!=200) {
                $this->log(' [error] Al obtener el PDF '.$doc['codigo'].': '.$pdf['body']);
            } else {
                file_put_contents($this->args['salida'].'/emitidos/dte_'.$this->args['contribuyente'].'_T'.$this->getCodigoDTE($doc['dte']).'F'.$doc['folio'].'.pdf', $pdf['body']);
            }
            // descargar XML
            $xml = $this->LibreDTE->post('/utilidades/sii/mipyme_dte_emitido_xml/'.$this->args['contribuyente'].'/'.$this->getCodigoDTE($doc['dte']).'/'.$doc['folio'], [
                'auth'=>[
                    'rut' => $this->args['usuario'],
                    'clave' => $this->args['clave'],
                ],
            ]);
            if ($xml['status']['code']!=200) {
                $this->log(' [error] Al obtener el XML '.$doc['codigo'].': '.$xml['body']);
            } else {
                file_put_contents($this->args['salida'].'/emitidos/dte_'.$this->args['contribuyente'].'_T'.$this->getCodigoDTE($doc['dte']).'F'.$doc['folio'].'.xml', $xml['body']);
            }
        }
    }
372418
public function create()
    {
        $fs = new Filesystem();

        if (!$this->sourceDir) {
            throw new \Exception('O diretório de código fonte "singular.directory.src" da aplicação não foi definido!');
        }

        $migrationDir = $this->getMigrationDir();

        if (!$fs->exists($migrationDir)) {
            throw new \Exception(sprintf('O diretório de migration não existe!'));
        }

        $timestamp = time();

        $aplicacoes = $this->getAplicacoesToMigration();

        if (count($aplicacoes) > 0) {
            $template = file_get_contents(
                __DIR__.DIRECTORY_SEPARATOR."templates".DIRECTORY_SEPARATOR."app_migration.tpl"
            );

            $template = str_replace('$TIMESTAMP',$timestamp, $template);
            $template = str_replace('$APLICACOES', $this->arrayToString($aplicacoes, $timestamp) , $template);

            $dt = new \DateTime('now', new \DateTimeZone('UTC'));
            $date = $dt->format('YmdHis');

            file_put_contents($migrationDir.DIRECTORY_SEPARATOR.$date.'_insere_registros_aplicacoes_'.$timestamp.'.php', $template);
        }

        $modulos = $this->getModulosToMigration();

        if (count($modulos) > 0) {
            $template = file_get_contents(
                __DIR__.DIRECTORY_SEPARATOR."templates".DIRECTORY_SEPARATOR."mod_migration.tpl"
            );

            $template = str_replace('$TIMESTAMP',$timestamp, $template);
            $template = str_replace('$MODULOS', $this->arrayToString($modulos, $timestamp) , $template);

            sleep(1);

            $dt = new \DateTime('now', new \DateTimeZone('UTC'));
            $date = $dt->format('YmdHis');

            file_put_contents($migrationDir.DIRECTORY_SEPARATOR.$date.'_insere_registros_modulos_'.$timestamp.'.php', $template);
        }

        $this->clearMigrations();

        return count($modulos) + count($aplicacoes);
    }
101197
def AgregarRetencion(self, codigo_concepto, detalle_aclaratorio, 
                               base_calculo, alicuota, 
                               nro_certificado_retencion=None, 
                               fecha_certificado_retencion=None,
                               importe_certificado_retencion=None,
                               **kwargs):
        ""
        # limpio los campos opcionales:
        if fecha_certificado_retencion is not None and not fecha_certificado_retencion.strip():
            fecha_certificado_retencion = None
        if importe_certificado_retencion is not None and not float(importe_certificado_retencion):
            importe_certificado_retencion = None
        if nro_certificado_retencion is not None and not int(nro_certificado_retencion):
            nro_certificado_retencion = None
        self.retenciones.append(dict(
                                    retencion=dict(
                                        codigoConcepto=codigo_concepto,
                                        detalleAclaratorio=detalle_aclaratorio,
                                        baseCalculo=base_calculo,
                                        alicuota=alicuota,
                                        nroCertificadoRetencion=nro_certificado_retencion,
                                        fechaCertificadoRetencion=fecha_certificado_retencion,
                                        importeCertificadoRetencion=importe_certificado_retencion,
                                    ))
                            )
        return True
807940
def CrearAjusteCredito(self, 
               datos_adicionales=None,              # unificado, contrato, papel
               concepto_importe_iva_0=None,         # unificado, contrato, papel
               importe_ajustar_iva_0=None,          # unificado, contrato, papel
               concepto_importe_iva_105=None,       # unificado, contrato, papel
               importe_ajustar_iva_105=None,        # unificado, contrato, papel
               concepto_importe_iva_21=None,        # unificado, contrato, papel
               importe_ajustar_iva_21=None,         # unificado, contrato, papel
               diferencia_peso_neto=None,           # unificado
               diferencia_precio_operacion=None,    # unificado
               cod_grado=None,                      # unificado
               val_grado=None,                      # unificado  
               factor=None,                         # unificado
               diferencia_precio_flete_tn=None,     # unificado
               **kwargs
               ):
        ""

        self.ajuste['ajusteCredito'] = {
            'diferenciaPesoNeto': diferencia_peso_neto,
            'diferenciaPrecioOperacion': diferencia_precio_operacion,
            'codGrado': cod_grado,
            'valGrado': val_grado,
            'factor': factor,
            'diferenciaPrecioFleteTn': diferencia_precio_flete_tn,
            'datosAdicionales': datos_adicionales,
            'opcionales': None,
            'conceptoImporteIva0': concepto_importe_iva_0,
            'importeAjustarIva0': importe_ajustar_iva_0,
            'conceptoImporteIva105': concepto_importe_iva_105,
            'importeAjustarIva105': importe_ajustar_iva_105,
            'conceptoImporteIva21': concepto_importe_iva_21,
            'importeAjustarIva21': importe_ajustar_iva_21,
            'deducciones': [],
            'retenciones': [],
            'percepciones': [],
            'certificados': [],
            }
        # vinculación con AgregarOpcional:
        self.opcionales = self.ajuste['ajusteCredito']['opcionales']
        # vinculación con AgregarRetencion y AgregarDeduccion
        self.deducciones = self.ajuste['ajusteCredito']['deducciones']
        self.retenciones = self.ajuste['ajusteCredito']['retenciones']
        # para LSG:
        self.percepciones = self.ajuste['ajusteCredito']['percepciones']
        # para compatibilidad con AgregarCertificado (WSLPGv1.17)
        self.liquidacion = self.ajuste['ajusteCredito']
        return True
745119
def associar_assinatura(self, sequencia_cnpj, assinatura_ac):
        
        resp = self._http_post('associarassinatura',
                sequencia_cnpj=sequencia_cnpj, assinatura_ac=assinatura_ac)
        # (!) resposta baseada na redação com efeitos até 31-12-2016
        conteudo = resp.json()
        return RespostaSAT.associar_assinatura(conteudo.get('retorno'))
739149
def ConsultarPuntosVentas(self, sep="||"):
        ""
        ret = self.client.consultarPuntosVenta(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                            )['respuesta']
        self.__analizar_errores(ret)
        array = ret.get('puntoVenta', [])
        if sep is None:
            return dict([(it['codigo'], it['descripcion']) for it in array])
        else:
            return [("%s %%s %s %%s %s" % (sep, sep, sep)) %
                    (it['codigo'], it['descripcion']) for it in array]
164329
public function ___get($prop) {
        // retorna o valor da propriedade
        if (isset($this->meta[$prop])) {
            $metaData = (isset($this->meta[$prop])) ? $this->meta[$prop] : null;
            $this->data[$prop] = !isset($this->data[$prop]) || $this->data[$prop] == '' ? $metaData['default'] : $this->data[$prop];
            if ($metaData['required'] == true && ($this->data[$prop] == '' || !isset($this->data[$prop]))) {
                throw new Exception('Campo faltante ou com valor nulo:' . $prop . " Boleto Numero:" . $this->data['nosso_numero']);
            }
            switch ($metaData['tipo']) {
                case 'decimal':
                    $retorno = ($this->data[$prop]) ? number_format($this->data[$prop], $metaData['precision'], '', '') : '';
                    return str_pad($retorno, $metaData['tamanho'] + $metaData['precision'], '0', STR_PAD_LEFT);
                case 'int':
                    $retorno = (isset($this->data[$prop])) ? number_format($this->data[$prop], 0, '', '') : '';
                    return str_pad($retorno, $metaData['tamanho'], '0', STR_PAD_LEFT);
                case 'alfa':
                    $retorno = (isset($this->data[$prop])) ? $this->prepareText($this->data[$prop]) : '';
                    return $this->mb_str_pad(mb_substr($retorno, 0, $metaData['tamanho'], "UTF-8"), $metaData['tamanho'], ' ', STR_PAD_RIGHT);
                case 'alfa2':
                    $retorno = (isset($this->data[$prop])) ? $this->data[$prop] : '';
                    return $this->mb_str_pad(mb_substr($retorno, 0, $metaData['tamanho'], "UTF-8"), $metaData['tamanho'], ' ', STR_PAD_RIGHT);
                case $metaData['tipo'] == 'date' && $metaData['tamanho'] == 6:
                    $retorno = ($this->data[$prop]) ? date("dmy", strtotime($this->data[$prop])) : '';
                    return str_pad($retorno, $metaData['tamanho'], '0', STR_PAD_LEFT);
                case $metaData['tipo'] == 'date' && $metaData['tamanho'] == 8:
                    $retorno = ($this->data[$prop]) ? date("dmY", strtotime($this->data[$prop])) : '';
                    return str_pad($retorno, $metaData['tamanho'], '0', STR_PAD_LEFT);
                case $metaData['tipo'] == 'dateReverse':
                    $retorno = ($this->data[$prop]) ? date("Ymd", strtotime($this->data[$prop])) : '';
                    return str_pad($retorno, $metaData['tamanho'], '0', STR_PAD_LEFT);
                default:
                    return null;
            }
        }
    }
1338687
def consultar_sat(retorno):
        
        resposta = analisar_retorno(forcar_unicode(retorno),
                funcao='ConsultarSAT')
        if resposta.EEEEE not in ('08000',):
            raise ExcecaoRespostaSAT(resposta)
        return resposta
982727
public static function minifyCode(string $jsCode) : string
    {
        // Unifica marcações de nova linha.
        $inputCode = str_replace(["\r\n", "\r"], "\n", $jsCode);
        $outputCode = "";


        if (trim($inputCode) !== "") {
            // Caracteres que permite eliminar os espaços existentes ao seu redor
            $NonSpaceAround = [
                ":", ";", ",", "?", "<", ">",
                "{", "}", "(", ")", "=", "+", "-", "*",
                "/", "%", "&", "|", "!"
            ];



            // Para cada caracter existênte no código original...
            $codeLength = strlen($inputCode);
            $lastCodeIndex = $codeLength - 1;
            for ($i = 0; $i < $codeLength; $i++) {
                $CharType = "";


                // Resgata o caracter da posição atual E o próximo
                $c = $inputCode[$i];                                        // Caracter atual
                $nc = ($i < $lastCodeIndex) ? $inputCode[$i + 1] : "";      // Próximo caracter
                $lc = ($i > 0) ? $inputCode[$i - 1] : "";                   // Caracter anterior



                // Sendo um caracter sem representação gráfica...
                if ($c === "\n" || ord($c) < 32) {
                    $CharType = "NonVisible";
                } else {
                    // Conforme o caracter atual
                    switch ($c) {
                        // Verifica a abertura de blocos de comentário ou de um Regex
                        case "/":
                            $CharType = "IgnoreBlock";

                            // Se o próximo caracter for um espaço...
                            // infere que trata-se de uma barra de divisão
                            if ($nc === " ") {
                                $CharType = "";
                            } // Identifica início de uma linha de comentário
                            elseif ($nc === "/") {
                                // Resgata a posição do caracter imediatamente após do primeiro \n identificado
                                // após o início da linha de comentário.
                                $endBlock = strpos($inputCode, "\n", $i);
                                if ($endBlock !== false) {
                                    if ($endBlock < $lastCodeIndex) {
                                        $i = $endBlock;
                                    } else {
                                        $i = $lastCodeIndex;
                                    }
                                }
                            } // Ou o início de um bloco de comentário...
                            elseif ($nc === "*") {
                                // Resgata a posição do caracter */ encontrado a partir do início do bloco
                                // de comentário
                                $endBlock = strpos($inputCode, "*/", $i) + 1;
                                if ($endBlock !== false) {
                                    if ($endBlock < $lastCodeIndex) {
                                        $i = $endBlock;
                                    } else {
                                        $i = $lastCodeIndex;
                                    }
                                }
                            } // Senão, infere que é uma expressão regular.
                            else {
                                // @codeCoverageIgnoreStart
                                $endRegex = false;
                                $indexRegex = $i;


                                do {
                                    $endBlock = strpos($inputCode, "/", $indexRegex + 1);

                                    // Se não encontrar o final do regex, dispara exception
                                    if ($endBlock === false) {
                                        $msg = "The end of the regular expression was not found.";
                                        throw new \Exception($msg);
                                    } else {
                                        // Se o caracter anterior não for o caracter de "scape"
                                        // significa que a expressão regular terminou.
                                        if ($inputCode[$endBlock - 1] !== "\\") {
                                            $endRegex = true;
                                        } else {
                                            $indexRegex = $endBlock;
                                        }
                                    }
                                } while (!$endRegex);



                                if ($endBlock < $lastCodeIndex) {
                                    $outputCode .= substr($inputCode, $i, ($endBlock - $i + 1));
                                    $i = $endBlock;
                                } else {
                                    $i = $lastCodeIndex;
                                }
                                // @codeCoverageIgnoreEnd
                            }


                            break;

                        // Identifica a abertura de uma string envolvida por aspas simples ou duplas
                        case "'":
                        case "\"":
                            $CharType = "IgnoreBlock";
                            $quote = $c;
                        
                            // Se o próximo caracter for o fechamento da própria string
                            // sendo portanto uma string vazia...
                            if ($nc === $quote) {
                                $outputCode .= $quote . $quote;
                                $i++;
                            } else {
                                // Resgata a string que está envolvida pelas aspas
                                $quotedString = "";
                                for ($np = ($i + 1); $np < $codeLength; $np++) {
                                    $_c = $inputCode[$np];

                                    // Encontrando a próxima aspas...
                                    if ($_c === $quote) {
                                        // Identifica se a aspa está "escapada"
                                        $_scaped = ($inputCode[$np - 1] === "\\" && $inputCode[$np - 2] !== "\\");


                                        // Se a aspa não está "escapada", encerra o loop
                                        if ($_scaped === false) {
                                            break;
                                        }
                                    }

                                    $quotedString .= $_c;
                                }


                                $outputCode .= $quote . str_replace("\\\n", "", $quotedString) . $quote;
                                $i = $np;
                            }

                            break;
                    }
                }




                switch ($CharType) {
                    case "IgnoreBlock":
                        break;

                    case "NonVisible":
                        $outputCode .= "";
                        break;

                    default:
                        // Identifica se o espaço vazio deve ser mantido ou não...
                        if ($c === " ") {
                            // Se o próximo caracter é um espaço em branco... ignora este.
                            if ($nc === " ") {
                                $c = "";
                            } else {
                                if ($outputCode !== "") {
                                    $lvc = $outputCode[strlen($outputCode) - 1];
                                    if (in_array($lvc, $NonSpaceAround) === true || in_array($nc, $NonSpaceAround) === true) {
                                        $c = "";
                                    }
                                }
                            }
                        }

                        $outputCode .= $c;

                        break;
                }
            }
        }



        return trim($outputCode);
    }
62469
def analisar(retorno):
        
        resposta = analisar_retorno(forcar_unicode(retorno),
                funcao='EnviarDadosVenda',
                classe_resposta=RespostaCancelarUltimaVenda,
                campos=(
                        ('numeroSessao', int),
                        ('EEEEE', unicode),
                        ('CCCC', unicode),
                        ('mensagem', unicode),
                        ('cod', unicode),
                        ('mensagemSEFAZ', unicode),
                        ('arquivoCFeBase64', unicode),
                        ('timeStamp', as_datetime),
                        ('chaveConsulta', unicode),
                        ('valorTotalCFe', Decimal),
                        ('CPFCNPJValue', unicode),
                        ('assinaturaQRCODE', unicode),
                    ),
                campos_alternativos=[
                        # se a venda falhar apenas os primeiros seis campos
                        # especificados na ER deverão ser retornados...
                        (
                                ('numeroSessao', int),
                                ('EEEEE', unicode),
                                ('CCCC', unicode),
                                ('mensagem', unicode),
                                ('cod', unicode),
                                ('mensagemSEFAZ', unicode),
                        ),
                        # por via das dúvidas, considera o padrão de campos,
                        # caso não haja nenhuma coincidência...
                        RespostaSAT.CAMPOS,
                    ]
            )
        if resposta.EEEEE not in ('07000',):
            raise ExcecaoRespostaSAT(resposta)
        return resposta
1374235
def norm(x, encoding="latin1"):
    ""
    if not isinstance(x, basestring):
        x = unicode(x)
    elif isinstance(x, str):
        x = x.decode(encoding, 'ignore')
    return unicodedata.normalize('NFKD', x).encode('ASCII', 'ignore')
1122125
def desbloquear_sat(retorno):
        
        resposta = analisar_retorno(forcar_unicode(retorno),
                funcao='DesbloquearSAT')
        if resposta.EEEEE not in ('17000',):
            raise ExcecaoRespostaSAT(resposta)
        return resposta
1365347
def configuracoes_to_request
      configuracoes = {
        codigo_estabelecimento:   self.estabelecimento.to_i,
        url_campainha:            self.url_campainha.to_s,
        idioma:                   self.idiomas_to_request,
        origem_transacao:         self.origem_da_transacao_to_request,
      }
      return configuracoes
    end