Wikipédia:Robôs/Pedidos de aprovação/Arquivo/2020

Origem: Wikipédia, a enciclopédia livre.

pedidoediçõescontadorlogsblock userblock logflag logflag botSUL util

Operator: Juan90264

Automatic or manually assisted:

Programming language(s): Python

Function summary: Adicionar SUBST em algumas predefinições

Edit period(s) (e.g. continuous, daily, one time run): Contínuo

Edit rate requested: 5 edições por minuto

Already has a bot flag (Y/N): N

Function details: O bot irá analisar as categorias: Categoria:!Páginas com predefinições que deveriam ser substituídas e Categoria:!Páginas com predefinições que deveriam ser substituídas pelo SustBot‎; e verificar as predefinições que precisam ser substituídas, e aplicar um {{SUBST:. Juan90264 (Disc.) 01h22min de 10 de setembro de 2020 (UTC)[responder]

Discussion[editar código-fonte]

@Alchimista e Danilo.mac: Poderiam analisar meu pedido? Juan90264 (Disc.) 01h23min de 10 de setembro de 2020 (UTC)[responder]

Comentário: Um aviso! Eu, o proponente; compreendo que a Aleth Bot, tem o mesmo papel de aplicar {{SUBST:. Mas o que diferencia as tarefas dos 2 bots, que o Aleth Bot — Só aplica SUBST as vezes em páginas de discussão e outras tarefas; e o SustBot — Só aplicará SUBST em artigos e páginas de discussões; e nenhuma outra tarefa de contra tempo, se estiver rodando o código no PAWS. Juan90264 (Disc.) 06h02min de 10 de setembro de 2020 (UTC)[responder]

@Fabiojrsouza e GoEThe: Convido certos usuários para opinarem! Juan90264 (Disc.) 06h30min de 10 de setembro de 2020 (UTC)[responder]
Vou deixar essa para o Alchimista, ele opera a Aleth Bot que opera de forma semelhante e vai saber avaliar melhor este pedido. Danilo.mac(discussão) 17h40min de 10 de setembro de 2020 (UTC)[responder]
@Juan90264: Não percebi muito bem como estás a pensar realizar a tarefa, podes explicar um pouco melhor? E também não percebi em que medida seria diferente da tarefa da Aleth. Alchimista Fala comigo! 17h50min de 11 de setembro de 2020 (UTC)[responder]
@Alchimista: Sim, vou explicar agora melhor. O SustBot irá ler a lista guardada no PAWS, que também tem uma cópia no GitHub; essa lista contém todas as predefinições que meu bot deve aplicar o SUBST. E a única medida em que diferencia os dois, que o meu bot irá aplicar SUBST em artigos, páginas de discussões e vários outros NAMESPACES. Juan90264 (Disc.) 18h05min de 11 de setembro de 2020 (UTC)[responder]
@Alchimista: Aliás, eu só quis criei o "SustBot", por causa que vi na Categoria:!Páginas com predefinições que deveriam ser substituídas, que contém 2.000 páginas de discussões que precisam ser substituídas, e a Aleth Bot está trabalhando pouco nas substituições; então pensei criar o "SustBot" para ajudar nas substituições em páginas de discussão e artigos (Substituir essa predefinições, por exemplo: Infobox VG, Infobox album e etc.). Juan90264 (Disc.) 03h48min de 12 de setembro de 2020 (UTC)[responder]
@Juan90264: a quase totalidade das predefinições apontadas são dos domínios discussão, que é onde a Aleth opera. Neste domínio, esta tarefa não é urgente nem há um benefício claro em haver um script a aplicar o subst de forma mais frequente, até porque em muitas destas páginas vão sendo colocadas novas mensagens com predefinições que devem ser substituídas, e ai o bot destruiria o histórico. Também não me parece haver benefício em ter dois bots a realizar a mesma tarefa, porque invariavelmente iriam atrapalhar-se um ao outro. Para teres noção, a lista de predefinições que a Aleth usa ronda as 2000. E além do nome canónico das predefinições o script pega as predefinições que foram transformadas em redirects para serem também substituídos, assim como outras variações de nome que possam ocorrer. Alchimista Fala comigo! 17h01min de 15 de setembro de 2020 (UTC)[responder]
Cancelo este pedido, perante ao comentário do Alchimista.
Juan90264 (Disc.) 23h18min de 19 de setembro de 2020 (UTC)[responder]


pedidoediçõescontadorlogsblock userblock logflag logflag botSUL util
Pedidos de tarefas: 1, 2, 3

Operator: Albertoleoncio

Automatic or manually assisted: Semiautomático

Programming language(s): PHP

Function summary: Executar tarefa solicitada aqui.

Edit period(s) (e.g. continuous, daily, one time run): one time run

Edit rate requested: 6 páginas/minuto

Already has a bot flag (Y/N): Y, mas a flag de eliminador é necessária para essa tarefa.

Function details: Correr essa lista e eliminar as versões antigas de cada arquivo.

Discussion[editar código-fonte]

Concordo com o pedido. FábioJr de Souza msg 20h51min de 5 de junho de 2020 (UTC)[responder]

@Albertoleoncio: poderia detalhar, tecnicamente, como pretende realizar as modificações? Se utilizará algum framework, enfim, de que maneira se dará a operação do bot? Ele rodará de maneira independente depois de iniciado ou será assistido? Obviamente concordo com a tarefa, já que fui eu mesmo que a sugeri. Porém, precisamos entender um pouco melhor a operação para termos certeza dos riscos. Rafael (stanglavine) msg 21h47min de 5 de junho de 2020 (UTC)[responder]

Marcando @Alchimista: e @Danilo.mac:. Rafael (stanglavine) msg 21h48min de 5 de junho de 2020 (UTC)[responder]
@Stanglavine: Ah, sim. O código-fonte está no Github. Utilizarei o Wikimate como framework. Inicialmente funcionará de modo semiautomático, já que preciso acompanhar as primeiras edições, e em seguida executa-lo de modo automático (afinal, são +4000 páginas). Como a tarefa é limitada, supervisionada, e a atribuição da flag é temporária, não vejo muitos riscos envolvidos. ━ ALBERTOLEONCIO Who, me? 22h04min de 5 de junho de 2020 (UTC)[responder]

@Albertoleoncio: Pode iniciar o período de testes. Serão 50 páginas uma taxa de 3 por minuto. FábioJr de Souza msg 23h49min de 7 de junho de 2020 (UTC)[responder]

@Fabiojrsouza: Feito. Realizei as eliminações nas 50 primeiras imagens constantes na lista. Como algumas imagens possuíam mais de uma versão antiga, foram realizadas 64 eliminações no total. O log de eliminações está nos registros. Após análise das eliminações, não encontrei erros. ━ ALBERTOLEONCIO Who, me? 00h29min de 8 de junho de 2020 (UTC)[responder]
Aprovo Pode continuar com a tarefa. FábioJr de Souza msg 00h36min de 8 de junho de 2020 (UTC)[responder]

pedidoediçõescontadorlogsblock userblock logflag logflag botSUL util
Pedidos de tarefas: 1, 2, 3

Operator: Albertoleoncio

Automatic or manually assisted: Automático

Programming language(s): AWB

Function summary: Substituir as predefinições {{Ambox}} por {{Ombox}} nos domínios 2 (Usuário), 3 (Usuário Discussão) e 4 (Wikipédia).

Edit period(s) (e.g. continuous, daily, one time run): Uma única vez

Edit rate requested: 4 edições/minuto

Already has a bot flag (Y/N): N

Function details: Esse pedido é, de certo modo, um complemento ao meu pedido de AWB.

  • As desubstituições no domínio principal [1] já foram finalizadas.
  • Foram encontrados avisos Ambox sendo utilizados fora do domínio principal, o que é incorreto já que os avisos [A]rticle [m]essage [box] devem ser restritos para uso em artigos. Para outros domínios o aviso Ombox é mais adequado.
  • Ao finalizar a implantação do novo Ambox, os avisos que utilizem essa predefinição fora do domínio principal deixarão de ser visualizados corretamente no ambiente mobile.
  • O propósito dessa tarefa é substituir as predefinições Ambox por Ombox (exemplo) nos domínios diferentes do domínio principal.
  • Existem 3271 páginas [2] contendo esses avisos. Em uma taxa de 4 edições/minuto, é possível concluir essa tarefa em 13 horas com o AWB.
  • O uso da flag de bot é mandatória nesse caso, para evitar aborrecimentos com notificações de novas mensagens para usuários ao editar as páginas do domínio 3 (Usuário Discussão). A flag de autorrevisor também é mandatória, já que algumas páginas estão protegidas a nível de autorrevisor (exemplo). ━ ALBERTOLEONCIO Who, me? 13h59min de 9 de janeiro de 2020 (UTC)[responder]

Discussion[editar código-fonte]

Pergunta: Não há nenhum caso de artigo em página de teste de usuário? GoEThe (discussão) 14h09min de 9 de janeiro de 2020 (UTC)[responder]

@GoEThe: Haviam dois, mas já resolvi manualmente (57142944]+57142957]). ━ ALBERTOLEONCIO Who, me? 17h13min de 9 de janeiro de 2020 (UTC)[responder]
OK. Se não houver mais comentários, abro o período de testes nos próximos dias. GoEThe (discussão) 17h15min de 9 de janeiro de 2020 (UTC)[responder]
@GoEThe: Posso começar os testes? ━ ALBERTOLEONCIO Who, me? 01h23min de 13 de janeiro de 2020 (UTC)[responder]
Sim. Aproximadamente 50 edições, a um ritmo baixo (3 edições por minuto). GoEThe (discussão) 10h57min de 13 de janeiro de 2020 (UTC)[responder]
@GoEThe: Mas, para começar os testes, eu vou precisar da liberação no Wikipédia:AutoWikiBrowser/CheckPage e a flag de bot.
Sorry, falta de prática. Concedi as flags temporariamente por uma semana para os testes. Quando aprovado concede-se em definitivo. Para registo. GoEThe (discussão) 14h00min de 13 de janeiro de 2020 (UTC)[responder]

─────────────── @GoEThe: Feito. Realizei as 50 edições: 19 no domínio "Usuário Discussão", 20 no domínio "Usuário" e 11 no domínio "Wikipédia". ━ ALBERTOLEONCIO Who, me? 15h01min de 13 de janeiro de 2020 (UTC)[responder]

Algumas edições incidiram em páginas de testes de usuários: [3] Usuário:Vapmachado/Logística 2008/marca, Usuário:Óthon C. Piccini/Impróprio, Usuário:SunProj3cT/Teste01, Usuária:Beria/testes 2, Usuário:Auréola/Páginadetestes2. Não sei se não será melhor excluir subpáginas desse domínio ou simplesmente saltar por cima e deixar essas substituições para triagem manual. GoEThe (discussão) 15h13min de 13 de janeiro de 2020 (UTC)[responder]
@GoEThe: Posso fazer a segunda opção. Eu verifiquei que existem 751 páginas no domínio usuário, e destas 639 possuem "Arquivo" no título (que são, basicamente, arquivos de discussões antigas). Posso executar nessas e deixar as 112 restantes para triagem manual. ━ ALBERTOLEONCIO Who, me? 15h43min de 13 de janeiro de 2020 (UTC)[responder]
OK. Vou conceder a flag de bot definitiva. A de autorrevisor vou deixar expirar dentro de uma semana a não ser que ache que necessite de mais tempo para concluir a tarefa. GoEThe (discussão) 17h32min de 13 de janeiro de 2020 (UTC)[responder]


pedidoediçõescontadorlogsblock userblock logflag logflag botSUL util

Operator: Albertoleoncio

Automatic or manually assisted: Automático.

Programming language(s): PHP.

Function summary: Realizar atualizações das curiosidades da {{Sabia que}}.

Edit period(s) (e.g. continuous, daily, one time run): Uma vez a cada 48 horas (podendo ser alterado em página específica dependendo da necessidade).

Edit rate requested: 6 edições por execução.

Already has a bot flag (Y/N): N.

Function details: A intenção desse bot é automatizar as atualizações da {{Sabia que}}, demanda surgida após discussão na página de propostas. A criação de uma conta separada da minha já existente conta de robô visa, em caso de malfuncionamento e necessidade de bloqueio, não interromper outros processos. O código-fonte deste bot está aberto e disponível no GitHub.

Discussion[editar código-fonte]

Albertoleoncio poderias descrever um pouco melhor como o bot iria operar? Não é preciso entrar em grandes detalhes, mas convém ficar documentado. Alchimista Fala comigo! 10h23min de 25 de maio de 2020 (UTC)[responder]

@Alchimista: Sim. Durante a execução, o bot irá:
ALBERTOLEONCIO Who, me? 14h48min de 25 de maio de 2020 (UTC)[responder]

Sendo um bot de baixa frequência de edição e de grande impacto por editar na página principal (ou pelo menos reflectir nela), penso que poderá (deverá) ser deixado sem flag mesmo após a aprovação, para que as edições sejam mais visíveis para outros e possam verificar se algo correu mal. GoEThe (discussão) 15h36min de 25 de maio de 2020 (UTC)[responder]

De qualquer forma, penso que pode ser iniciado o período de teste. Quando fizer umas 10 actualizações (um total de 60 edições) pode ser avaliado. GoEThe (discussão) 15h41min de 25 de maio de 2020 (UTC)[responder]
@GoEThe: As 6 primeiras edições foram efetuadas, sem erros encontrados. Também creio que, desde a proteção da predefinição da página inicial não seja elevada para o nível de autorrevisor, a flag de bot talvez nem seja necessária. ━ ALBERTOLEONCIO Who, me? 17h01min de 25 de maio de 2020 (UTC)[responder]
@GoEThe: Feito As 10 atualizações foram realizadas. Constam 59 edições porque, durante a segunda atualização, fiz uma alteração no código que acabou criando um bug, no qual corrigi logo em seguida e não apresentou nenhum outro erro desde então. ━ ALBERTOLEONCIO Who, me? 17h10min de 13 de junho de 2020 (UTC)[responder]
@Albertoleoncio: Não me parece haver problemas com as edições, no entanto noto que após o bot adicionar o novo texto em Wikipédia:Sabia que não adiciona a imagem correspondente, necessitando de um humano. Já ponderas-te pegar a imagem do artigo de destaque do trecho e alterar logo? Ou então adiciona-se ao formato de escolha de novos items um campo para a imagem, o que até me parece mais apropriado, o que dizes? Por mim o bot pode continuar a editar enquanto a discussão não está concluída: as edições não são frequentes, são consensuais e estamos a discutir apenas pormenores sem qualquer perigo ou dano ao projecto, além do ganho óbvio. Alchimista Fala comigo!
@Alchimista: Já existe um campo não obrigatório para o usuário que propõe a curiosidade indicar uma imagem. Entretanto, eu tinha descartado essa função quando o ArgonSim disse que Citação: é preciso substituir a imagem por uma compatível com a curiosidade sendo publicada, o que requer verificar se o tamanho atual não irá distorcer a PP e, em alguns casos, procurar uma no Commons caso a(s) imagem(ns) no artigo não sejam adequadas e o proponente não tenha anexado alguma. Daria sim para adicionar a imagem automaticamente, mas esses parâmetros teriam que estar definidos para o bot só executar. ━ ALBERTOLEONCIO Who, me? 20h22min de 13 de junho de 2020 (UTC)[responder]
@Albertoleoncio: nesse caso parece estar tudo conforme. A não ser que o @GoEThe: o mais alguém tenha mais alguma questão, por mim o bot pode ser considerado aprovado para realizar a tarefa, e atendendo ao que foi dito, sem a atribuição da flag de bot. Alchimista Fala comigo! 21h37min de 13 de junho de 2020 (UTC)[responder]
Não tenho mais nenhum comentário. Parece tudo ok. GoEThe (discussão) 10h05min de 15 de junho de 2020 (UTC)[responder]

Aprovado GoEThe (discussão) 10h08min de 15 de junho de 2020 (UTC)[responder]


pedidoediçõescontadorlogsblock userblock logflag logflag botSUL util

Operator: Albertoleoncio

Automatic or manually assisted: Automático

Programming language(s): PHP

Function summary: Execução de tarefas relacionadas à bloqueios.

Edit period(s) (e.g. continuous, daily, one time run): Contínuo

Edit rate requested: 1 execução a cada 10 minutos.

Already has a bot flag (Y/N): N

Function details: Criei essa conta de robô para cuidar de duas tarefas:

  1. Fechamento de pedidos de bloqueio em Wikipédia:Pedidos/Notificações de vandalismo e Wikipédia:Pedidos/Revisão de nomes de usuário. Após solicitação do EVinente, criei um script para fechar automaticamente os pedidos de bloqueio e coloquei em execução. Dentre os motivos:
    • Comumente, pedidos de bloqueio são eram executados e continuam continuavam abertos.
    • Poupa o tempo do administrador que é dispensado da tarefa de editar uma página somente para inserir o {{feito}}.
    • Ajuda no monitoramento da página, já que uma edição de robô não é monitorada e, assim, o fechamento de pedidos não gerará notificações.
    • Como é uma tarefa permanente, demanda uma conta própria separada da minha conta principal de robô. Possibilita que, caso o robô apresente erros, um eventual bloqueio não interferirá nas demais tarefas.
  2. Bloqueios parciais em faixas de IP. Dentro de alguns dias a votação estará finalizada e, caso seja aprovada, espera-se que a execução das medidas seja tomada de forma imediada. Nisso, em conjunção com os scripts (common.js/mobile.js) e os filtros, bloqueios parciais em faixas de IP também terão que ser efetuados. A função do robô nessa tarefa será o monitoramento de edições capturadas pelo filtro que não foram evitadas pelos scripts (via uso do aplicativo Android/iOS ou algum outro artifício do usuário anônimo) e o bloqueio parcial automático, evitando o atingimento do limiar de 5% do filtro. Nisso, em conjunção com os scripts (common.js/mobile.js) e os filtros, bloqueios parciais em faixas de IP são recursos emergenciais que podem ser utilizados caso algo dê errado. A função do robô nessa tarefa será o monitoramento das edições recentes em busca de edições por IP que não foram evitadas pelos scripts e que, por algum motivo superveniente, não tenham sido capturadas pelo filtro. O código-fonte está disponível aqui. Não é necessário o estatuto de sysop, apenas o de reversor, já que o estatuto de reversor possui o privilégio (block), que é o único privilégio necessário para a execução dessa tarefa.

Discussion[editar código-fonte]

@Albertoleoncio: Olá, é possível inserir também o monitoramento de Wikipédia:Pedidos/Proteção (sofre dos mesmos problemas, pedidos já atendidos que não são fechados...)? Rafael (stanglavine) msg 17h54min de 26 de setembro de 2020 (UTC)[responder]

@Stanglavine: É possível sim. Só não o fiz ainda porque, caso alguém solicitasse uma alteração da proteção de uma página já confirmada (de autoconfirmado para autorrevisor, por exemplo), o bot não diferenciaria isso e fecharia o pedido automaticamente. Pretendo descobrir alguma solução e resolver isso em breve. ━ ALBERTOLEONCIO Who, me? 19h25min de 26 de setembro de 2020 (UTC)[responder]
@Stanglavine: Resolvido! O bot também já está fechando pedidos de proteção. Utilizei a marcação da assinatura do solicitante para evitar esse problema, fazendo com que o robô apenas considere proteções realizadas após a solicitação. ━ ALBERTOLEONCIO Who, me? 02h31min de 21 de outubro de 2020 (UTC)[responder]

@Albertoleoncio: Desculpe a demora. Pode iniciar os testes da primeira função, como já é feita pelo seu outro robô só algumas poucas edições já são suficientes para confirmar que está funcionando bem. Sobre a segunda função, veja que tem uma discussão para não aplicar as medidas imediatamente após a votação, lá eu também explico que os bloqueios talvez não sejam necessários se o script e o filtro conseguirem dar conta de todas edições de IPs. Em todo caso é bom ter um robô de olho no filtro e pronto para aplicar os bloqueios se forem realmente necessários. Uma coisa que poderia ser melhorada nessa função é a adição de uma página de registro, uma subpágina de usuário do robô onde o robô colocaria (talvez uma vez por dia) a porcentagem de edições que o filtro pegou, para saber se o robô está verificando corretamente se filtro está perto do limite de 5% onde ele para de funcionar e o bloqueio precisa ser aplicado. E tenho algumas dúvidas: O robô espera a detecção do filtro chegar a quantos por cento antes de fazer um bloqueio? Se o filtro passar da porcentagem programada, quantos bloqueios de faixa o robô vai aplicar? Como o robô sabe sabe que os bloqueios aplicados são suficientes para fazer o filtro ficar longe do 5% em que o filtro para de funcionar? O robô considera as faixas de IP mais pegas pelo filtro para bloquear? Danilo.mac(discussão) 03h41min de 2 de outubro de 2020 (UTC)[responder]

@Danilo.mac: Acabei de perceber uma coisa interessantíssima, da qual eu não tinha percebido antes. Ao atingir o limite de 5%, as "ações perigosas" desempenhadas pelo filtro são desabilitadas automaticamente. Entretanto, diferentemente do que eu pensava, a ação disallow não está listada como ação perigosa, apenas as ações block, degroup, blockautopromote e rangeblock. Descobri isso ao verificar que o filtro 163, embora esteja desativado emergencialmente, está funcionando perfeitamente. Portanto, mesmo que o filtro atinja esses 5%, não deixará de funcionar. Alterei um pouco o pedido de aprovação, para que sirva apenas como um mecanismo emergencial que seja ativado apenas se surgirem edições que o filtro não tenha impedido. ━ ALBERTOLEONCIO Who, me? 15h03min de 2 de outubro de 2020 (UTC)[responder]
Muito bom saber disso. Mas por segurança é bom realizar algum teste antes de tentar fazer bloqueios, você poderia rodar o robô sem a parte do bloqueio e dar um print na lista ou fazer o robô salvar em algum lugar para sabermos quais faixas de IP ele bloquearia? Danilo.mac(discussão) 17h25min de 2 de outubro de 2020 (UTC)[responder]
@Danilo.mac: Sim, é possível ver o output da ferramenta aqui. ━ ALBERTOLEONCIO Who, me? 19h10min de 2 de outubro de 2020 (UTC)[responder]
Ótimo, assim que o script e o filtro for ativado eu peço a flag de reversor para continuarmos os testes. Danilo.mac(discussão) 23h42min de 2 de outubro de 2020 (UTC)[responder]
@Danilo.mac: Poderia solicitar a flag de bot nesse interim? Gostaria de iniciar a tarefa 1 com essa conta e a flag é necessária, nesse caso, para que as edições não apareçam nas mudanças recentes e nem nas páginas vigiadas. Talvez o período de testes possa ser dispensado para essa tarefa, já que ela já está em execução em meu outro robô e eu apenas mudaria o nome da conta no script. ━ ALBERTOLEONCIO Who, me? 00h20min de 3 de outubro de 2020 (UTC)[responder]
Não é usual darmos flag antes dos testes, mas não vejo problemas neste caso, vou explicar para os burocratas. Danilo.mac(discussão) 01h57min de 3 de outubro de 2020 (UTC)[responder]
Flag atribuída para a execução da primeira tarefa. Edições simples já testadas pela outra conta, tarefa trivial e necessária. Constatei apenas essa edição com uma divergência na duração do bloqueio (talvez um erro de digitação?), mas de longe nada grave que impeça a operação do bot. Em relação a outra tarefa, vamos aguardar o desenrolar da situação, como afirmou o Danilo. Rafael (stanglavine) msg 04h21min de 3 de outubro de 2020 (UTC)[responder]

───────────────── @Danilo.mac: Foi tanta coisa ao mesmo tempo que acabei esquecendo de comunicar: fiz 3 testes com o bot aplicando bloqueios de faixa (desfeitos imediatamente após realização) onde ele demostrou a capacidade de bloquear utilizando a API. Encontrei um bug nas duas primeiras ações que estavam configurando o bloqueio incorretamente, impedindo a criação de contas, bug esse que foi corrigido e, analisando o log do terceiro bloqueio, não houve erros encontrados. ━ ALBERTOLEONCIO Who, me? 16h55min de 5 de outubro de 2020 (UTC)[responder]

Eu tinha esquecido que administradores podem dar estatuto de reversor, pedi aos burocratas duas hora atrás. Bem, para ser sincero não sei bem como avaliar essa função do robô, ele só vai funcionar se der algum problema no filtro ou script, o que não aconteceu. Os burocratas que estiverem acompanhando fiquem a vontade para dar ideias. Albertoleoncio, aonde o robô pegou esses IPs que foram bloqueados no teste? Danilo.mac(discussão) 18h03min de 5 de outubro de 2020 (UTC)[responder]
@Danilo.mac: Ele pegou os IPs nas Mudanças Recentes. Esses, nesse teste, foram os últimos a editar artigos até a execução do PHP. ━ ALBERTOLEONCIO Who, me? 18h13min de 5 de outubro de 2020 (UTC)[responder]