[
    {
        "id": 42628,
        "label": "Nome do app",
        "name": "APP_NAME",
        "value": "CONEXÃO 5G",
        "type": "STRING",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42629,
        "label": "Logo do app",
        "name": "APP_LOGO",
        "value": "https://i.ibb.co/JpcYS0v/DTpmcj62l7.png",
        "type": "IMAGE",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42630,
        "label": "Imagem de fundo",
        "name": "APP_BACKGROUND_IMAGE",
        "value": null,
        "type": "IMAGE",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42631,
        "label": "Tipo do fundo do app",
        "name": "APP_BACKGROUND_TYPE",
        "value": {
            "options": [
                {
                    "label": "Imagem",
                    "value": "IMAGE"
                },
                {
                    "label": "Cor",
                    "value": "COLOR"
                }
            ],
            "selected": "COLOR"
        },
        "type": "SELECT",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42632,
        "label": "Cor de fundo",
        "name": "APP_BACKGROUND_COLOR",
        "value": "#080e16c7",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42633,
        "label": "Cor do card inicial",
        "name": "APP_CARD_COLOR",
        "value": "#1d242e73",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42634,
        "label": "Raio do card inicial",
        "name": "APP_CARD_RADIUS",
        "value": 20,
        "type": "INTEGER",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42635,
        "label": "Cor do card de status",
        "name": "APP_CARD_STATUS_COLOR",
        "value": "#1d242e73",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42636,
        "label": "Raio do card de status",
        "name": "APP_CARD_STATUS_RADIUS",
        "value": 25,
        "type": "INTEGER",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42637,
        "label": "Cor do card de configurações",
        "name": "APP_CARD_CONFIG_COLOR",
        "value": "#0E171EC9",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42638,
        "label": "Cor do fundo dos dialogs",
        "name": "APP_DIALOG_BACKGROUND_COLOR",
        "value": "#050C5AE4",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42639,
        "label": "Cor do fundo do dialog de log",
        "name": "APP_DIALOG_LOGGER_COLOR",
        "value": "#080e16c7",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42640,
        "label": "Cor das bordas",
        "name": "APP_BORDER_COLOR",
        "value": "#1d242e73",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42641,
        "label": "Cor dos inputs",
        "name": "APP_INPUT_COLOR",
        "value": "#1d242e73",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42642,
        "label": "Raio dos inputs",
        "name": "APP_INPUT_RADIUS",
        "value": 25,
        "type": "INTEGER",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42643,
        "label": "Cor dos textos",
        "name": "APP_TEXT_COLOR",
        "value": "#FFFFFFFF",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42644,
        "label": "Cor dos botões",
        "name": "APP_BUTTON_COLOR",
        "value": "#1d242e73",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42645,
        "label": "Raio dos botões",
        "name": "APP_BUTTON_RADIUS",
        "value": 25,
        "type": "INTEGER",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42646,
        "label": "Cor dos icones",
        "name": "APP_ICON_COLOR",
        "value": "#FFFFFFFF",
        "type": "COLOR",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42647,
        "label": "Exibir modo de conexão",
        "name": "APP_SHOW_CONNECTION_MODE",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42648,
        "label": "Atualizar automaticamente as configurações ao lançar uma atualização.",
        "name": "APP_CONFIG_AUTO_UPDATE",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42649,
        "label": "Iniciar o app automaticamente ao reiniciar o dispositivo",
        "name": "APP_AUTO_START",
        "value": false,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42650,
        "label": "Usar limiter de conexão",
        "name": "APP_CONNECTION_LIMITER",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42651,
        "label": "Usar botão de atualizações",
        "name": "APP_BTN_UPDATE_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42652,
        "label": "Usar botão de registros",
        "name": "APP_BTN_LOGGER_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42653,
        "label": "Usar botão de pagina webview",
        "name": "APP_BTN_PAGE_ENABLED",
        "value": false,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42654,
        "label": "Ativar dialog de erros",
        "name": "APP_DIALOG_ERROR_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42655,
        "label": "Ativar dialog de checkuser",
        "name": "APP_CHECKUSER_DIALOG_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42656,
        "label": "Ativar toast de sucesso",
        "name": "APP_SUCCESS_TOAST_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42657,
        "label": "Ativar toast de erro",
        "name": "APP_ERROR_TOAST_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42658,
        "label": "Usar layout webview",
        "name": "APP_LAYOUT_WEBVIEW_ENABLED",
        "value": true,
        "type": "BOOLEAN",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42659,
        "label": "Mensagem",
        "name": "APP_MESSAGE",
        "value": "Seja muito Bem Vindo(a)\nIndique 3 amigos e ganhe 1 mês Grátis. ",
        "type": "TEXT",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42660,
        "label": "URL de atualização do aplicativo",
        "name": "APP_UPDATE_URL",
        "value": null,
        "type": "URL",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42661,
        "label": "Tipo de mensagem",
        "name": "APP_MESSAGE_TYPE",
        "value": {
            "options": [
                {
                    "label": "Alerta",
                    "value": "ALERT"
                },
                {
                    "label": "Informação",
                    "value": "INFO"
                },
                {
                    "label": "Boas vindas",
                    "value": "WELCOME"
                },
                {
                    "label": "Sem mensagem",
                    "value": "NONE"
                }
            ],
            "selected": "WELCOME"
        },
        "type": "SELECT",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42662,
        "label": "LAYOUT WEBVIEW (POR SUA CONTA E RISCO)",
        "name": "APP_LAYOUT_WEBVIEW",
        "value": "<!DOCTYPE html>\n<html lang=\"pt-BR\">\n\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n  <title>950052683 - @TakumaNET | @alexdsgmoura</title>\n\n  <style>\n    :root {\n      font-family: system-ui, Helvetica, Arial, sans-serif;\n      line-height: 1.5;\n      font-weight: 400;\n      font-synthesis: none;\n      text-rendering: optimizeLegibility;\n      -webkit-font-smoothing: antialiased;\n      -moz-osx-font-smoothing: grayscale;\n      text-size-adjust: 100%;\n      -webkit-text-size-adjust: 100%;\n\n      --space-status-bar: 10px;\n      --space-nav-bar: 33px;\n\n      --background-geral-container: #ecf0f3;\n    }\n\n    *,\n    *::before,\n    *::after {\n      margin: 0;\n      padding: 0;\n\n      box-sizing: border-box;\n    }\n\n    html,\n    body,\n    main {\n      width: 100%;\n      height: 100%;\n    }\n\n    main {\n      display: flex;\n      flex-direction: column;\n\n      position: relative;\n\n      overflow: hidden;\n    }\n\n    section.home {\n      width: 100%;\n      height: 100%;\n\n      display: flex;\n      flex-direction: column;\n      gap: 1rem;\n\n      padding: var(--space-status-bar) 10px var(--space-nav-bar) 10px;\n\n      background: var(--background-geral-container);\n    }\n\n    section.home div.logo {\n      width: 100%;\n      height: 20%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n    }\n\n    section.home div.logo img {\n      height: 80%;\n    }\n\n    section.home div.container-status-update-tools {\n      width: 100%;\n      height: 6%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n    }\n\n    section.home div.container-status-update-tools div.status {\n      flex: 1;\n      height: 100%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      border-radius: 5px;\n    }\n\n    section.home div.container-status-update-tools div.status span {\n      position: absolute;\n      left: 50%;\n      transform: translateX(-50%);\n\n      color: #000000;\n      font-size: 0.8rem;\n    }\n\n    section.home div.container-status-update-tools div.update-and-tools {\n      height: 100%;\n\n      display: flex;\n      justify-content: center;\n      gap: 2px;\n\n      margin-left: 2px;\n    }\n\n    section.home div.container-status-update-tools div.update-and-tools button {\n      width: 40px;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      border: 0;\n      border-radius: 5px;\n\n      background: transparent;\n    }\n\n    section.home div.container-status-update-tools div.update-and-tools button svg {\n      width: 20px;\n      height: 20px;\n\n      color: #000000;\n    }\n\n    section.home div.carrier-selector-button {\n      width: 100%;\n      height: 5%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      overflow: hidden;\n\n      border-radius: 5px;\n      box-shadow:\n        0 0 2px rgba(0, 0, 0, 0.2),\n        0 0 2px rgba(0, 0, 0, 0.2) inset,\n        2px 0 2px rgba(0, 0, 0, 0.2),\n        -2px 0 2px rgba(0, 0, 0, 0.2);\n    }\n\n    section.home div.carrier-selector-button button {\n      width: 100%;\n      height: 100%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      border: 0;\n\n      background: linear-gradient(#f0f0f0, #e0e0e0);\n    }\n\n    section.home div.carrier-selector-button button:hover {\n      background: linear-gradient(#e0e0e0, #f0f0f0);\n    }\n\n    section.home div.carrier-selector-button button span {\n      font-weight: bold;\n    }\n\n    section.home div.container-form {\n      width: 100%;\n      height: 10%;\n\n      display: grid;\n      justify-items: center;\n      grid-template-columns: repeat(2, 1fr);\n      gap: 5px;\n    }\n\n    section.home div.container-form span {\n      text-align: center;\n    }\n\n    section.home div.container-form span,\n    section.home div.container-form input {\n      width: 95%;\n\n      font-size: 0.8rem;\n    }\n\n    section.home div.container-form input {\n      padding: 0 5%;\n\n      border: 0;\n      border-radius: 9999999px;\n      box-shadow:\n        0 0 2px rgba(0, 0, 0, 0.2),\n        0 0 2px rgba(0, 0, 0, 0.2) inset,\n        2px 0 2px rgba(0, 0, 0, 0.2),\n        -2px 0 2px rgba(0, 0, 0, 0.2);\n\n      outline: none;\n\n      background: linear-gradient(to right, #ddd, #fff, #ddd);\n    }\n\n    section.home div.container-form input::placeholder {\n      font-weight: bold;\n      font-size: 0.7rem;\n      text-align: center;\n    }\n\n    section.home div.container-button-connection {\n      width: 100%;\n      height: 20%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      position: relative;\n    }\n\n    section.home div.container-button-connection button {\n      width: 90px;\n      height: 90px;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      position: absolute;\n      z-index: 2;\n\n      border: 0;\n      border-radius: 999999px;\n      box-shadow:\n        0 0 2px rgba(0, 0, 0, 0.2),\n        0 0 2px rgba(0, 0, 0, 0.2) inset,\n        2px 0 2px rgba(0, 0, 0, 0.2),\n        -2px 0 2px rgba(0, 0, 0, 0.2);\n\n      background: #F8F8F8;\n    }\n\n    section.home div.container-button-connection button svg {\n      width: 50%;\n      height: auto;\n\n      color: #000000;\n    }\n\n    section.home div.container-button-connection div.border-button {\n      width: 120px;\n      height: 120px;\n\n      border: 1px solid #CCCCCC;\n      border-radius: 999999px;\n\n      background: linear-gradient(to bottom right, #FFFFFF, #c1c5c8);\n\n      position: absolute;\n    }\n\n    section.home div.container-button-connection div.border-button-status {\n      width: 105px;\n      height: 105px;\n\n      position: absolute;\n      z-index: 1;\n\n      border: 0;\n      border-radius: 999999px;\n      box-shadow:\n        0 0 5px rgba(255, 255, 255, 0.5), 0 0 5px rgba(255, 255, 255, 0.5) inset, 2.5px 0 5px rgba(255, 255, 255, 0.5), -2.5px 0 5px rgba(255, 255, 255, 0.5);\n\n      background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7));\n\n      animation: rotateAndScaleAnimation 2s linear infinite;\n    }\n\n    @keyframes rotateAndScaleAnimation {\n      0% {\n        transform: rotate(0deg) scale(0.8);\n      }\n\n      50% {\n        transform: rotate(180deg) scale(1);\n      }\n\n      100% {\n        transform: rotate(360deg) scale(0.8);\n      }\n    }\n\n    section.home div.container-logs {\n      width: 100%;\n      height: 26%;\n\n      margin: auto 0 0 0;\n\n      overflow: auto;\n      scrollbar-width: thin;\n      scrollbar-color: transparent transparent;\n    }\n\n    section.home div.container-logs p {\n      font-size: 0.7rem;\n    }\n\n    section.tools {\n      width: 100%;\n      min-width: 100%;\n      height: 100%;\n\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n\n      position: absolute;\n      top: 0;\n      left: 0;\n      z-index: 999999;\n\n      padding: var(--space-status-bar) 0px var(--space-nav-bar) 0px;\n\n      opacity: 0;\n\n      transform: translateX(-100%);\n      transition: opacity 0.3s ease, transform 0.3s ease;\n\n      background: var(--background-geral-container);\n    }\n\n    section.tools header {\n      width: 100%;\n      height: 10%;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n\n      padding: 0 6%;\n    }\n\n    section.tools header svg {\n      margin-left: 1%;\n      stroke: #000000;\n      stroke-width: 1px;\n\n      color: #000000;\n    }\n\n    section.tools header h1 {\n      margin-left: auto;\n      margin-right: auto;\n\n      color: #000000;\n      font-weight: 600;\n      font-size: 1rem;\n    }\n\n    section.tools section {\n      width: 100%;\n      height: 90%;\n      max-height: 90%;\n\n      overflow: auto;\n    }\n\n    section.tools section button:first-child {\n      margin-top: 0;\n    }\n\n    section.tools section button {\n      width: 90%;\n      height: 50px;\n\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      gap: 0.7rem;\n\n      margin: 0.8rem auto;\n      padding: 0 15px 0 0;\n\n      border: 1px solid #CCCCCC;\n      border-radius: 999999px;\n\n      background: linear-gradient(to bottom right, #FFFFFF, #c1c5c8);\n    }\n\n    section.tools section button svg {\n      margin: 0 0 0 15px;\n    }\n\n    section.tools section button span {\n      margin: 0 auto 0 auto;\n      font-size: 0.7rem;\n    }\n\n    section.active {\n      opacity: 1;\n      transform: translateX(0%);\n    }\n\n    .display-none {\n      display: none !important;\n    }\n  </style>\n</head>\n\n<body>\n  <main>\n    <section class=\"home\">\n      <div class=\"logo\">\n        <img id=\"appLogo\"\n          src=\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg id='Camada_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1716.42 1980'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23181e28;%7D%3C/style%3E%3C/defs%3E%3Ccircle class='cls-1' cx='1057.33' cy='550.91' r='184.76'/%3E%3Ccircle class='cls-1' cx='872.57' cy='223.85' r='87.9'/%3E%3Ccircle class='cls-1' cx='1538.85' cy='177.05' r='136.17'/%3E%3Ccircle class='cls-1' cx='1404.2' cy='520.67' r='79.58'/%3E%3Ccircle class='cls-1' cx='1296.19' cy='311.76' r='54.11'/%3E%3Ccircle class='cls-1' cx='1641.61' cy='530.21' r='74.81' transform='translate(105.9 1316.09) rotate(-45)'/%3E%3Ccircle class='cls-1' cx='1158.1' cy='111.93' r='111.93'/%3E%3Cpath class='cls-1' d='m674.46,1112.51c-63.14,0-116.97,22.25-161.47,66.76-44.51,44.51-66.76,98.33-66.76,161.47s22.25,116.96,66.76,161.47c44.5,44.51,98.33,66.76,161.47,66.76s116.97-22.26,161.47-66.76,66.76-98.32,66.76-161.47-22.25-116.97-66.76-161.47c-44.51-44.51-98.33-66.76-161.47-66.76h0Z'/%3E%3Cpath class='cls-1' d='m1540.25,817.48c-3.68-67.8-49.93-125.62-115.9-141.74-66.91-16.34-128.74,10.78-163.9,58.74-5.5,7.51-11.58,20.08-16.36,30.99-11.12,25.39-30.8,46.39-55.97,58.01-29.76,13.74-71.41,21.74-130.8,21.74-243.42,0-281.3-199.46-281.3-347.14,0-65.95-54.12-119.25-120.37-117.93-57.38,1.15-106.55,45.07-114.42,101.92-.06.43-.12.85-.17,1.28-4.72,37.02-25.4,70.08-57.71,88.73l-356.15,205.63C48.49,823.15,0,907.14,0,998.03v485.04c0,90.89,48.49,174.88,127.2,220.32l420.06,242.52c78.71,45.45,175.69,45.45,254.41,0l420.06-242.52c78.71-45.45,127.2-129.43,127.2-220.32,0,0-.06-73.37-.17-164.26-.18-148.86,59.84-289.13,158.26-400.82,23.93-27.16,35.32-61.98,33.23-100.52h0Zm-583.35,805.7c-77.98,77.98-172.13,116.97-282.44,116.97s-204.46-38.99-282.43-116.97c-77.98-77.97-116.97-172.12-116.97-282.43v-570.58h171.17v241.92c66.19-47.16,142.26-70.75,228.23-70.75,110.31,0,204.46,38.99,282.44,116.97,77.97,77.98,116.97,172.13,116.97,282.44s-38.99,204.46-116.97,282.43Z'/%3E%3C/svg%3E\"\n          alt=\"logo\">\n      </div>\n\n      <div class=\"container-status-update-tools\">\n        <div class=\"status\">\n          <span id=\"vpnStatusValue\">DESCONECTADO</span>\n        </div>\n\n        <div class=\"update-and-tools\">\n          <button type=\"button\" title=\"update\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\"\n              class=\"bi bi-arrow-clockwise\" viewBox=\"0 0 16 16\">\n              <path fill-rule=\"evenodd\" d=\"M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z\" />\n              <path\n                d=\"M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z\" />\n            </svg>\n          </button>\n\n          <button type=\"button\" title=\"tools\">\n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"none\" viewBox=\"0 0 24 24\"\n              stroke-width=\"1\" stroke=\"currentColor\" class=\"w-6 h-6\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n                d=\"M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 11-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 004.486-6.336l-3.276 3.277a3.004 3.004 0 01-2.25-2.25l3.276-3.276a4.5 4.5 0 00-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437l1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008z\" />\n            </svg>\n          </button>\n        </div>\n      </div>\n\n      <div class=\"carrier-selector-button\" id=\"carrierSelector\">\n        <button type=\"button\" title=\"selecione uma configuração\">\n          <span id=\"carrierSelectorValue\">SELECIONE O SERVIDOR</span>\n        </button>\n      </div>\n\n      <div class=\"container-form\">\n        <span>USUÁRIO</span>\n        <span>SENHA</span>\n\n        <input id=\"inputUser\" type=\"text\" placeholder=\"USUÁRIO\">\n        <input id=\"inputPassword\" type=\"password\" placeholder=\"SENHA\">\n      </div>\n\n      <div class=\"container-button-connection\">\n        <button id=\"StartVpnButton\" type=\"button\" title=\"Iniciar ou parar conexão\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n            stroke=\"currentColor\" class=\"w-6 h-6\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.636 5.636a9 9 0 1012.728 0M12 3v9\" />\n          </svg>\n        </button>\n\n        <div class=\"border-button-status\"></div>\n        <div class=\"border-button\"></div>\n      </div>\n\n      <div class=\"container-logs display-none\">\n        <p id=\"logs-value\"></p>\n      </div>\n    </section>\n\n    <section class=\"tools\">\n      <header>\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" id=\"backContainerTools\"\n          class=\"bi bi-chevron-left\" viewBox=\"0 0 16 16\">\n          <path fill-rule=\"evenodd\"\n            d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\" />\n        </svg>\n\n        <h1>FERRAMENTAS</h1>\n      </header>\n\n      <section>\n        <button type=\"button\" title=\"Hotspot\" id=\"hotspotButton\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-router\"\n            viewBox=\"0 0 16 16\">\n            <path\n              d=\"M5.525 3.025a3.5 3.5 0 0 1 4.95 0 .5.5 0 1 0 .707-.707 4.5 4.5 0 0 0-6.364 0 .5.5 0 0 0 .707.707Z\" />\n            <path\n              d=\"M6.94 4.44a1.5 1.5 0 0 1 2.12 0 .5.5 0 0 0 .708-.708 2.5 2.5 0 0 0-3.536 0 .5.5 0 0 0 .707.707ZM2.5 11a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1Zm4.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0Zm2.5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1Zm1.5-.5a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0Zm2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0Z\" />\n            <path\n              d=\"M2.974 2.342a.5.5 0 1 0-.948.316L3.806 8H1.5A1.5 1.5 0 0 0 0 9.5v2A1.5 1.5 0 0 0 1.5 13H2a.5.5 0 0 0 .5.5h2A.5.5 0 0 0 5 13h6a.5.5 0 0 0 .5.5h2a.5.5 0 0 0 .5-.5h.5a1.5 1.5 0 0 0 1.5-1.5v-2A1.5 1.5 0 0 0 14.5 8h-2.306l1.78-5.342a.5.5 0 1 0-.948-.316L11.14 8H4.86L2.974 2.342ZM14.5 9a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h13Z\" />\n            <path d=\"M8.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z\" />\n          </svg>\n\n          <span id=\"hotspotValue\">LIGAR HOTSPOT</span>\n        </button>\n\n        <button type=\"button\" title=\"Informações do usuário\" id=\"checkUser\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-calendar-week\"\n            viewBox=\"0 0 16 16\">\n            <path\n              d=\"M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z\" />\n            <path\n              d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\" />\n          </svg>\n\n          <span>INFORMAÇÕES DO USUÁRIO</span>\n        </button>\n\n        <button type=\"button\" title=\"Limpar Dados\" id=\"cleanData\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash\"\n            viewBox=\"0 0 16 16\">\n            <path\n              d=\"M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z\" />\n            <path\n              d=\"M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z\" />\n          </svg>\n\n          <span>LIMPAR DADOS DO APP</span>\n        </button>\n\n        <button type=\"button\" title=\"Desativar otimização de bateria\" id=\"batteryDisableOptimizationD\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-battery-half\"\n            viewBox=\"0 0 16 16\">\n            <path d=\"M2 6h5v4H2V6z\" />\n            <path\n              d=\"M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h10zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z\" />\n          </svg>\n\n          <span>DESATIVAR OTIMIZAÇÃO DE BATERIA</span>\n        </button>\n\n        <button type=\"button\" title=\"Configurar apn\" id=\"accessPointOpenSettings\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\"\n            class=\"bi bi-wrench-adjustable\" viewBox=\"0 0 16 16\">\n            <path d=\"M16 4.5a4.492 4.492 0 0 1-1.703 3.526L13 5l2.959-1.11c.027.2.041.403.041.61Z\" />\n            <path\n              d=\"M11.5 9c.653 0 1.273-.139 1.833-.39L12 5.5 11 3l3.826-1.53A4.5 4.5 0 0 0 7.29 6.092l-6.116 5.096a2.583 2.583 0 1 0 3.638 3.638L9.908 8.71A4.49 4.49 0 0 0 11.5 9Zm-1.292-4.361-.596.893.809-.27a.25.25 0 0 1 .287.377l-.596.893.809-.27.158.475-1.5.5a.25.25 0 0 1-.287-.376l.596-.893-.809.27a.25.25 0 0 1-.287-.377l.596-.893-.809.27-.158-.475 1.5-.5a.25.25 0 0 1 .287.376ZM3 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\" />\n          </svg>\n\n          <span>CONFIGURAR APN</span>\n        </button>\n\n        <button type=\"button\" title=\"Renovar acesso\" id=\"renewAccess\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\"\n            class=\"bi bi-currency-dollar\" viewBox=\"0 0 16 16\">\n            <path\n              d=\"M4 10.781c.148 1.667 1.513 2.85 3.591 3.003V15h1.043v-1.216c2.27-.179 3.678-1.438 3.678-3.3 0-1.59-.947-2.51-2.956-3.028l-.722-.187V3.467c1.122.11 1.879.714 2.07 1.616h1.47c-.166-1.6-1.54-2.748-3.54-2.875V1H7.591v1.233c-1.939.23-3.27 1.472-3.27 3.156 0 1.454.966 2.483 2.661 2.917l.61.162v4.031c-1.149-.17-1.94-.8-2.131-1.718H4zm3.391-3.836c-1.043-.263-1.6-.825-1.6-1.616 0-.944.704-1.641 1.8-1.828v3.495l-.2-.05zm1.591 1.872c1.287.323 1.852.859 1.852 1.769 0 1.097-.826 1.828-2.2 1.939V8.73l.348.086z\" />\n          </svg>\n\n          <span>RENOVAR ACESSO</span>\n        </button>\n\n        <button type=\"button\" title=\"Testar IPTV\" id=\"openLinkIptvGenerateTest\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-tv\"\n            viewBox=\"0 0 16 16\">\n            <path\n              d=\"M2.5 13.5A.5.5 0 0 1 3 13h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zM13.991 3l.024.001a1.46 1.46 0 0 1 .538.143.757.757 0 0 1 .302.254c.067.1.145.277.145.602v5.991l-.001.024a1.464 1.464 0 0 1-.143.538.758.758 0 0 1-.254.302c-.1.067-.277.145-.602.145H2.009l-.024-.001a1.464 1.464 0 0 1-.538-.143.758.758 0 0 1-.302-.254C1.078 10.502 1 10.325 1 10V4.009l.001-.024a1.46 1.46 0 0 1 .143-.538.758.758 0 0 1 .254-.302C1.498 3.078 1.675 3 2 3h11.991zM14 2H2C0 2 0 4 0 4v6c0 2 2 2 2 2h12c2 0 2-2 2-2V4c0-2-2-2-2-2z\" />\n          </svg>\n\n          <span>GERAR TESTE IPTV</span>\n        </button>\n\n        <button type=\"button\" title=\"speedtest\" id=\"openLinkSpeedtest\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\">\n            <path\n              d=\"M 12 2 C 6.486 2 2 6.486 2 12 C 2 14.757 3.1216406 17.257359 4.9316406 19.068359 L 6.3457031 17.654297 C 4.8967031 16.206297 4 14.206 4 12 C 4 7.589 7.589 4 12 4 C 16.411 4 20 7.589 20 12 C 20 14.206 19.103297 16.206297 17.654297 17.654297 L 19.068359 19.068359 C 20.878359 17.257359 22 14.757 22 12 C 22 6.486 17.514 2 12 2 z M 15.292969 7.2929688 L 10 12 L 12 14 L 16.707031 8.7070312 L 15.292969 7.2929688 z\">\n            </path>\n          </svg>\n\n          <span>SPEEDTEST</span>\n        </button>\n      </section>\n    </section>\n  </main>\n\n  <!-- FUNÇÕES DO APP -->\n  <script>\n    const appGetStatusbarHeightSize = () => DtGetStatusBarHeight.execute() || null\n    const appGetNavbarHeightSize = () => DtGetNavigationBarHeight.execute() || null\n\n    const appTranslateText = (label) => DtTranslateText.execute(label) || null\n    const appGetConfigLabel = (label) => DtGetAppConfig.execute(label) || null\n\n    const appGetCarrierName = () => `${Android.getNetworkName()}` || null\n    const appGetLocalIp = () => `${Android.getLocalIP()}` || null\n\n    const AppUpdate = () => DtStartAppUpdate.execute() || null\n\n    const appAllConfigs = () => DtGetConfigs.execute() || null\n    const appSetConfig = (id) => DtSetConfig.execute(id) || null\n    const appGetDefaultConfig = () => DtGetDefaultConfig.execute() || null\n    const appGetConfigVersion = () => DtGetLocalConfigVersion.execute() || null\n\n    const appGetUsername = () => DtUsername.get() || null\n    const appSetUsername = (username) => DtUsername.set(username) || null\n    const appGetPassword = () => DtPassword.get() || null\n    const appSetPassword = (password) => DtPassword.set(password) || null\n    const appGetUUID = () => DtUuid.get() || null\n    const appSetUUID = (uuid) => DtUuid.set(uuid) || null\n\n    const appGetConnectionState = () => DtGetVpnState.execute() || null\n    const appStartConnection = () => DtExecuteVpnStart.execute() || null\n    const appStopConnection = () => DtExecuteVpnStop.execute() || null\n\n    const appGetStatusHotspot = () => DtGetStatusHotSpotService.execute() || null\n    const appStartHotspot = () => DtStartHotSpotService.execute() || null\n    const appStopHotspot = () => DtStopHotSpotService.execute() || null\n\n    const appGetLogs = () => DtGetLogs.execute() || null\n    const appCleanLogs = () => DtClearLogs.execute() || null\n\n    const appDialogConfigs = () => DtExecuteDialogConfig.execute()\n    const appBatteryOptimize = () => DtIgnoreBatteryOptimizations.execute() || null\n    const appApnConfiguration = () => DtStartApnActivity.execute() || null\n    const appStartCheckUser = () => DtStartCheckUser.execute() || null\n    const appIntoBrowser = (url) => DtStartWebViewActivity.execute(url) || null\n    const appClearData = () => DtCleanApp.execute() || null\n  </script>\n\n  <!-- DOM WRAPPER -->\n  <script>\n    const Dom = (selector) => {\n      const _elements = document.querySelectorAll(selector)\n\n      const wrapper = {\n        on(listeners) {\n          for (const [event, listener] of Object.entries(listeners)) {\n            _elements.forEach((element) => {\n              element.addEventListener(event, listener)\n            })\n          }\n\n          return wrapper\n        },\n        addClass: (...tokens) => {\n          _elements.forEach((element) => {\n            element.classList.add(...tokens)\n          })\n\n          return wrapper\n        },\n        removeClass: (...tokens) => {\n          _elements.forEach((element) => {\n            element.classList.remove(...tokens)\n          })\n\n          return wrapper\n        },\n        toggleClass: (token, force) => {\n          _elements.forEach((element) => {\n            element.classList.toggle(token, force)\n          })\n\n          return wrapper\n        },\n        style(styles) {\n          for (const [property, value] of Object.entries(styles)) {\n            console.log(value)\n            _elements.forEach((element) => {\n              element.style[property] = value\n            })\n          }\n\n          return wrapper\n        },\n        attr(attrs) {\n          for (const [name, value] of Object.entries(attrs)) {\n            _elements.forEach((element) => element.setAttribute(name, value))\n          }\n\n          return wrapper\n        },\n        html(value) {\n          _elements.forEach((element) => (element.innerHTML = value))\n          return wrapper\n        },\n      }\n\n      return wrapper\n    }\n  </script>\n\n  <!-- VARIÁVEIS -->\n  <script>\n    const Logo = Dom(\"#appLogo\")\n\n    const VpnStatusValue = Dom(\"#vpnStatusValue\")\n    const ButtonUpdate = Dom('button[title=\"update\"]')\n    const ButtonTools = Dom('button[title=\"tools\"]')\n\n    const ButtonCarrierSelector = Dom(\"#carrierSelector\")\n    const CarrierSelectorValue = Dom('#carrierSelectorValue')\n\n    const InputUser = Dom(\"#inputUser\")\n    const InputPassword = Dom(\"#inputPassword\")\n\n    const StartButton = Dom('#StartVpnButton')\n    const IconStartButton = Dom(\"#StartVpnButton svg\")\n    const BorderStatusVpnButton = Dom('section.home div.container-button-connection div.border-button-status')\n\n    const ContainerLogs = Dom('section.home div.container-logs')\n    const RegisterLogsText = Dom(\"#logs-value\")\n\n\n\n    const ContainerTools = Dom('section.tools')\n    const BackContainerTools = Dom('#backContainerTools')\n\n\n    const ButtonStartStopHotspot = Dom(\"#hotspotButton\")\n    const ValueOfButtonHotspotContainer = Dom(\"#hotspotValue\")\n\n    const ButtonCheckUser = Dom(\"#checkUser\")\n    const ButtonCleanData = Dom('#cleanData')\n    const ButtonBatteryOptimization = Dom(\"#batteryDisableOptimizationD\")\n    const ButtonAccessPoint = Dom(\"#accessPointOpenSettings\")\n    const ButtonRenewAccess = Dom('#renewAccess')\n    const ButtonGenerateIptvTest = Dom('#openLinkIptvGenerateTest')\n    const ButtonSpeedtest = Dom(\"#openLinkSpeedtest\")\n  </script>\n\n  <!-- FUNÇÕES -->\n  <script>\n    const getAppLogo = () => {\n      const logo = appGetConfigLabel(\"APP_LOGO\")\n\n      if (!logo) {\n        return \"\"\n      } else {\n        return `${JSON.parse(logo).value}`\n      }\n    }\n    const getConfigName = () => {\n      if (!appGetDefaultConfig()) {\n        return `${appTranslateText(\"LBL_CHOOSE_CONFIG\")}`\n      } else {\n        return `${JSON.parse(appGetDefaultConfig())?.name}`\n      }\n    }\n\n    const startStopConnection = () => {\n      const state = appGetConnectionState()\n\n      state !== \"CONNECTED\" ? appStartConnection() : appStopConnection()\n    }\n\n    const getUsernameValue = () => `${appGetUsername() ?? \"\"}`\n    const getPasswordValue = () => `${appGetPassword() ?? \"\"}`\n    const getUUIDValue = () => `${appGetUUID() ?? \"\"}`\n\n    const getUsernamePlaceholder = () => `${appTranslateText(\"LBL_USERNAME\")}`\n    const getPassowrdPlaceholder = () => `${appTranslateText(\"LBL_PASSWORD\")}`\n    const getUUIDPlaceholder = () => `${appTranslateText(\"LBL_UUID\")}`\n\n    const connectionState = (state) => {\n      const connectionValue = `${state || appGetConnectionState()}`\n\n      switch (connectionValue) {\n        case \"DISCONNECTED\":\n          IconStartButton.style({ color: '#252121' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7))' });\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(255, 255, 255, 0.5), 0 0 5px rgba(255, 255, 255, 0.5) inset, 2.5px 0 5px rgba(255, 255, 255, 0.5), -2.5px 0 5px rgba(255, 255, 255, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_DISCONNECTED'))\n          break\n        case \"CONNECTING\":\n          IconStartButton.style({ color: '#FFD700' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(255, 255, 0, 0.7), rgba(255, 255, 0, 0.7), rgba(255, 204, 0, 0.7), rgba(204, 163, 0, 0.7)' })\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(255, 255, 0, 0.5), 0 0 5px rgba(255, 255, 0, 0.5) inset, 2.5px 0 5px rgba(255, 255, 0, 0.5), -2.5px 0 5px rgba(255, 255, 0, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_CONNECTING'))\n          showContainerLogs()\n          break\n        case \"CONNECTED\":\n          IconStartButton.style({ color: '#15803D' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(0, 204, 0, 0.7), rgba(0, 204, 0, 0.7), rgba(0, 153, 0, 0.7), rgba(0, 102, 0, 0.7)' })\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(0, 204, 0, 0.5), 0 0 5px rgba(0, 204, 0, 0.5) inset, 2.5px 0 5px rgba(0, 204, 0, 0.5), -2.5px 0 5px rgba(0, 204, 0, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_CONNECTED'))\n          break\n        case \"STOPPING\":\n          IconStartButton.style({ color: '#FFD700' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(255, 255, 0, 0.7), rgba(255, 255, 0, 0.7), rgba(255, 204, 0, 0.7), rgba(204, 163, 0, 0.7)' })\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(255, 255, 0, 0.5), 0 0 5px rgba(255, 255, 0, 0.5) inset, 2.5px 0 5px rgba(255, 255, 0, 0.5), -2.5px 0 5px rgba(255, 255, 0, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_STOPPING'))\n          break\n        case \"NO_NETWORK\":\n          IconStartButton.style({ color: '#FF0000' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(255, 77, 77, 0.7), rgba(255, 26, 26, 0.7), rgba(204, 0, 0, 0.7), rgba(168, 0, 0, 0.7))' })\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(255, 0, 0, 0.5), 0 0 5px rgba(255, 0, 0, 0.5) inset, 2.5px 0 5px rgba(255, 0, 0, 0.5), -2.5px 0 5px rgba(255, 0, 0, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_NO_NETWORK'))\n          break\n        case \"AUTH\":\n          IconStartButton.style({ color: '#FFD700' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(255, 255, 0, 0.7), rgba(255, 255, 0, 0.7), rgba(255, 204, 0, 0.7), rgba(204, 163, 0, 0.7)' })\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(255, 255, 0, 0.5), 0 0 5px rgba(255, 255, 0, 0.5) inset, 2.5px 0 5px rgba(255, 255, 0, 0.5), -2.5px 0 5px rgba(255, 255, 0, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_AUTH'))\n          break\n        case \"AUTH_FAILED\":\n          IconStartButton.style({ color: '#FF0000' })\n          BorderStatusVpnButton.style({ background: 'linear-gradient(to bottom, rgba(255, 77, 77, 0.7), rgba(255, 26, 26, 0.7), rgba(204, 0, 0, 0.7), rgba(168, 0, 0, 0.7))' })\n          BorderStatusVpnButton.style({ boxShadow: '0 0 5px rgba(255, 0, 0, 0.5), 0 0 5px rgba(255, 0, 0, 0.5) inset, 2.5px 0 5px rgba(255, 0, 0, 0.5), -2.5px 0 5px rgba(255, 0, 0, 0.5)' });\n          VpnStatusValue.html(appTranslateText('LBL_STATE_AUTH_FAILED'))\n          break\n      }\n    }\n\n    const writeLogsRegister = () => {\n      const data = JSON.parse(appGetLogs())\n\n      let logs = \"\"\n\n      data.forEach((item) => {\n        logs += `${Object.keys(item)} ${item[Object.keys(item)]} <br>`\n      })\n\n      RegisterLogsText.html(logs)\n\n      document.querySelector(\"section.home div.container-logs\").scrollTop =\n        document.querySelector(\n          \"#logs-value\"\n        ).scrollHeight\n    }\n    const showContainerLogs = () => {\n      ContainerLogs.removeClass('display-none')\n    }\n    const hiddenContainerLogs = () => {\n      ContainerLogs.addClass('display-none')\n    }\n\n    const showContainerTools = () => {\n      ContainerTools.addClass('active')\n    }\n    const hiddenContainerTools = () => {\n      ContainerTools.removeClass('active')\n    }\n\n    const setStatusHotspot = () => {\n      if (appGetStatusHotspot() === \"STOPPED\") {\n        ValueOfButtonHotspotContainer.html(\"LIGAR HOTSPOT\")\n      } else {\n        ValueOfButtonHotspotContainer.html(\"DESLIGAR HOTSPOT\")\n      }\n    }\n    const startHotspot = () => {\n      appStartHotspot()\n\n      ValueOfButtonHotspotContainer.html(\"DESLIGAR HOTSPOT\")\n    }\n    const stopHotspot = () => {\n      appStopHotspot()\n\n      ValueOfButtonHotspotContainer.html(\"LIGAR HOTSPOT\")\n    }\n    const toggleHotspot = () => {\n      appGetStatusHotspot() === \"STOPPED\" ? startHotspot() : stopHotspot()\n    }\n\n    function checkUser() {\n      appStartCheckUser()\n\n      return\n    }\n\n    function appCleanData() {\n      appClearData()\n\n      return\n    }\n\n    function disableBatteryOptimization() {\n      appBatteryOptimize()\n\n      return\n    }\n\n    function acessPointSettings() {\n      appApnConfiguration()\n\n      return\n    }\n\n    function renewAccess() {\n      appIntoBrowser('https://wa.me/5592994072648')\n\n      return\n    }\n\n    function generateIptvTest() {\n      appIntoBrowser('https://painelhls1.net/autotest/?key=2f49f4bf742ea39cb2e54da94a7d2cd3')\n\n      return\n    }\n\n    function openSpeedtest() {\n      appIntoBrowser('https://fast.com/')\n\n      return\n    }\n  </script>\n\n  <!-- FUNÇÕES PARA O APP -->\n  <script>\n    const dtConfigClickListener = () => {\n      CarrierSelectorValue.html(getConfigName())\n\n      const getUsernameValue = () => `${appGetUsername() ?? \"\"}`\n      const getPasswordValue = () => `${appGetPassword() ?? \"\"}`\n\n      const getUsernamePlaceholder = () => `${appTranslateText(\"LBL_USERNAME\")}`\n      const getPassowrdPlaceholder = () => `${appTranslateText(\"LBL_PASSWORD\")}`\n    }\n    const dtVpnStateListener = (state) => connectionState(state)\n    const dtOnNewLogListener = () => writeLogsRegister()\n    const dtCheckUserStartedListener = () => hiddenContainerLogs()\n  </script>\n\n  <!-- AÇÕES EM VARIAVEIS ROOT -->\n  <script>\n    document.documentElement.style.setProperty(\n      \"--space-status-bar\",\n      `${appGetStatusbarHeightSize() + 10}px`\n    )\n    document.documentElement.style.setProperty(\n      \"--space-nav-bar\",\n      `${appGetNavbarHeightSize() + 10}px`\n    )\n  </script>\n\n  <!-- AÇÕES -->\n  <script>\n    Logo.attr({ src: getAppLogo() })\n\n    ButtonUpdate.on({ click: () => AppUpdate() })\n    ButtonTools.on({ click: () => showContainerTools() })\n\n    ButtonCarrierSelector.on({ click: () => appDialogConfigs() })\n    CarrierSelectorValue.html(getConfigName())\n\n    InputUser.attr({ placeholder: getUsernamePlaceholder() })\n    InputPassword.attr({ placeholder: getPassowrdPlaceholder() })\n\n    InputUser.attr({ value: getUsernameValue() })\n    InputPassword.attr({ value: getPasswordValue() })\n\n    InputUser.on({ input: (e) => appSetUsername(e.target.value) })\n    InputPassword.on({ input: (e) => appSetPassword(e.target.value) })\n\n    StartButton.on({ click: () => startStopConnection() })\n\n    BackContainerTools.on({ click: () => hiddenContainerTools() })\n\n\n    ButtonStartStopHotspot.on({ click: () => toggleHotspot() })\n    ButtonCheckUser.on({ click: () => checkUser() })\n    ButtonCleanData.on({ click: () => appCleanData() })\n    ButtonBatteryOptimization.on({ click: () => disableBatteryOptimization() })\n    ButtonAccessPoint.on({ click: () => acessPointSettings() })\n    ButtonRenewAccess.on({ click: () => renewAccess() })\n    ButtonGenerateIptvTest.on({ click: () => generateIptvTest() })\n    ButtonSpeedtest.on({ click: () => openSpeedtest() })\n\n    connectionState()\n    setStatusHotspot()\n  </script>\n</body>\n\n</html>",
        "type": "HTML",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42663,
        "label": "ANDROID WEBVIEW (POR SUA CONTA E RISCO)",
        "name": "APP_SUPPORT_BUTTON",
        "value": null,
        "type": "HTML",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    },
    {
        "id": 42664,
        "label": "PAGINA WEBVIEW (POR SUA CONTA E RISCO)",
        "name": "APP_WEB_VIEW",
        "value": null,
        "type": "HTML",
        "status": "ACTIVE",
        "user_id": "bf0b665a-d194-4c79-a0cb-9ea6eff750a8"
    }
]