Tutorial Scrip



Comments



Description

Tutorial - VBScript Avanzado(Creacion Comandos Complejos por consola) VBScript Avanzado - Temas: ◦Intro ◦Manejo de Objetos ◦Funciones StdOut y StdIn del Objeto Wscript (Salida y Entrada de Datos) ◦Creacion y llamada de Funciones (Funcion y Call) ◦Funcion Clear Console o CLS by 3D1 ◦If (Ejemplo con StdIn) ◦MsgBox y PopUp ambos tienen sus ventajas y desventajas.. ◦Uso de Argumentos (Con esto ya puedes decir que tienes un Comando MS-DOS) ◦Funcion GetPassword (Uso de Contraseñas) ◦Consultas.. Como nos dice el titulo ejecutar un script vbs pero en la consola de comandos... Como? facil solo cambianlo el interprete de los VBS en nuestro caso se ejecuta con Windows Based Script Host pero lo cambiamos por Console Based Script Host que es el interprete que usa la ventana del CMD para la salida de datos... Intro Este manual esta echo para usuarios que ya sepan y/o ya ayan programado Scripts VBS si es que no tiene idea y quieren aprender desde el principio les recomiendo que lean el tuto de Novlucker esta en el link que pongo a continuacion ahi od enseña como programar en VBScript y ahi esta lo que mayormente vamos ha ocupar.. ;) (Sobre todo el dominar la creacion y utilizacion de los Objetos..) . Código: Registrate O Logeate Links para Usuarios Registrados WScript. puse el link al manual de Novlucker si es que quieren aprender desde 0 el explica bien la creacion de los Objetos y sobre todo los que vamos a usar.Registrate O Logeate Links para Usuarios Registrados Para ejecutar un Script VBS en modo consola es facil solo escribes en el CMD o en tu Batch: Código: Registrate O Logeate Links para Usuarios Registrados CScript /nologo TuScript.echo "Mensaje"Y mediante: Código: .vbs Manejo de Objetos Aqui eso va ha depender de ustedes por esa razon dije que deben saber al menos al medio medio la creacion de VBScript por esa razon.. mediante. Funciones StdOut y StdIn del Objeto Wscript (Para Imprimir y Obtener datos de la Consola) Funcion StdOut (Envio de datos a la Consola) Para enviar datos a la consola hay dos maneras basicas.... StdOut.StdOut. wscript.echo.Write inextY lo guardan con nombre de y lo ejecutan con CScript en el CMD (cscript //nologo script.sleep 100 Script.. las vantajas de usar StdOut. por esa razon agregamos VbNewLine..vbs) Ven la diferencia y las ventajas frente a wscript.Registrate O Logeate Links para Usuarios Registrados WScript.Write i & VbNewLinenextEsto seria igual a OK. Asta aqui se entiende creo si hay alguna duda no dudar en preguntar. Ahora lo emocionante StdIn (Pedir o Recibir datos de la consola) Funcion StdIn (Pedir y Recibir datos escritos en la consola) Creo que para muchos que les gusta el Batch tambien les gustara saber que que VBS incluye su propio "Set /p" para pedir datos.StdOut.echo Ahora vuelvan ha crear el Script pero incluyendo el salto de linea: Código: Registrate O Logeate Links para Usuarios Registrados for i = 1 to 10 wscript... Eso fue todo lo referente o StdOut (Enviar Datos).vbs (Para mas comodidad) wscript.Write "Mensaje" & VbNewLineLos dos vendrian a ser lo mismo con mucha diferencia que el segundo no hace salto de linea.sleep 100 Wscript.Write para enviar datos son las siguientes como por ejemplo: crear este script: Código: Registrate O Logeate Links para Usuarios Registrados for i = 1 to 10 wscript. Su funcion es facil (Crear este Script y Ejecutarlo CON CSCRIPT EN EL CMD): ... .vbs (NO OLVIDAR EJECUTARLO CON CSCRIPT EN CMD)) Código: Registrate O Logeate Links para Usuarios Registrados Wscript.. veamos las funciones. Luego podemos hacer no se. recuerdan que StdOut. Ok. Creacion y LLamada de Funciones con CALL Las llamadas en VBS son similares a las de un batch se hacen con Call solo que sin " : ". :) Que hacen las Funciones? Pues en resumen corto simplifican el trabajo a un programador por ejemplo para no hacer esto: Código: Registrate O Logeate Links para Usuarios Registrados .Código: Registrate O Logeate Links para Usuarios Registrados Dats = wscript.StdOut..ReadLineDats es la variable a la que le asignamos lo que escribimos en la consola y podemos ponerla a un MsgBox si quieren: Código: Registrate O Logeate Links para Usuarios Registrados MsgBox wscript. se entiendo ¿no?.StdIn.Write "Escriba Aqui: "var = Wscript. MsgBox var..Write no usa salto de linea es aqui donde nos sirve eso: (Crear este Scrip..ReadLineVen igual que en Batch solo cambiando unas cosillas lo que escribimos pasa a la variable llamada "var" en este caso..StdIn. Ahora Como mostrar como en Batch seria Set /p var="Escriba Aqui: " en VBScript es facil.ReadLineEsto seria igual que poner en Batch "Set /p=".StdIn. .3. Entonces el Code Quedaria asi.Write i nextEnd functioncall UnoCincocall UnoCincocall UnoCincocall UnoCincoEsto hace lo mismo pero usando menos code "call UnoCinco" es mas facil que poner tantos for sobre todo cuando un programa es extenso.) . Como hago una funcion? Facil las funciones son asi: Código: Registrate O Logeate Links para Usuarios Registrados Public function NOMBRE() ' Codeend function"Public function" es para publicar la funcion NOMBRE puede ser cualquiera y "End Function" finaliza la funcion..StdOut... 4 veses mas facil seria crear una funcion y llamarla como en batch CALL..For i = 1 to 5 wscript. Como hago una funcion? (Incluyendo una variable.. la funcion puede llamarse como quieran aqui le pondre UnoCinco.Write inextFor i = 1 to 5 wscript. Código: Registrate O Logeate Links para Usuarios Registrados Public function UnoCinco() For i = 1 to 5 wscript.Write inextQue lo que hace es imprimir 1. Para llamar a la funcion es como en Batch pero sin " : " solo: Código: Registrate O Logeate Links para Usuarios Registrados Call NOMBREDonde NOMBRE vendria ha ser el nombre de la funcion.Write inextFor i = 1 to 5 wscript. y el code va dentro de la funcion.StdOut..4..StdOut.2..5. ese code se ejecuta solo si llamamos a la funcion como podria decirse si se apreta el boton.StdOut..StdOut.Write inextFor i = 1 to 5 wscript. Ha y antes. Es lo mismo pero modificando la parte de " () " por " (Var) " ejemplo en vez de hacer esto: Código: Registrate O Logeate Links para Usuarios Registrados MsgBox "Pruebas". Funcion Clear Console o CLS by 3D1 Este code ni existia la funcion CLS no existe en VBS hay que usar un poco de magia batch para poder hacerlo. vbinformationMsgbox "BIen". vbinformationMsgBox "no"... vbinformationMsgBox "Si". Terminamos con function aqui. MensajeVar es la Variable que puede contener cualquier nombre que le den igual que la funcion. vbinformationQue es cansador por ejemplo hacer todos esos mensajes y escribir varias lineas MsgBox. vbInformationend functionCall Msgs("Pruebas")Call Msgs("Si")Call Msgs("no")Call Msgs("Como")Call Msgs("Bien")Creo se entiende pero por si las moscas... Bueno es un poco confuso a veses pero si usaron VB ya les hara facil. Es molestoso para eso usamos una funcion con una variable asi: Código: Registrate O Logeate Links para Usuarios Registrados Public Function Msgs(MensajeVar) MegBox MensajeVar... este metodo lo he inventado yo rompiendome la cabeza asta lograrlo y lo posteo por primera vez . vbinformationMsgBox "Como". VBInformation. Al hacer "MsgBox MensajeVar. VbInformation" lo que le estamos diciendo es que muestre el mensaje de la variable MensajeVar osea en este caso mostrara "Pruebas". etc.. Al llamar " Call Msgs ("Pruebas") " lo que hacemos aqui es llamar a la funcion Msgs y pasarle a la variable MensajeVar un Texto que en este caso le enviamos "Pruebas".... etcetc.. MsgBox. stdin. Set oExec = CreateObject("WScript.. MsgBox y PopUp ambos tienen sus ventajas y desventajas.Exec("%comspec% /c mode con lines=0 wscript. ... If con StdIn If creo que saben usarlo en aqui lo vamos a usar con StdIn pidiendo datos. La funcion Clear Console o CLS tiene este code: Código: Registrate O Logeate Links para Usuarios Registrados Sub CLS() cols=0 >nul") Call.D volviendo.StdOut.Writ e si escribimos 1 devuelve el mensaje Correcto y si no devuelve Incorrecto.ReadLine = "1" then msgbox "Correcto"else msgbox "incorrecto"end ifEn ahi usamos directamente el pedido de datos en el mismo if haciendo wscript.. .. si copian el code no olviden al autor.aqui.Shell")..sleep 300End Subpara hacer el CLS de la pantalla del Cmd solo llamarla con Código: Registrate O Logeate Links para Usuarios Registrados Call clsy borrara la pantalla. solo para mostrarles una forma mas rapida de usar if con esto...StdOut.Write "Escriba 1: "if wscript. ejemplo: Código: Registrate O Logeate Links para Usuarios Registrados wscript. pues el VBS es parecido. por que puedes jugar con los cuadros de mensaje. %1. y es muy util por que tiene la propiedead de poder personalizarle que botones.shell")msg...Shell Código: Registrate O Logeate Links para Usuarios Registrados set msg=CreateObject("wscript. es code seria asi: En primer lugar devemos crear el Objeto Wscript. 1esto habre un MsgBox pero se cierra en 1 segundo.. podemos enviarle datos al Script por ejemplo si quiero que mi Script imprima un mensaje con Cmd lo llamaria asi: Código: Registrate O Logeate Links para Usuarios Registrados CScript //nologo MiScript.. imagen.. %2. Uso de Argumentos Veran que en Batch para recibir datos de una aplicacion externa se usaban %1.vbs "Hola"aqui mandamos los argumentos "Hola" a el Script. luego el Script para interpretarlo tiene que hacer esto..popup "Hola". Código: Registrate O Logeate Links para Usuarios Registrados .Aqui todos saben usar MsgBox. esa es la ventaja de PopUp.. se van ha usar pero en PopUp no pero PopUp tiene una habilidad que MsgBox no tiene PopUp puede quedarse activo durante 1 segundo y luego cerrarse. asi con PopUp podemos jugar con los cuadros de mensaje. .. y mandar mas de dos datos.Password")WScript.. la contraseña que escribimos por supuesto que no se ve ya que el Cmd no usa asteriscos.Write "Contraseña:"pass = var. 06:24:55 pm por 3d1 » En línea -------------------------------------------------------------------------------kakarottojr . que lo posteen a ver que tal les fue.Password nos permite usar la funcion GetPassword para crear un campo de contraseña.MsgBox Wscript. aqui les dejo un ejemplo y luego lo explico: Código: Registrate O Logeate Links para Usuarios Registrados Set var = CreateObject("ScriptPW.GetPassword()Aqui asignamos el objeto ScriptPW a la variable var. luego con la unica funcion que tiene este objeto.. Funcion GetPassword (Uso de Passwords) El Objeto ScriptPW.. en la variable pass. SaluDOS!!!« última modificación: 28 de Abril de 2009.. Consultas Si tienen cualquier duda posteenla que ya respondo.Arguments(0)Esto recuperaria el argumento 0 que tiene el valor "Hola" y asi es posible usar mas de 1 argumento..GetPassword()" para llamar ha esta funcion y luego asigna lo escrito osea la password. para sus password. Espero les haya sido util. y hay varias cosas que ire aumentando y modificando de poco a poco... y quisiera ver el primer comando que creen con VBS para Cmd..StdOut.. usamos "pass = var.. Visitante Re: Tutorial .VBScript Avanzado(Creacion Comandos Complejos por consola) « Respuesta #1 en: 24 de Abril de 2009. 07:24:42 am » . ¯f° . % ðn° 9f¾¾ %D¾ . °f¾ ³f¾% Ã. °¾f¾    . ¯°¾ n   © nf°¾n½ ¾½  °fn°¾f n¯f° ¾  . ¯"€fn¾nf¯ f° ° ½   ¾I  °° ¾nf¾¾  © nfn°J° ¾ f¾ n½¾½ nf¯ f¯¾½. °¾  f¾ n½¾  ¾ ° ½   ¾ff  °f°f . ½fff¾f f  f¾   ° ¾ ¯f°f ¾f n½ff¾f¾ f¾ ½f°$fff°½–f¯f n½¾I ¾ ¾  ° °  f  °f½ °  ¾  ½°n½ ¾ n¯ °   f°  -n  ¾f ° ° ½°–fn°°fn°f  °¾ ³fn¯½–f¯f °I n½f ¾f  ¯f¯ ° f¯¾fn½f  %%     ¯°ffn fn°fn° ¾  © ¾ % ..    –¾f – f °¾½ffD¾f¾ –¾f ¾   9ff © nf°n½I  °¯ n°¾f ¾€fn¾ ¾n ¾ ° . . ° fn   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ . f° ©  © ¾  ¾ff ½ °  ¾ ¾½ ¾ff° ©   °¾f f¯ °¾f¯ ¯  fn fn° I n½½ ¾ff°  ½¾  °f¯f°f -n ¾ ¾   °f½ °  ¾   ½nf  °fn fn° ¾ © ¾¾   ¾ f¯¾f¾f   °n° ¾  °  © J¾n½%9ff¯½¯  °  f¾ f.n½$°–@n½  ¾ . °¾f% °n° %°  f¾ff. °¾f% 9ff °f f¾ffn°¾ff ¾¯f° f¾ f¾nf¾  ¯ f°   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ Jn½ n . °¾f© ¯ f°   .  –  .  –¾f – f °¾½ffD¾f¾ –¾f ¾ Jn½   J  . °¾f©  I - ° ¾ ¾ ° f°f¾ ¯¾¯n°¯nf €  °nf  ¾ –° °fn ¾f ° f  ½ ¾ff°f– –f¯¾I - °  f¾f°f©f¾ ¾f  J ½ff °f f¾¾°f¾¾– ° ¾n¯½ © ¯½  n f ¾ ¾n½   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ €  ¾n½ ¾ ½ n½  ¾%9ff¯f¾n¯  f % ¾n½   J ° –f f°n°°¯     © nf°n°. n½ ° . .%n¾n½$$°–¾n½  ¾% I °f €  °nff¾ °f©f¾€ ° f¾n½ n f f°fn f n½½ °n °  ¾f ° f   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ €  ¾n½ ¾ ½ J¾n½ n  ¾n½   J  I - ° ° ¾¾ f–ff  ¾ff¾  ° ° n ¾ff–°f  f°  f °½ –°f  ¾€   €  °  %°ff¾%  f ¯n°f°  °%9  n  f¾ fn°¾f% °n° °%9  n  f¾ ¾n¾ °fn°¾f% .   ½ff¯n¾  ¾–¾f  fnf¯  ° ¾–¾ff¾f   I °n ¾ ½½  $½ ½ff½  f¾  €°n° ¾€fn%.  f ¾ n½© nf. -. . 9@-. %   .. . ¾– ¾  °   . –   –¾f – f °¾½ffD¾f¾ –¾f ¾ f¾ ¾n½  °  f ° f¾ ¾fff  ff  f¾–°f¯¾  ¾n ¯¾ °f n°¾f½ ¯¾½° ff°.  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ .¾– ¾n½  °  f ° ¾¾ f–f ½°  ° fn  $½ ¾  ° ° "°"  f. ¯¯¾fn¯ ° fn¾ f $½f ¾n f   °I n½ ¾€fn   n  f°   J °¾f¾f ° f ¾f ° °¾¾  ¾  %.  f ¾ n½  ¾%-I. D@. -. . 9@-. %%  ..  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ J¾n½   J  ¾n f  f J¾n½  °  f ° I °–f  ° fn¾ nf¯ f° °f¾n¾f¾  ¾n ¯¾½f¾fffff  f¯f f f  ° ¾ nf¾   –½ ¯¾fn °¾ .¾– f  .  fn°f¯f f °n° ¾n°.  f¾f¯f f¾ °I ¾°¾¯f ¾ff¾ ° fn¾ fn °n°.  fn °f¾°n° ¾" 9 ¾ ° ¾¯ °n¾¯½€nf° f f©f°½–f¯f ½ © ¯½½ff°fn  ¾   .f¾ ¾°      f¯¾f¾€°n° ¾  % .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ .   fn  ¾¯½¯       ¾ ¾¯f¾€fn¾ fn f°f€°n°f¯ffn¯ ° fn. ¾n½   J °  ¾n½   J °   ¾n½   J °  ¾n½   J ° .   °°n ¾ .  fff¾ ff° ¾ f€°n°½ f¯f¾ n¯ f°f  ½°  D°. . °n   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ 9 n€°n°D°. °n%% ¾n½   J ° ° €°n°nfD°. °nnf D°. °nnfD°. °nnfD°. °n¾fn ¯¾¯½ ¾f° ¯ °¾n  nfD°. °n  ¾¯f¾€fn ½° f°¾€¾   nf° °½–f¯f ¾  °¾   . ¯f–°f€°n°" fnf¾€°n° ¾¾°f¾   . %% . –   –¾f – f °¾½ffD¾f¾ –¾f ¾ 9 n€°n°-.  ° €°n° 9 n€°n°  ¾½ff½ nff€°n° -. ½ ¾ nf f ° °n° €°fff€°n°   n f ° f€°n°  ¾ n ¾  © nf¾¾f¯f¯¾ff€°n°n¯½ f n¾ ¾¾ f½ f  °  9fff¯fff€°n° ¾n¯ ° fn½ ¾°   ¾   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ . f-.  ° ff¾  °¯   f€°n°   . ° -. ¯f–°f€°n°"%°n ° °fff  % . ¾¯¾¯½ ¯ €nf° f½f   %% ½ %If%  © ¯½ °  fn  ¾   . ¾–  .¾–  °  °€¯f°.¾–  9 f¾  °€¯f°.¾–    °€¯f°. –   –¾f – f °¾½ffD¾f¾ –¾f ¾ . ¾–  .¾–   n n I °€¯f°  n  ¾¯ ¾¾½ff ¾¾f¯¾°f€°n°n°°fff  f¾   .¯  °€¯f°.¾–   °  °€¯f°.  ¾nf°¾f ½ © ¯½fn  ¾ ¾¾¯ °¾f© ¾ ¾n ff¾° f¾.  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ 9 n°n°. °¾f© If  °€¯f° ° €°n°. °¾f© If%.¾–¾%. – . ¾–¾% 9 f¾ %.f . ¾–¾%  %.f. f.¾–¾% ° %. ¾–¾% .f. ¯ %. f.¾–¾%  ° %.  ¾  ° ° ½ ½¾f¾¯¾nf¾  . °¾f© If ¾fIff   ½ n° ° nf °¯     °–f f€°n°  f¯f . ¾–¾% 9 f¾ %  fn ¯¾f ¾f¯fff€°n°. °¾f© If I °€¯f°    ¾f¯¾ n °  ¾ ¯ ¾   ¯ °¾f©  fff  . °¾f© If°@   ° ¾ nf¾   °f¯¾ 9 f¾  fn  .f. °¾f© If¾ f ° ¾ nf¾¯¾ff 9 f¾   ° ¾°½nn°€¾f ¾ ¾½ ¾¾f°I f ¾ff€fn  @ ¯°f¯¾n°€°n°f   °n°.¾–¾½f¾f ff ff  .¾– .  f. °¾ .   ¾ n ° ¾ff€°n°. ° ¾  °I f ¾f°½n ¯f–f fn½ff ½  fn   ¾ ¯   ° °f ¯½ ° ¯ fnf ff¾f–f½¾ ½ ½¯ f  . f ¾n½f° n ° °ff    °   f€°n°.  f. °¾ .  °  ¾ n   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾  . %%   n .  f  © n% Jn½   %  n% n¯¾½ n $n¯ n°° ¾  n¾  ° % ¾n½ ¾ ½°  ½fffn  .  f½f°ff . ¯ ¾f¯ffn° . f   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ . fn¾ fff½f°ff   €n° ° €n  ¾f °¾f °ff¯¾f¾fn° °½  °  f¾  ¾½ff¯¾f ¾°f€¯f¯f¾f½ f ¾f€n° ¾  © ¯½   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ ¾n½   J  ¾n f  €¾n½ ¾ °  f °     ° ¯¾–  .  n ¾  ¯¾–  °n n ° €°f¾f¯¾  nf¯ °  ½    f¾ ° ¯¾¯€ fn ° ¾n½   J  ¾ ¾n ¯¾    ¯ °¾f© .  n¾°   °n n   .¾– 9½D½f¯ ¾ ° °¾¾ °f©f¾ ¾ °f©f¾  .  ¾¾f °¾f.¾–   ¾¯½  ° f½½ f  ½ ½ ¾°ff    ° ¾ ¯f– ° ¾ f°f¾f½  °9½D½°½ 9½D½ ° °ff  f   .¾– ° ° 9½D½½  f¾ fn f° ¾ –°  –n f¾  f¾n°9½D½½ ¯¾©–fn°¾nf ¾ ¯ °¾f©  ¾n ¾ ff¾  °½¯ –f  ¯¾n f  © J¾n½    .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ ¾ ¯¾– .  f  © n% ¾n½ ¾  %¯¾– ½½½ f  ¾f  °.¾– ½ ¾ n f ° ¾ –°   ¾f ¾f °f©f 9½D½  ½ ½ ¾©–fn°¾nf ¾ ¯ °¾f©   D¾ –¯ °¾ I f°  ° fn½ff n  f¾ °ff½nfn°  °f¾ ¾f f°       ½ ¾ I  ¾½f n  ½ ¯¾ °f  f¾fn½½ © ¯½¾  ¯n½ ¯½¯f°¯ °¾f© n°. ¯ f¯fff¾   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ . n½  ¾ f f¯f° f¯¾¾f–¯ °¾ f f n½   – n½½ff° ½ f °  fn  ¾   .n½$$°–.  –   –¾f – f °¾½ffD¾f¾ –¾f ¾ . ¾– J¾n½ –¯ °¾%%¾ n½ ff f–¯ °  °  f f f¾ ¾ ½¾  ¾f¯f¾ f–¯ °  ¯f° f¯f¾  ¾ f¾   °n° 9f¾¾ %D¾ 9f¾¾ ¾%  © n½9J 9f¾¾ °¾½ ¯ ¾ff€°n° 9f¾¾ ½ffn f°nf¯½  n°f¾ ³f  fn°f¾ ³f  ¾n ¯¾½¾½ ¾ °¾  f  .. ¯ °¾ff¾ ¾n¾  ½ff¾¾½f¾¾ f ¾ ©° © ¯½ – ½n   .  –   –¾f – f °¾½ffD¾f¾ –¾f ¾  f .  f  © n% n½9J 9f¾¾ %Jn½   J  . °f¾ ³f ½f¾¾  f  9f¾¾ %%f¾–°f¯¾  © n½9Jffff  f  –n°f°nf€°n°   °  ¾  ©   ¾f¯¾ ½f¾¾ f  9f¾¾ %% ½fff¯ff ¾f€°n° –f¾–°f ¾n¾ ff ½f¾¾  °fff  ½f¾¾   . °¾f¾  ° °nf   f½¾ °f f ¾½°  fff¾n¾f¾  f¯ °f°  ¯ €nf°  ½nf½n  ¾½  ¾ff¾  ¾ f  ½¯ n¯f°  n °n°I ½ff. ¯   ½¾ °f  f ¾€  f""" ¯f¯ €nfn°       ½¯½  °° f  ff© . I¾f°   @f I n½f°f %.  fn°. ¯f° ¾. ¯½ ©¾½n°¾f%  ¾½ ¾f °       f¯  .
Copyright © 2024 DOKUMEN.SITE Inc.