commit 3055503bbd291e0f88aa60edfb5b6fac4c0a44fc Author: binlaab <71317374+binlaab@users.noreply.github.com> Date: Fri Nov 7 20:42:16 2025 +0100 argumentos, fechas diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/final.py b/final.py new file mode 100644 index 0000000..8812b65 --- /dev/null +++ b/final.py @@ -0,0 +1,234 @@ +import regex as re +import sys + +# -n: normaliza el fichero en pos[-n] + 1 con los formatos: +# +34[numero] +# formato 2 para instantes temporales +# formato 3 para coordenadas +# nif, producto y precio originales +# se puede pasar f1 para el formato de las fechas y f2 para las coordenadas [param. opc.] + +# -sphone, -snif: filtran por teléfono y nif +# -stime: filtran de una fecha hasta otra +# -slocation: puntos extra + +# la salida aparece como campo1 ; campo2 ; campo3 ; ... +# los errores de formato o sintaxis en los argumentos son exit N +# los errores en el archivo se ignoran + + +letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'] +reemplazo_nie = { + 'X': 0, + 'Y': 1, + 'Z': 2, + None: '', +} +def comprobarLetra(dni: str): + num = int(dni[:-1]) + letra = dni[-1] + if letras[num % 23] != letra: + return False + else: + return True + +t = r"(?P\d{3})-(?P\d{3})-(?P\d{3})" +T = re.compile(t) + +def validarTelefono(telefono): + match = T.match(telefono) + if match is not None: + return { + 'parte1': match.group('parte1'), + 'parte2': match.group('parte2'), + 'parte3': match.group('parte3'), + } + + return None + +d = r"(((?P[X-Z])*(?P\d{7}))|(?P\d{8}))-(?P[A-HJ-NP-TV-Z])" # cambiar, el nie son 7 +D = re.compile(d, flags=re.I|re.M) + +def validarDni(dni): + match = D.match(dni) + if match and match['letrainicio']: + valido = comprobarLetra(f"{reemplazo_nie[match['letrainicio']]}{match['numero']}{match['letrafinal']}") + if valido: + return { + 'letrainicio': match.group('letrainicio'), + 'numero': match.group('numero'), + 'letrafinal': match.group('letrafinal'), + } + return None + elif match and not match['letrainicio']: + valido = comprobarLetra(f"{match['numero']}{match['letrafinal']}") + if valido: + return { + 'numero': match['numero'], + 'letrafinal': match.group('letrafinal'), + } + return None + else: + return None + +i = r"((?P0{3}[1-9]|\d{4})-(?P0\d|1[0-2])-(?P[0-2]\d|3[01])\s+(?P[0-1]\d|2[0-4]):(?P[0-5]\d))|((?Pjanuary|february|march|april|may|june|july|august|september|october|november|december)\s+(?P\d|[12]\d|3[01]),\s+(?P0{3}[1-9]|\d{4})\s+(?P[1-9]|1[0-2]):(?P[0-5]\d)\s+(?P[ap]m))|((?P[01]\d|2[0-3]):(?P[0-5]\d):(?P[0-5]\d)\s+(?P[0-2]\d|3[01])/(?P0\d|1[0-2])/(?P0{3}[1-9]|\d{4}))" +I = re.compile(i, flags=re.IGNORECASE) +def validarInstante(instante): + match = I.match(instante) + if match and not match['segundo']: + return { + 'anyo': match.group('anyo'), + 'mes': match.group('mes'), + 'dia': match.group('dia'), + 'hora': match.group('hora'), + 'minuto': match.group('minuto'), + } + elif match and match['segundo']: + return { + 'anyo': match.group('anyo'), + 'mes': match.group('mes'), + 'dia': match.group('dia'), + 'hora': match.group('hora'), + 'minuto': match.group('minuto'), + 'segundo': match.group('segundo'), + } + return None + + +def decimalGrado(numero): + a = float(numero) + grados = int(numero) + b = a - grados + minutos = int(b*60) + c = b*60-minutos + segundos = int(c*60) + return grados,minutos,segundos + + +def gradoDecimal(grados,minutos,segundos): + a = float(segundos)/3600 + float(minutos)/60 + float(grados) + return a + + +def coord(cadena, form=1): + R = r"( *(?P([0-2][0-9][0-9])|(3[0-5][0-9]))(?P[0-6][0-9])(?P[0-6][0-9]\.\d{4})(?P(N|S))(?P([0-2][0-9][0-9])|(3[0-5][0-9]))(?P[0-6][0-9])(?P[0-6][0-9]\.\d{4})(?P(W|E)) *)|( *(?P((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P([0-5][0-9])|[0-9])' *(?P(([0-5][0-9])|[0-9])\.\d{4})\" *(?P(N|S)) *, *(?P((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P([0-5][0-9])|[0-9])' *(?P(([0-5][0-9])|[0-9])\.\d{4})\" *(?P(W|E)) *)|( *((?P[+|\-| ])(?P(([1-8]?[0-9])\.\d+)|90)) *, *((?P[+|\-| ])(?P([1][1-7][1-9]\.\d+)|([1-8]?[0-9]\.\d+))|90) *)" + P = re.compile( R ) + if P.fullmatch(cadena): + M = P.fullmatch(cadena) + if M.group("Grados1"): + grados1 = M.group("Grados1") + grados2 = M.group("Grados2") + minutos1 = M.group("Minutos1") + minutos2 = M.group("Minutos2") + segundos1 = M.group("Segundos1") + segundos2 = M.group("Segundos2") + letra1 = M.group("Letra1") + letra2 = M.group("Letra2") + num1 = gradoDecimal(grados1,minutos1,segundos1) + num2 = gradoDecimal(grados2,minutos2,segundos2) + if letra1 == 'N': + simb1 = '+' + else: + simb1 = '-' + if letra2== 'E': + simb2 = '+' + else: + simb2 = '-' + else: + num1 = float(M.group("Coord1")) + num2 = float(M.group("Coord2")) + simb1 = M.group("Signo1") + simb2 = M.group("Signo2") + + if form == 1: + return f'{simb1}{round(num1,4)}, {simb2}{round(num2,4)}' + elif form == 2: + grados1, minutos1, segundos1= decimalGrado(num1) + grados2, minutos2, segundos2 = decimalGrado(num2) + if simb1 == '+': + letra1 = 'N' + else: + letra1 = 'S' + if simb2 == '+': + letra2 = 'E' + else: + letra2 = 'W' + return f'{grados1}º {minutos1}\' {segundos1:}.0000" {letra1}, {grados2}º {minutos2}\' {segundos2}.0000" {letra2}' + elif form == 3: + grados1, minutos1, segundos1 = decimalGrado(num1) + grados2, minutos2, segundos2 = decimalGrado(num2) + if simb1 == '+': + letra1 = 'N' + else: + letra1 = 'S' + if simb2 == '+': + letra2 = 'E' + else: + letra2 = 'W' + return f'{grados1:0>3}{minutos1:0>2}{segundos1:0>2}.0000{letra1}{grados2:0>3}{minutos2:0>2}{segundos2:0>2}.0000{letra2}' + + else: + return None + +def validarEntrada(entrada): + telefono, dni, fecha, coordenadas, producto, coste = entrada.split(";") + tel = validarTelefono(telefono.strip()) + dni = validarDni(dni.strip()) + fecha = validarInstante(fecha.strip()) + coordenadas = coord(coordenadas.strip()) + + valores = { + 'telefono': tel, + 'dni': dni, + 'fecha': fecha, + 'coordenadas': coordenadas, + 'producto': producto, + 'coste': coste, + } + for k in valores.keys(): + if valores[k] is None: + return None + return valores +def main(): + print(validarTelefono("623-121-153")) + print(validarDni("48755850-J")) + print(validarDni("Z9876543-A")) + print(validarInstante("october 12, 1925 1:12 pm")) + l = open("log.txt", encoding="utf-8") + for linea in l.readlines(): + pass + # print(validarEntrada(linea.strip())) + + + # n, sphone, stime, snif + arg_prueba = "-sphone 123456789 telefonos -stime 11:11:11 11:11:12 tiempos -n normalizar -snif 12345678B fichero" + argumentos = r"(?P-sphone (?P\S*) (?P\S*))|(?P-stime (?P\S*) (?P\S*) (?P\S*))|(?P-n (?P\S*))|(?P-snif (?P\S*) (?P\S*))" + A = re.compile(argumentos) + match = A.finditer(arg_prueba) + + argv = sys.argv + try: + if '-n' in argv: + fichero = argv[argv.index('-n') + 1] + formato_fecha = int(argv[argv.index('-n') + 2]) + formato_coordenadas = int(argv[argv.index('-n') + 3]) + print("n") + else: + if '-sphone' in argv: + telefono = int(argv[argv.index('-sphone') + 1]) + fichero = argv[argv.index('-sphone') + 2] + print("sphone") + if '-snif' in argv: + nif = argv[argv.index('-snif') + 1] + fichero = argv[argv.index('-snif') + 2] + if '-stime' in argv: + desde = argv[argv.index('-stime') + 1] + hasta = argv[argv.index('-stime') + 2] + fichero = argv[argv.index('-stime') + 3] + except Exception as e: + print(e) + + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..5f75d64 --- /dev/null +++ b/log.txt @@ -0,0 +1,100 @@ ++74 34 2 9 342035038 ; 76776942-K ; 1981-01-11 04:09 ; -70.28,-161.71 ; MacBook ; 2096.4€ +194-373-047 ; 76776942-K ; DeCeMBER 3, 2059 10:01 Am ; 0691836.0000S0180824.0000W ; iPad ; 1475.6€ ++74 34 2 9 342035038 ; 16652611-J ; 11:44:30 22/04/1964 ; 54° 0' 0.0000"N , 126° 16' 12.0000" W ; iMac ; 1848€ ++46 83 1 7909 754 ; 99258096-D ; JanUArY 1, 1916 6:46 Am ; +73.86 , -169.12 ; iMac ; 1920.8€ ++34 814838821 ; 71914910-M ; 2026-02-25 18:38 ; 0095436.0000S1392060.0000W ; iMac ; 1761€ ++74 34 2 9 342035038 ; 03289271-H ; MaY 24, 2057 9:44 pm ; +41.4 , 152.15 ; iPhone ; 2200.7$ +814-838-821 ; 16652611-J ; SePtEMBeR 5, 1984 1:17 Pm ; 0444724.0000S1110524.0000E ; iPhone ; 1010.4€ ++4246 02 569 047 ; 31351294-V ; marCh 27, 2098 1:47 aM ; 89° 29' 24.0000" N ,13°22' 12.0000" E ; Apple Watch ; 1367.3$ ++979 5 1564 3 741 ; 23839279-D ; 04:40:05 14/03/1920 ; 6° 2' 60.0000" S ,109° 34'12.0000" E ; Airpods ; 1716€ ++34 020232975 ; 61333293-K ; MAy 19, 1987 11:43 am ; -32.53, 161.67 ; iPad ; 793$ +194-373-047 ; 31351294-V ; oCtoBER 4, 2091 2:41 am ; 0751236.0000N0410712.0000E ; iMac ; 650€ ++34 068701342 ; 59573254-B ; 1955-08-21 14:19 ; 44°17' 60.0000"S , 75°55' 12.0000" W ; Apple Watch ; 2035.8$ +020-232-975 ; 23839279-D ; 21:08:15 16/09/2063 ; 1° 42' 0.0000"S , 54° 45' 0.0000"W ; Airpods ; 1307.3$ ++979 5 1564 3 741 ; Z4573721-S ; DeCeMber 21, 1927 10:19 PM ; 73° 47' 60.0000"S , 154° 37' 48.0000"E ; MacBook ; 1361€ +814-838-821 ; 85496169-V ; 1975-09-13 00:44 ; +72.55 , -66.29 ; Apple Watch ; 1189$ ++34 068701342 ; 44301477-G ; 2072-02-15 03:26 ; +58.16 , +141.67 ; MacBook ; 1309€ +194-373-047 ; 31351294-V ; 13:29:37 04/09/1943 ; 0131836.0000N0783224.0000W ; iPad ; 1364.4$ ++4246 02 569 047 ; 19902072-B ; 10:21:57 08/06/1907 ; -79.01,-121.96 ; iMac ; 1339.0€ ++74 34 2 9 342035038 ; 76776942-K ; 10:57:48 13/02/1900 ; 0853900.0000N0400600.0000E ; MacBook ; 967.8$ ++4246 02 569 047 ; 13225435-K ; 1993-06-15 16:43 ; 0845400.0000N0385924.0000W ; iPad ; 2052$ +814-838-821 ; 63369686-V ; 23:09:50 20/09/1952 ; 0434500.0000S1485736.0000W ; Airpods ; 686€ +020-232-975 ; 33631289-E ; MAy 5, 2060 4:51 PM ; 73° 56' 24.0000" N , 20° 10' 12.0000" E ; Airpods ; 621.6€ ++979 5 1564 3 741 ; 61333293-K ; octObEr 15, 2061 8:04 Am ; 0565812.0000S0234912.0000E ; iPhone ; 1312.2€ ++979 5 1564 3 741 ; 80104766-K ; 1974-04-29 07:51 ; 0612024.0000N1493412.0000E ; MacBook ; 1704.4$ ++34 020232975 ; 03289271-H ; 12:24:00 30/05/1967 ; 0274160.0000N1374236.0000E ; MacBook ; 1704€ ++480 54076 13 04 9 8 ; 13225435-K ; aUgUST 23, 2014 7:44 Pm ; 0754500.0000N0180224.0000W ; iPad ; 1007$ ++74 34 2 9 342035038 ; 31351294-V ; mAY 27, 2062 1:52 am ; -4.99,-125.75 ; Apple Watch ; 1723.5€ ++480 54076 13 04 9 8 ; 44301477-G ; 1937-09-25 21:12 ; 49° 33' 36.0000" S, 27° 33' 36.0000" E ; Apple Watch ; 692.1$ +068-701-342 ; 63369686-V ; jUly 10, 2029 4:47 am ; 72° 13' 48.0000" S, 31°56' 24.0000" W ; iPad ; 2095$ ++34 505162532 ; 59573254-B ; 2005-05-10 09:09 ; -58.91, +0.47 ; MacBook ; 2009€ ++34 505162532 ; 33631289-E ; 14:54:11 10/10/2020 ; +15.08 , -98.29 ; iPad ; 769.2$ +505-162-532 ; 99258096-D ; JUNE 25, 1983 7:25 Pm ; 68° 2' 60.0000"S, 121° 24'36.0000" E ; iPhone ; 1680.5€ +068-701-342 ; 31351294-V ; november 5, 1925 7:36 Pm ; 54°30'36.0000" S , 101° 17'24.0000"W ; Apple Watch ; 941$ ++34 505162532 ; 23839279-D ; jUnE 26, 1960 9:21 aM ; 27° 3' 36.0000" N, 9° 43' 12.0000" W ; MacBook ; 2395$ ++979 5 1564 3 741 ; 23839279-D ; 2024-06-19 07:50 ; 6.66 ,+164.46 ; Airpods ; 2170.2$ ++34 505162532 ; 44301477-G ; 16:34:51 31/01/2014 ; -83.89 , +58.75 ; Apple Watch ; 199.5€ ++46 83 1 7909 754 ; 61333293-K ; FEBrUaRy 2, 1911 6:41 PM ; 0481500.0000N0945248.0000W ; MacBook ; 239€ ++979 5 1564 3 741 ; 85496169-V ; 13:42:10 26/05/1927 ; 24° 15'36.0000" S , 143° 13' 48.0000"W ; iMac ; 533.0€ ++34 194373047 ; 76776942-K ; 04:16:31 07/02/1981 ; 74°28' 12.0000" S , 46°4' 12.0000"E ; iMac ; 715.6€ ++74 34 2 9 342035038 ; 23839279-D ; 2071-06-18 04:34 ; 87.63 , 108.93 ; Apple Watch ; 401.5€ ++4246 02 569 047 ; 37987190-E ; 1973-04-12 07:53 ; +24.99 , +68.17 ; iMac ; 976.0$ ++34 505162532 ; 90973648-T ; 04:00:51 05/07/2063 ; -87.26 ,-10.72 ; iMac ; 2393.1$ +020-232-975 ; 99258096-D ; 1983-10-26 18:23 ; 0674724.0000N0983036.0000W ; iPad ; 1054.7$ ++979 5 1564 3 741 ; 71914910-M ; DECeMbER 22, 1970 12:37 am ; 50°2' 24.0000" S , 80° 49' 12.0000" W ; MacBook ; 273$ ++4246 02 569 047 ; 33631289-E ; nOVeMBEr 17, 2097 11:18 am ; 49° 41'24.0000" N ,35° 43' 12.0000" E ; Apple Watch ; 2001$ ++4246 02 569 047 ; 33631289-E ; 1994-05-06 17:21 ; -55.41 ,+27.83 ; iPhone ; 2358€ ++979 5 1564 3 741 ; 99258096-D ; 13:12:37 25/06/2093 ; +20.83 , -135.97 ; iPhone ; 2154.5$ ++979 5 1564 3 741 ; 16652611-J ; feBrUArY 1, 2047 2:15 PM ; 0840824.0000N0952512.0000W ; iPad ; 529€ ++4246 02 569 047 ; 61333293-K ; auguSt 20, 1927 5:59 PM ; 20.44 , -111.27 ; Apple Watch ; 1452€ +020-232-975 ; 80104766-K ; 05:16:03 24/01/1983 ; 0753712.0000N1622212.0000E ; iPhone ; 646.9$ ++34 194373047 ; 19902072-B ; 1972-02-25 07:37 ; 0061012.0000N0942736.0000E ; Airpods ; 2443.5$ ++34 814838821 ; Z4573721-S ; 01:21:10 04/03/1924 ; 0515212.0000S1095212.0000E ; Apple Watch ; 1732.6€ ++4246 02 569 047 ; 13225435-K ; 19:29:18 24/05/1938 ; +83.37, -174.2 ; Airpods ; 2032.6€ ++4246 02 569 047 ; 03289271-H ; 1925-10-13 14:17 ; 0103224.0000S0150412.0000E ; MacBook ; 213$ ++74 34 2 9 342035038 ; Z4573721-S ; 04:31:58 07/08/1915 ; 0720712.0000N1272736.0000E ; MacBook ; 1318.7$ +505-162-532 ; 37987190-E ; ApRil 18, 2040 3:23 aM ; 22° 5' 24.0000" N , 158° 39' 0.0000" E ; Airpods ; 333.1€ ++46 83 1 7909 754 ; 71914910-M ; 16:46:34 27/02/1966 ; 39°6'36.0000" N,55° 1' 12.0000" W ; iPhone ; 2114.4€ ++74 34 2 9 342035038 ; Z4573721-S ; 02:23:28 24/11/2056 ; 0455924.0000S1083224.0000W ; iMac ; 351$ +068-701-342 ; 79179656-V ; 15:03:39 28/04/2036 ; 0441124.0000S0633600.0000E ; iPad ; 2379€ ++4246 02 569 047 ; 76776942-K ; janUARy 12, 1968 7:14 Pm ; -32.39 , +90.7 ; iMac ; 970.6$ ++979 5 1564 3 741 ; 63369686-V ; 22:31:36 14/11/1999 ; -29.52 , -66.6 ; Apple Watch ; 1493€ ++46 83 1 7909 754 ; 79179656-V ; 1919-06-15 16:40 ; 69° 4' 12.0000" S ,21° 49' 12.0000" W ; Apple Watch ; 700.7€ ++46 83 1 7909 754 ; 71914910-M ; JuLY 23, 1929 8:30 PM ; -63.91 , +78.09 ; Airpods ; 1782€ +068-701-342 ; 16652611-J ; AuGuST 25, 1989 2:25 PM ; +86.81 , -91.05 ; iMac ; 2348$ ++4246 02 569 047 ; 71914910-M ; SEPTEmbeR 5, 1977 3:50 pm ; 80° 41' 24.0000" S ,75° 39' 0.0000" E ; Airpods ; 1280.6€ ++34 814838821 ; 99258096-D ; MaRch 12, 2058 5:26 PM ; 21°15'36.0000"S , 168° 37'12.0000" W ; iPhone ; 1370$ ++480 54076 13 04 9 8 ; 31351294-V ; sepTEMBeR 23, 2048 5:10 AM ; 0062436.0000S0331912.0000W ; iMac ; 350$ ++34 020232975 ; 63369686-V ; JunE 18, 1947 2:33 pM ; 0120824.0000S0950824.0000W ; iMac ; 975.4$ ++34 814838821 ; 99258096-D ; dEcEMBEr 18, 1984 3:27 Pm ; 37° 35' 24.0000" N , 127° 20' 60.0000" W ; iMac ; 2250.5$ +068-701-342 ; 90973648-T ; 2006-02-15 06:57 ; 0854124.0000S1005400.0000W ; iPhone ; 2258$ ++4246 02 569 047 ; 37987190-E ; 1940-06-22 19:56 ; -30.9 ,-11.66 ; iPhone ; 2327.2$ ++4246 02 569 047 ; 44301477-G ; 01:49:16 27/12/2039 ; 34°47' 60.0000" S, 117° 44'24.0000" W ; iMac ; 175.4$ ++34 068701342 ; 76776942-K ; 12:16:24 27/02/1980 ; 0161536.0000N0600600.0000E ; iPad ; 723$ ++34 068701342 ; 19902072-B ; jUnE 4, 1961 12:37 Am ; 0333860.0000N0333824.0000E ; iPad ; 2377.6$ ++4246 02 569 047 ; 37987190-E ; 1915-03-28 23:51 ; 0363000.0000N0325324.0000E ; iPad ; 1727$ ++74 34 2 9 342035038 ; 79179656-V ; 08:24:38 21/05/2015 ; 41.59, +148.45 ; Apple Watch ; 196$ ++979 5 1564 3 741 ; 33631289-E ; 20:24:56 17/06/2049 ; 0041236.0000N0345324.0000E ; iPad ; 990$ +505-162-532 ; 37987190-E ; mAY 22, 1977 4:09 PM ; -14.02 ,+173.45 ; MacBook ; 706$ +194-373-047 ; 79179656-V ; AUgUSt 20, 2056 4:13 aM ; -51.25 ,+138.57 ; MacBook ; 1809€ +194-373-047 ; 90973648-T ; 2002-06-29 11:35 ; -63.72, +75.89 ; iPhone ; 1932.9€ ++34 505162532 ; 16652611-J ; AugUSt 27, 1930 10:30 pm ; 78°46' 48.0000" N, 122°1' 12.0000" E ; iMac ; 118$ ++4246 02 569 047 ; 33631289-E ; 2021-11-12 23:13 ; 0821648.0000S1394160.0000W ; Apple Watch ; 2231€ ++46 83 1 7909 754 ; 23839279-D ; APRIl 16, 1926 5:56 aM ; 2° 30' 0.0000" S, 153° 15'36.0000" E ; Apple Watch ; 1345.8€ ++34 505162532 ; 23839279-D ; 1967-08-15 07:58 ; 59°54'36.0000" S , 14° 36' 36.0000" E ; iMac ; 156.7€ ++4246 02 569 047 ; 80104766-K ; 2005-01-07 07:10 ; -33.4 , -172.18 ; iMac ; 203$ ++480 54076 13 04 9 8 ; 23839279-D ; 00:49:43 22/05/1953 ; 0491348.0000N1051200.0000W ; iPad ; 2355.9€ +020-232-975 ; 19902072-B ; JaNUAry 30, 1915 9:02 am ; -42.0 , +21.36 ; Apple Watch ; 1672$ ++4246 02 569 047 ; 85496169-V ; 03:18:08 19/12/2019 ; 24.15, +16.49 ; Airpods ; 1196.8$ +068-701-342 ; 99258096-D ; 22:55:25 29/08/2084 ; 0784912.0000S1151760.0000W ; MacBook ; 683€ ++34 505162532 ; 37987190-E ; 1938-02-26 12:13 ; 68° 45' 0.0000" N ,61° 53' 60.0000"W ; iPhone ; 1991$ ++34 505162532 ; 13225435-K ; 1952-07-24 22:58 ; -47.85 ,-65.12 ; iPhone ; 1875$ ++979 5 1564 3 741 ; 37987190-E ; 2056-09-24 08:32 ; -48.93 , -29.25 ; Airpods ; 2016.7$ +020-232-975 ; 13225435-K ; 1926-05-07 14:44 ; 0534236.0000N1595660.0000W ; iPhone ; 231.3$ ++979 5 1564 3 741 ; 31351294-V ; 05:16:43 10/07/1913 ; +9.11 , +121.19 ; Apple Watch ; 1773€ ++34 814838821 ; 99258096-D ; 1901-03-07 17:37 ; 85°43' 12.0000"N , 103° 52' 48.0000" W ; iPad ; 1353$ ++46 83 1 7909 754 ; 61333293-K ; 1932-06-20 21:51 ; 39° 19' 12.0000" N , 29° 25' 48.0000" W ; iPhone ; 1435.9$ ++74 34 2 9 342035038 ; 85496169-V ; 23:33:11 13/05/2034 ; 0453600.0000S0734836.0000W ; MacBook ; 1809.4$ ++34 505162532 ; 37987190-E ; 2042-12-01 02:14 ; -79.5 , +21.27 ; Apple Watch ; 2256.3$ +505-162-532 ; 80104766-K ; 1925-05-29 11:59 ; +61.3 , -163.57 ; Apple Watch ; 1888$ ++46 83 1 7909 754 ; 31351294-V ; SEPtEMBeR 29, 2074 5:29 PM ; -33.76 , +179.03 ; MacBook ; 1241.1€