├── New folder └── Hello.txt ├── README.md ├── Week-2 ├── Counting Email in a Database │ ├── emaildb.py │ ├── emaildb.sqlite │ └── mbox.txt └── Our First Database │ ├── Answer.txt │ └── sql1.db ├── Week-3 └── Multi-Table Database - Tracks │ ├── Library.xml │ ├── README.txt │ ├── trackdb.sqlite │ └── tracks.py ├── Week-4 ├── Answer.txt ├── roster.py ├── roster_data.json └── rosterdb.sqlite └── Week-5 ├── Geodump.png ├── Geoload.png ├── Mapview.png ├── README.txt ├── geodata.sqlite ├── geodump.py ├── geoload.py ├── where.data ├── where.html └── where.js /New folder/Hello.txt: -------------------------------------------------------------------------------- 1 | Hello -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Coursera--Using-Databases-with-Python 2 | Here You can find All weeks Assignments of Coursera Course - Using Databases with Python 3 | -------------------------------------------------------------------------------- /Week-2/Counting Email in a Database/emaildb.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | 3 | conn = sqlite3.connect('emaildb.sqlite') 4 | cur = conn.cursor() 5 | 6 | cur.execute(''' 7 | DROP TABLE IF EXISTS Counts''') 8 | 9 | cur.execute(''' 10 | CREATE TABLE Counts (org TEXT, count INTEGER)''') 11 | 12 | fname = raw_input('Enter file name: ') 13 | if ( len(fname) < 1 ) : fname = 'mbox.txt' 14 | fh = open(fname) 15 | for line in fh: 16 | if not line.startswith('From: ') : continue 17 | pieces = line.split() 18 | email = pieces[1] 19 | #change in logic 20 | parts = email.split('@') 21 | org = parts[-1] 22 | print org 23 | cur.execute('SELECT count FROM Counts WHERE org = ? ', (org, )) 24 | row = cur.fetchone() 25 | if row is None: 26 | cur.execute('''INSERT INTO Counts (org, count) 27 | VALUES ( ?, 1 )''', ( org, ) ) 28 | else : 29 | cur.execute('UPDATE Counts SET count=count+1 WHERE org = ?', 30 | (org, )) 31 | # This statement commits outstanding changes to disk each 32 | # time through the loop - the program can be made faster 33 | # by moving the commit so it runs only after the loop completes 34 | conn.commit() 35 | 36 | # https://www.sqlite.org/lang_select.html 37 | sqlstr = 'SELECT org, count FROM Counts ORDER BY count DESC LIMIT 10' 38 | 39 | print 40 | print "Counts:" 41 | for row in cur.execute(sqlstr) : 42 | print str(row[0]), row[1] 43 | 44 | cur.close() 45 | 46 | -------------------------------------------------------------------------------- /Week-2/Counting Email in a Database/emaildb.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-2/Counting Email in a Database/emaildb.sqlite -------------------------------------------------------------------------------- /Week-2/Our First Database/Answer.txt: -------------------------------------------------------------------------------- 1 | Run this command to get Answer : SELECT hex(name || age) AS X FROM Ages ORDER BY X 2 | 3 | Answer : 43616365796C65653339 -------------------------------------------------------------------------------- /Week-2/Our First Database/sql1.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-2/Our First Database/sql1.db -------------------------------------------------------------------------------- /Week-3/Multi-Table Database - Tracks/README.txt: -------------------------------------------------------------------------------- 1 | TBD 2 | 3 | -------------------------------------------------------------------------------- /Week-3/Multi-Table Database - Tracks/trackdb.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-3/Multi-Table Database - Tracks/trackdb.sqlite -------------------------------------------------------------------------------- /Week-3/Multi-Table Database - Tracks/tracks.py: -------------------------------------------------------------------------------- 1 | import xml.etree.ElementTree as ET 2 | import sqlite3 3 | 4 | conn = sqlite3.connect('trackdb.sqlite') 5 | cur = conn.cursor() 6 | 7 | # Make some fresh tables using executescript() 8 | cur.executescript(''' 9 | DROP TABLE IF EXISTS Artist; 10 | DROP TABLE IF EXISTS Genre; 11 | DROP TABLE IF EXISTS Album; 12 | DROP TABLE IF EXISTS Track; 13 | 14 | 15 | CREATE TABLE Artist ( 16 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 17 | name TEXT UNIQUE 18 | ); 19 | 20 | CREATE TABLE Genre ( 21 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 22 | name TEXT UNIQUE 23 | ); 24 | 25 | 26 | CREATE TABLE Album ( 27 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 28 | artist_id INTEGER, 29 | title TEXT UNIQUE 30 | ); 31 | 32 | CREATE TABLE Track ( 33 | id INTEGER NOT NULL PRIMARY KEY 34 | AUTOINCREMENT UNIQUE, 35 | title TEXT UNIQUE, 36 | album_id INTEGER, 37 | genre_id INTEGER, 38 | len INTEGER, rating INTEGER, count INTEGER 39 | ); 40 | ''') 41 | 42 | 43 | fname = raw_input('Enter file name: ') 44 | if ( len(fname) < 1 ) : fname = 'Library.xml' 45 | 46 | # Track ID369 47 | # NameAnother One Bites The Dust 48 | # ArtistQueen 49 | def lookup(d, key): 50 | found = False 51 | for child in d: 52 | if found : return child.text 53 | if child.tag == 'key' and child.text == key : 54 | found = True 55 | return None 56 | 57 | stuff = ET.parse(fname) 58 | all = stuff.findall('dict/dict/dict') 59 | print 'Dict count:', len(all) 60 | for entry in all: 61 | if ( lookup(entry, 'Track ID') is None ) : continue 62 | 63 | name = lookup(entry, 'Name') 64 | artist = lookup(entry, 'Artist') 65 | album = lookup(entry, 'Album') 66 | #added this 67 | genre = lookup(entry,'Genre') 68 | count = lookup(entry, 'Play Count') 69 | rating = lookup(entry, 'Rating') 70 | length = lookup(entry, 'Total Time') 71 | 72 | if name is None or artist is None or album is None or genre is None: 73 | continue 74 | 75 | print name, artist, album, genre, count, rating, length 76 | 77 | cur.execute('''INSERT OR IGNORE INTO Artist (name) 78 | VALUES ( ? )''', ( artist, ) ) 79 | cur.execute('SELECT id FROM Artist WHERE name = ? ', (artist, )) 80 | artist_id = cur.fetchone()[0] 81 | #Added this 82 | cur.execute('''INSERT OR IGNORE INTO Genre (name) 83 | VALUES ( ? )''', ( genre, ) ) 84 | cur.execute('SELECT id FROM Genre WHERE name = ? ', (genre, )) 85 | genre_id = cur.fetchone()[0] 86 | 87 | cur.execute('''INSERT OR IGNORE INTO Album (title, artist_id) 88 | VALUES ( ?, ? )''', ( album, artist_id ) ) 89 | cur.execute('SELECT id FROM Album WHERE title = ? ', (album, )) 90 | album_id = cur.fetchone()[0] 91 | 92 | cur.execute('''INSERT OR REPLACE INTO Track 93 | (title, album_id, genre_id, len, rating, count) 94 | VALUES ( ?, ?, ?, ?, ?, ? )''', 95 | ( name, album_id, genre_id, length, rating, count ) ) 96 | 97 | conn.commit() 98 | #Added this 99 | sqlstr = 'SELECT Track.title, Artist.name, Album.title, Genre.name FROM Track JOIN Genre JOIN Album JOIN Artist ON Track.genre_id = Genre.ID and Track.album_id = Album.id AND Album.artist_id = Artist.id ORDER BY Artist.name LIMIT 3' 100 | 101 | print 102 | for row in cur.execute(sqlstr) : 103 | print str(row[0]),str(row[1]),str(row[2]),str(row[3]) 104 | 105 | cur.close() 106 | -------------------------------------------------------------------------------- /Week-4/Answer.txt: -------------------------------------------------------------------------------- 1 | Run this command to get Answer : 2 | 3 | SELECT hex(User.name || Course.title || Member.role ) AS X FROM 4 | User JOIN Member JOIN Course 5 | ON User.id = Member.user_id AND Member.course_id = Course.id 6 | ORDER BY X 7 | 8 | Answer : 414A736932303630 -------------------------------------------------------------------------------- /Week-4/roster.py: -------------------------------------------------------------------------------- 1 | import json 2 | import sqlite3 3 | 4 | conn = sqlite3.connect('rosterdb.sqlite') 5 | cur = conn.cursor() 6 | 7 | # Do some setup 8 | cur.executescript(''' 9 | DROP TABLE IF EXISTS User; 10 | DROP TABLE IF EXISTS Member; 11 | DROP TABLE IF EXISTS Course; 12 | 13 | CREATE TABLE User ( 14 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 15 | name TEXT UNIQUE 16 | ); 17 | 18 | CREATE TABLE Course ( 19 | id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 20 | title TEXT UNIQUE 21 | ); 22 | 23 | CREATE TABLE Member ( 24 | user_id INTEGER, 25 | course_id INTEGER, 26 | role INTEGER, 27 | PRIMARY KEY (user_id, course_id) 28 | ) 29 | ''') 30 | 31 | fname = raw_input('Enter file name: ') 32 | if ( len(fname) < 1 ) : fname = 'roster_data.json' 33 | 34 | # [ 35 | # [ "Charley", "si110", 1 ], 36 | # [ "Mea", "si110", 0 ], 37 | 38 | str_data = open(fname).read() 39 | json_data = json.loads(str_data) 40 | 41 | for entry in json_data: 42 | 43 | name = entry[0]; 44 | title = entry[1]; 45 | role = entry[2]; 46 | print name, title, role 47 | 48 | cur.execute('''INSERT OR IGNORE INTO User (name) 49 | VALUES ( ? )''', ( name, ) ) 50 | cur.execute('SELECT id FROM User WHERE name = ? ', (name, )) 51 | user_id = cur.fetchone()[0] 52 | 53 | cur.execute('''INSERT OR IGNORE INTO Course (title) 54 | VALUES ( ? )''', ( title, ) ) 55 | cur.execute('SELECT id FROM Course WHERE title = ? ', (title, )) 56 | course_id = cur.fetchone()[0] 57 | 58 | 59 | 60 | cur.execute('''INSERT OR REPLACE INTO Member 61 | (user_id, course_id, role) VALUES ( ?, ?, ? )''', 62 | ( user_id, course_id, role ) ) 63 | 64 | conn.commit() 65 | -------------------------------------------------------------------------------- /Week-4/roster_data.json: -------------------------------------------------------------------------------- 1 | [ 2 | [ 3 | "Ramone", 4 | "si110", 5 | 1 6 | ], 7 | [ 8 | "Raonaid", 9 | "si110", 10 | 0 11 | ], 12 | [ 13 | "Asiya", 14 | "si110", 15 | 0 16 | ], 17 | [ 18 | "Samir", 19 | "si110", 20 | 0 21 | ], 22 | [ 23 | "Anabella", 24 | "si110", 25 | 0 26 | ], 27 | [ 28 | "Keryis", 29 | "si110", 30 | 0 31 | ], 32 | [ 33 | "Korrin", 34 | "si110", 35 | 0 36 | ], 37 | [ 38 | "Musse", 39 | "si110", 40 | 0 41 | ], 42 | [ 43 | "Brandon", 44 | "si110", 45 | 0 46 | ], 47 | [ 48 | "Leechan", 49 | "si110", 50 | 0 51 | ], 52 | [ 53 | "Rhona", 54 | "si110", 55 | 0 56 | ], 57 | [ 58 | "Ivana", 59 | "si110", 60 | 0 61 | ], 62 | [ 63 | "McKay", 64 | "si110", 65 | 0 66 | ], 67 | [ 68 | "Abdulkadir", 69 | "si110", 70 | 0 71 | ], 72 | [ 73 | "Hajra", 74 | "si110", 75 | 0 76 | ], 77 | [ 78 | "Lennex", 79 | "si110", 80 | 0 81 | ], 82 | [ 83 | "Manar", 84 | "si110", 85 | 0 86 | ], 87 | [ 88 | "Klaudia", 89 | "si110", 90 | 0 91 | ], 92 | [ 93 | "Caroline", 94 | "si110", 95 | 0 96 | ], 97 | [ 98 | "Clio", 99 | "si110", 100 | 0 101 | ], 102 | [ 103 | "Reiss", 104 | "si110", 105 | 0 106 | ], 107 | [ 108 | "Kieryn", 109 | "si110", 110 | 0 111 | ], 112 | [ 113 | "Anna", 114 | "si110", 115 | 0 116 | ], 117 | [ 118 | "Daniels", 119 | "si110", 120 | 0 121 | ], 122 | [ 123 | "Lucus", 124 | "si110", 125 | 0 126 | ], 127 | [ 128 | "Avah", 129 | "si110", 130 | 0 131 | ], 132 | [ 133 | "Umar", 134 | "si110", 135 | 0 136 | ], 137 | [ 138 | "Mustafa", 139 | "si110", 140 | 0 141 | ], 142 | [ 143 | "Natania", 144 | "si110", 145 | 0 146 | ], 147 | [ 148 | "Fasai", 149 | "si110", 150 | 0 151 | ], 152 | [ 153 | "Maanisha", 154 | "si110", 155 | 0 156 | ], 157 | [ 158 | "Briana", 159 | "si110", 160 | 0 161 | ], 162 | [ 163 | "Alison", 164 | "si110", 165 | 0 166 | ], 167 | [ 168 | "Eirini", 169 | "si110", 170 | 0 171 | ], 172 | [ 173 | "Teighan", 174 | "si110", 175 | 0 176 | ], 177 | [ 178 | "Japleen", 179 | "si110", 180 | 0 181 | ], 182 | [ 183 | "Lizzie", 184 | "si110", 185 | 0 186 | ], 187 | [ 188 | "Sebastien", 189 | "si110", 190 | 0 191 | ], 192 | [ 193 | "Abby", 194 | "si106", 195 | 1 196 | ], 197 | [ 198 | "Launi", 199 | "si106", 200 | 0 201 | ], 202 | [ 203 | "Usman", 204 | "si106", 205 | 0 206 | ], 207 | [ 208 | "Gursees", 209 | "si106", 210 | 0 211 | ], 212 | [ 213 | "Odynn", 214 | "si106", 215 | 0 216 | ], 217 | [ 218 | "Laila", 219 | "si106", 220 | 0 221 | ], 222 | [ 223 | "Blue", 224 | "si106", 225 | 0 226 | ], 227 | [ 228 | "Sayeda", 229 | "si106", 230 | 0 231 | ], 232 | [ 233 | "Kadyleigh", 234 | "si106", 235 | 0 236 | ], 237 | [ 238 | "Prabhjot", 239 | "si106", 240 | 0 241 | ], 242 | [ 243 | "Wojciech", 244 | "si106", 245 | 0 246 | ], 247 | [ 248 | "Sylvana", 249 | "si106", 250 | 0 251 | ], 252 | [ 253 | "Sophia", 254 | "si106", 255 | 0 256 | ], 257 | [ 258 | "Rydha", 259 | "si106", 260 | 0 261 | ], 262 | [ 263 | "Tiona", 264 | "si106", 265 | 0 266 | ], 267 | [ 268 | "Koddi", 269 | "si106", 270 | 0 271 | ], 272 | [ 273 | "Iagan", 274 | "si106", 275 | 0 276 | ], 277 | [ 278 | "Nicodemus", 279 | "si106", 280 | 0 281 | ], 282 | [ 283 | "Reilly", 284 | "si106", 285 | 0 286 | ], 287 | [ 288 | "Haroon", 289 | "si106", 290 | 0 291 | ], 292 | [ 293 | "Manon", 294 | "si106", 295 | 0 296 | ], 297 | [ 298 | "Daragh", 299 | "si106", 300 | 0 301 | ], 302 | [ 303 | "Maleetah", 304 | "si106", 305 | 0 306 | ], 307 | [ 308 | "Sofiane", 309 | "si106", 310 | 0 311 | ], 312 | [ 313 | "Warkhas", 314 | "si106", 315 | 0 316 | ], 317 | [ 318 | "Natan", 319 | "si106", 320 | 0 321 | ], 322 | [ 323 | "Glydel", 324 | "si106", 325 | 0 326 | ], 327 | [ 328 | "Kym", 329 | "si106", 330 | 0 331 | ], 332 | [ 333 | "Tareena", 334 | "si106", 335 | 0 336 | ], 337 | [ 338 | "Abrar", 339 | "si106", 340 | 0 341 | ], 342 | [ 343 | "Afifah", 344 | "si106", 345 | 0 346 | ], 347 | [ 348 | "Timothy", 349 | "si106", 350 | 0 351 | ], 352 | [ 353 | "Aoibheann", 354 | "si106", 355 | 0 356 | ], 357 | [ 358 | "Ayaan", 359 | "si106", 360 | 0 361 | ], 362 | [ 363 | "Mayeul", 364 | "si106", 365 | 0 366 | ], 367 | [ 368 | "Crispin", 369 | "si106", 370 | 0 371 | ], 372 | [ 373 | "Mateusz", 374 | "si106", 375 | 0 376 | ], 377 | [ 378 | "Roxanne", 379 | "si106", 380 | 0 381 | ], 382 | [ 383 | "Maeghan", 384 | "si106", 385 | 0 386 | ], 387 | [ 388 | "Adwoa", 389 | "si106", 390 | 0 391 | ], 392 | [ 393 | "Caite", 394 | "si106", 395 | 0 396 | ], 397 | [ 398 | "Aila", 399 | "si106", 400 | 0 401 | ], 402 | [ 403 | "Hopkin", 404 | "si106", 405 | 0 406 | ], 407 | [ 408 | "Reed", 409 | "si106", 410 | 0 411 | ], 412 | [ 413 | "Alyssa", 414 | "si106", 415 | 0 416 | ], 417 | [ 418 | "Kitana", 419 | "si106", 420 | 0 421 | ], 422 | [ 423 | "Mohaddesa", 424 | "si206", 425 | 1 426 | ], 427 | [ 428 | "Kane", 429 | "si206", 430 | 0 431 | ], 432 | [ 433 | "Damian", 434 | "si206", 435 | 0 436 | ], 437 | [ 438 | "Naomie", 439 | "si206", 440 | 0 441 | ], 442 | [ 443 | "Zamaar", 444 | "si206", 445 | 0 446 | ], 447 | [ 448 | "Harley", 449 | "si206", 450 | 0 451 | ], 452 | [ 453 | "Anum", 454 | "si206", 455 | 0 456 | ], 457 | [ 458 | "Ken", 459 | "si206", 460 | 0 461 | ], 462 | [ 463 | "Khaya", 464 | "si206", 465 | 0 466 | ], 467 | [ 468 | "Lillia", 469 | "si206", 470 | 0 471 | ], 472 | [ 473 | "Siyona", 474 | "si206", 475 | 0 476 | ], 477 | [ 478 | "Keela", 479 | "si206", 480 | 0 481 | ], 482 | [ 483 | "Zarah", 484 | "si206", 485 | 0 486 | ], 487 | [ 488 | "Cruz", 489 | "si206", 490 | 0 491 | ], 492 | [ 493 | "AJ", 494 | "si206", 495 | 0 496 | ], 497 | [ 498 | "Haniya", 499 | "si206", 500 | 0 501 | ], 502 | [ 503 | "Greg", 504 | "si206", 505 | 0 506 | ], 507 | [ 508 | "Roos", 509 | "si206", 510 | 0 511 | ], 512 | [ 513 | "Leyre", 514 | "si206", 515 | 0 516 | ], 517 | [ 518 | "Annan", 519 | "si206", 520 | 0 521 | ], 522 | [ 523 | "Katso", 524 | "si206", 525 | 0 526 | ], 527 | [ 528 | "Josephine", 529 | "si206", 530 | 0 531 | ], 532 | [ 533 | "Devayani", 534 | "si206", 535 | 0 536 | ], 537 | [ 538 | "Tymom", 539 | "si206", 540 | 0 541 | ], 542 | [ 543 | "Elizaveta", 544 | "si206", 545 | 0 546 | ], 547 | [ 548 | "Oriana", 549 | "si206", 550 | 0 551 | ], 552 | [ 553 | "Dan", 554 | "si206", 555 | 0 556 | ], 557 | [ 558 | "Haydn", 559 | "si206", 560 | 0 561 | ], 562 | [ 563 | "Farren", 564 | "si206", 565 | 0 566 | ], 567 | [ 568 | "Fraser", 569 | "si206", 570 | 0 571 | ], 572 | [ 573 | "Meyzhward", 574 | "si206", 575 | 0 576 | ], 577 | [ 578 | "Lotus", 579 | "si206", 580 | 0 581 | ], 582 | [ 583 | "Ekhlass", 584 | "si206", 585 | 0 586 | ], 587 | [ 588 | "Mason", 589 | "si206", 590 | 0 591 | ], 592 | [ 593 | "Breagh", 594 | "si206", 595 | 0 596 | ], 597 | [ 598 | "Keegan", 599 | "si301", 600 | 1 601 | ], 602 | [ 603 | "Rafferty", 604 | "si301", 605 | 0 606 | ], 607 | [ 608 | "Joanna", 609 | "si301", 610 | 0 611 | ], 612 | [ 613 | "Takua", 614 | "si301", 615 | 0 616 | ], 617 | [ 618 | "Bronagh", 619 | "si301", 620 | 0 621 | ], 622 | [ 623 | "Rob", 624 | "si301", 625 | 0 626 | ], 627 | [ 628 | "Cecilia", 629 | "si301", 630 | 0 631 | ], 632 | [ 633 | "Shannyn", 634 | "si301", 635 | 0 636 | ], 637 | [ 638 | "Anne", 639 | "si301", 640 | 0 641 | ], 642 | [ 643 | "Oz", 644 | "si301", 645 | 0 646 | ], 647 | [ 648 | "Marysia", 649 | "si301", 650 | 0 651 | ], 652 | [ 653 | "Conner", 654 | "si301", 655 | 0 656 | ], 657 | [ 658 | "Michal", 659 | "si301", 660 | 0 661 | ], 662 | [ 663 | "Hiro", 664 | "si301", 665 | 0 666 | ], 667 | [ 668 | "Malo", 669 | "si301", 670 | 0 671 | ], 672 | [ 673 | "Wei", 674 | "si301", 675 | 0 676 | ], 677 | [ 678 | "Siranne", 679 | "si301", 680 | 0 681 | ], 682 | [ 683 | "Lula", 684 | "si301", 685 | 0 686 | ], 687 | [ 688 | "Kaidey", 689 | "si301", 690 | 0 691 | ], 692 | [ 693 | "Danielle", 694 | "si301", 695 | 0 696 | ], 697 | [ 698 | "Loki", 699 | "si301", 700 | 0 701 | ], 702 | [ 703 | "Caolain", 704 | "si301", 705 | 0 706 | ], 707 | [ 708 | "Sahil", 709 | "si301", 710 | 0 711 | ], 712 | [ 713 | "Aarifah", 714 | "si301", 715 | 0 716 | ], 717 | [ 718 | "Tanith", 719 | "si301", 720 | 0 721 | ], 722 | [ 723 | "Ireayomide", 724 | "si301", 725 | 0 726 | ], 727 | [ 728 | "Angela", 729 | "si301", 730 | 0 731 | ], 732 | [ 733 | "Brodie", 734 | "si301", 735 | 0 736 | ], 737 | [ 738 | "Ramandeep", 739 | "si301", 740 | 0 741 | ], 742 | [ 743 | "Malecia", 744 | "si301", 745 | 0 746 | ], 747 | [ 748 | "Ace", 749 | "si301", 750 | 0 751 | ], 752 | [ 753 | "Cavan", 754 | "si301", 755 | 0 756 | ], 757 | [ 758 | "Dillan", 759 | "si301", 760 | 0 761 | ], 762 | [ 763 | "Jayden", 764 | "si301", 765 | 0 766 | ], 767 | [ 768 | "Lidia", 769 | "si301", 770 | 0 771 | ], 772 | [ 773 | "Jiayi", 774 | "si301", 775 | 0 776 | ], 777 | [ 778 | "Syed", 779 | "si301", 780 | 0 781 | ], 782 | [ 783 | "Carmella", 784 | "si310", 785 | 1 786 | ], 787 | [ 788 | "Melica", 789 | "si310", 790 | 0 791 | ], 792 | [ 793 | "Maison", 794 | "si310", 795 | 0 796 | ], 797 | [ 798 | "Aydon", 799 | "si310", 800 | 0 801 | ], 802 | [ 803 | "Matas", 804 | "si310", 805 | 0 806 | ], 807 | [ 808 | "Maros", 809 | "si310", 810 | 0 811 | ], 812 | [ 813 | "Tianqi", 814 | "si310", 815 | 0 816 | ], 817 | [ 818 | "Cobie", 819 | "si310", 820 | 0 821 | ], 822 | [ 823 | "Rahel", 824 | "si310", 825 | 0 826 | ], 827 | [ 828 | "Taniesha", 829 | "si310", 830 | 0 831 | ], 832 | [ 833 | "Marshall", 834 | "si310", 835 | 0 836 | ], 837 | [ 838 | "Katrin", 839 | "si310", 840 | 0 841 | ], 842 | [ 843 | "Olivia", 844 | "si310", 845 | 0 846 | ], 847 | [ 848 | "Saghun", 849 | "si310", 850 | 0 851 | ], 852 | [ 853 | "Jason", 854 | "si310", 855 | 0 856 | ], 857 | [ 858 | "Hopkin", 859 | "si310", 860 | 0 861 | ], 862 | [ 863 | "Lilah", 864 | "si310", 865 | 0 866 | ], 867 | [ 868 | "Robby", 869 | "si310", 870 | 0 871 | ], 872 | [ 873 | "Romily", 874 | "si310", 875 | 0 876 | ], 877 | [ 878 | "Charley", 879 | "si310", 880 | 0 881 | ], 882 | [ 883 | "Elyssa", 884 | "si310", 885 | 0 886 | ], 887 | [ 888 | "Bayley", 889 | "si310", 890 | 0 891 | ], 892 | [ 893 | "Faizaan", 894 | "si310", 895 | 0 896 | ], 897 | [ 898 | "Tyrone", 899 | "si310", 900 | 0 901 | ], 902 | [ 903 | "Saunders", 904 | "si310", 905 | 0 906 | ], 907 | [ 908 | "Caden", 909 | "si310", 910 | 0 911 | ], 912 | [ 913 | "Robertjohn", 914 | "si310", 915 | 0 916 | ], 917 | [ 918 | "Avraham", 919 | "si310", 920 | 0 921 | ], 922 | [ 923 | "Sambrid", 924 | "si310", 925 | 0 926 | ], 927 | [ 928 | "Sanaa", 929 | "si310", 930 | 0 931 | ], 932 | [ 933 | "Juliette", 934 | "si310", 935 | 0 936 | ], 937 | [ 938 | "Cameron", 939 | "si310", 940 | 0 941 | ], 942 | [ 943 | "Jayme", 944 | "si310", 945 | 0 946 | ], 947 | [ 948 | "Sevin", 949 | "si310", 950 | 0 951 | ], 952 | [ 953 | "Rhiana", 954 | "si310", 955 | 0 956 | ], 957 | [ 958 | "Khayla", 959 | "si310", 960 | 0 961 | ], 962 | [ 963 | "Caidan", 964 | "si310", 965 | 0 966 | ], 967 | [ 968 | "Mikaela", 969 | "si310", 970 | 0 971 | ], 972 | [ 973 | "Arda", 974 | "si310", 975 | 0 976 | ], 977 | [ 978 | "Vince", 979 | "si334", 980 | 1 981 | ], 982 | [ 983 | "Balian", 984 | "si334", 985 | 0 986 | ], 987 | [ 988 | "Rohan", 989 | "si334", 990 | 0 991 | ], 992 | [ 993 | "Eoghan", 994 | "si334", 995 | 0 996 | ], 997 | [ 998 | "Finnean", 999 | "si334", 1000 | 0 1001 | ], 1002 | [ 1003 | "Rylan", 1004 | "si334", 1005 | 0 1006 | ], 1007 | [ 1008 | "Maxim", 1009 | "si334", 1010 | 0 1011 | ], 1012 | [ 1013 | "Kealan", 1014 | "si334", 1015 | 0 1016 | ], 1017 | [ 1018 | "Mehreen", 1019 | "si334", 1020 | 0 1021 | ], 1022 | [ 1023 | "Sevin", 1024 | "si334", 1025 | 0 1026 | ], 1027 | [ 1028 | "Aila", 1029 | "si334", 1030 | 0 1031 | ], 1032 | [ 1033 | "Nazzera", 1034 | "si334", 1035 | 0 1036 | ], 1037 | [ 1038 | "Simra", 1039 | "si334", 1040 | 0 1041 | ], 1042 | [ 1043 | "Pearl", 1044 | "si334", 1045 | 0 1046 | ], 1047 | [ 1048 | "Shelby", 1049 | "si334", 1050 | 0 1051 | ], 1052 | [ 1053 | "Oliver", 1054 | "si334", 1055 | 0 1056 | ], 1057 | [ 1058 | "Willa", 1059 | "si334", 1060 | 0 1061 | ], 1062 | [ 1063 | "Tasha", 1064 | "si334", 1065 | 0 1066 | ], 1067 | [ 1068 | "Oliwia", 1069 | "si334", 1070 | 0 1071 | ], 1072 | [ 1073 | "Fion", 1074 | "si334", 1075 | 0 1076 | ], 1077 | [ 1078 | "Manas", 1079 | "si334", 1080 | 0 1081 | ], 1082 | [ 1083 | "Aydan", 1084 | "si334", 1085 | 0 1086 | ], 1087 | [ 1088 | "Harman", 1089 | "si334", 1090 | 0 1091 | ], 1092 | [ 1093 | "Lawrie", 1094 | "si334", 1095 | 0 1096 | ], 1097 | [ 1098 | "Bruno", 1099 | "si334", 1100 | 0 1101 | ], 1102 | [ 1103 | "Aryn", 1104 | "si334", 1105 | 0 1106 | ], 1107 | [ 1108 | "Kalia", 1109 | "si334", 1110 | 0 1111 | ], 1112 | [ 1113 | "Tomasz", 1114 | "si334", 1115 | 0 1116 | ], 1117 | [ 1118 | "Rana", 1119 | "si334", 1120 | 0 1121 | ], 1122 | [ 1123 | "Lachlan", 1124 | "si334", 1125 | 0 1126 | ], 1127 | [ 1128 | "Kirie", 1129 | "si334", 1130 | 0 1131 | ], 1132 | [ 1133 | "Anish", 1134 | "si334", 1135 | 0 1136 | ], 1137 | [ 1138 | "Coya", 1139 | "si334", 1140 | 0 1141 | ], 1142 | [ 1143 | "Macallum", 1144 | "si334", 1145 | 0 1146 | ], 1147 | [ 1148 | "Kaidy", 1149 | "si334", 1150 | 0 1151 | ], 1152 | [ 1153 | "Sambrid", 1154 | "si334", 1155 | 0 1156 | ], 1157 | [ 1158 | "Amrien", 1159 | "si334", 1160 | 0 1161 | ], 1162 | [ 1163 | "Cailin", 1164 | "si334", 1165 | 0 1166 | ], 1167 | [ 1168 | "Alphonse", 1169 | "si334", 1170 | 0 1171 | ], 1172 | [ 1173 | "Jia", 1174 | "si334", 1175 | 0 1176 | ], 1177 | [ 1178 | "Teos", 1179 | "si334", 1180 | 0 1181 | ], 1182 | [ 1183 | "Jayden", 1184 | "si334", 1185 | 0 1186 | ], 1187 | [ 1188 | "Orin", 1189 | "si334", 1190 | 0 1191 | ], 1192 | [ 1193 | "Alani", 1194 | "si334", 1195 | 0 1196 | ], 1197 | [ 1198 | "Roslin", 1199 | "si334", 1200 | 0 1201 | ], 1202 | [ 1203 | "Jess", 1204 | "si334", 1205 | 0 1206 | ], 1207 | [ 1208 | "Alina", 1209 | "si334", 1210 | 0 1211 | ], 1212 | [ 1213 | "Oluwatoni", 1214 | "si334", 1215 | 0 1216 | ], 1217 | [ 1218 | "Sofie", 1219 | "si334", 1220 | 0 1221 | ], 1222 | [ 1223 | "Garry", 1224 | "si363", 1225 | 1 1226 | ], 1227 | [ 1228 | "Sahana", 1229 | "si363", 1230 | 0 1231 | ], 1232 | [ 1233 | "Veeran", 1234 | "si363", 1235 | 0 1236 | ], 1237 | [ 1238 | "Aishah", 1239 | "si363", 1240 | 0 1241 | ], 1242 | [ 1243 | "Milie", 1244 | "si363", 1245 | 0 1246 | ], 1247 | [ 1248 | "Adain", 1249 | "si363", 1250 | 0 1251 | ], 1252 | [ 1253 | "Caseyleigh", 1254 | "si363", 1255 | 0 1256 | ], 1257 | [ 1258 | "Andy", 1259 | "si363", 1260 | 0 1261 | ], 1262 | [ 1263 | "Zubayr", 1264 | "si363", 1265 | 0 1266 | ], 1267 | [ 1268 | "Kirie", 1269 | "si363", 1270 | 0 1271 | ], 1272 | [ 1273 | "Isaac", 1274 | "si363", 1275 | 0 1276 | ], 1277 | [ 1278 | "Rob", 1279 | "si363", 1280 | 0 1281 | ], 1282 | [ 1283 | "Shae", 1284 | "si363", 1285 | 0 1286 | ], 1287 | [ 1288 | "Siriol", 1289 | "si363", 1290 | 0 1291 | ], 1292 | [ 1293 | "Zac", 1294 | "si363", 1295 | 0 1296 | ], 1297 | [ 1298 | "Kayde", 1299 | "si363", 1300 | 0 1301 | ], 1302 | [ 1303 | "Jayla", 1304 | "si363", 1305 | 0 1306 | ], 1307 | [ 1308 | "Oona", 1309 | "si363", 1310 | 0 1311 | ], 1312 | [ 1313 | "Saoirse", 1314 | "si363", 1315 | 0 1316 | ], 1317 | [ 1318 | "Moray", 1319 | "si363", 1320 | 0 1321 | ], 1322 | [ 1323 | "Siddhant", 1324 | "si363", 1325 | 0 1326 | ], 1327 | [ 1328 | "Aleishia", 1329 | "si363", 1330 | 0 1331 | ], 1332 | [ 1333 | "Atapattu", 1334 | "si363", 1335 | 0 1336 | ], 1337 | [ 1338 | "Chahinez", 1339 | "si363", 1340 | 0 1341 | ], 1342 | [ 1343 | "Darya", 1344 | "si363", 1345 | 0 1346 | ], 1347 | [ 1348 | "Ranolph", 1349 | "si363", 1350 | 0 1351 | ], 1352 | [ 1353 | "Verity", 1354 | "si363", 1355 | 0 1356 | ], 1357 | [ 1358 | "Arya", 1359 | "si363", 1360 | 0 1361 | ], 1362 | [ 1363 | "Michaella", 1364 | "si363", 1365 | 0 1366 | ], 1367 | [ 1368 | "Zuhrah", 1369 | "si363", 1370 | 0 1371 | ], 1372 | [ 1373 | "Arlo", 1374 | "si363", 1375 | 0 1376 | ], 1377 | [ 1378 | "Meleia", 1379 | "si363", 1380 | 0 1381 | ], 1382 | [ 1383 | "Aryankhan", 1384 | "si363", 1385 | 0 1386 | ], 1387 | [ 1388 | "Nader", 1389 | "si363", 1390 | 0 1391 | ], 1392 | [ 1393 | "Stella", 1394 | "si363", 1395 | 0 1396 | ], 1397 | [ 1398 | "Aaraa", 1399 | "si363", 1400 | 0 1401 | ], 1402 | [ 1403 | "Bartosz", 1404 | "si363", 1405 | 0 1406 | ], 1407 | [ 1408 | "Tamika", 1409 | "si363", 1410 | 0 1411 | ], 1412 | [ 1413 | "Emmajane", 1414 | "si363", 1415 | 0 1416 | ], 1417 | [ 1418 | "Aaren", 1419 | "si363", 1420 | 0 1421 | ], 1422 | [ 1423 | "Drue", 1424 | "si364", 1425 | 1 1426 | ], 1427 | [ 1428 | "Lewie", 1429 | "si364", 1430 | 0 1431 | ], 1432 | [ 1433 | "Cyrus", 1434 | "si364", 1435 | 0 1436 | ], 1437 | [ 1438 | "Fiona", 1439 | "si364", 1440 | 0 1441 | ], 1442 | [ 1443 | "Usmah", 1444 | "si364", 1445 | 0 1446 | ], 1447 | [ 1448 | "Nihaal", 1449 | "si364", 1450 | 0 1451 | ], 1452 | [ 1453 | "Meika", 1454 | "si364", 1455 | 0 1456 | ], 1457 | [ 1458 | "Karrah", 1459 | "si364", 1460 | 0 1461 | ], 1462 | [ 1463 | "Angelina", 1464 | "si364", 1465 | 0 1466 | ], 1467 | [ 1468 | "Pagan", 1469 | "si364", 1470 | 0 1471 | ], 1472 | [ 1473 | "Kylan", 1474 | "si364", 1475 | 0 1476 | ], 1477 | [ 1478 | "Khansa", 1479 | "si364", 1480 | 0 1481 | ], 1482 | [ 1483 | "Kavita", 1484 | "si364", 1485 | 0 1486 | ], 1487 | [ 1488 | "Meryl", 1489 | "si364", 1490 | 0 1491 | ], 1492 | [ 1493 | "Toluwani", 1494 | "si364", 1495 | 0 1496 | ], 1497 | [ 1498 | "Maca", 1499 | "si364", 1500 | 0 1501 | ], 1502 | [ 1503 | "Bobby", 1504 | "si364", 1505 | 0 1506 | ], 1507 | [ 1508 | "Orin", 1509 | "si364", 1510 | 0 1511 | ], 1512 | [ 1513 | "Chukwuemeka", 1514 | "si364", 1515 | 0 1516 | ], 1517 | [ 1518 | "Caitlynn", 1519 | "si364", 1520 | 0 1521 | ], 1522 | [ 1523 | "Karen", 1524 | "si364", 1525 | 0 1526 | ], 1527 | [ 1528 | "Zehra", 1529 | "si364", 1530 | 0 1531 | ], 1532 | [ 1533 | "Afton", 1534 | "si364", 1535 | 0 1536 | ], 1537 | [ 1538 | "Ibraheem", 1539 | "si364", 1540 | 0 1541 | ], 1542 | [ 1543 | "Gianluca", 1544 | "si364", 1545 | 0 1546 | ], 1547 | [ 1548 | "Bronwen", 1549 | "si364", 1550 | 0 1551 | ], 1552 | [ 1553 | "Malachy", 1554 | "si364", 1555 | 0 1556 | ], 1557 | [ 1558 | "Dolan", 1559 | "si364", 1560 | 0 1561 | ], 1562 | [ 1563 | "Rana", 1564 | "si364", 1565 | 0 1566 | ], 1567 | [ 1568 | "Aili", 1569 | "si364", 1570 | 0 1571 | ], 1572 | [ 1573 | "Teagen", 1574 | "si364", 1575 | 0 1576 | ], 1577 | [ 1578 | "Alieshah", 1579 | "si364", 1580 | 0 1581 | ], 1582 | [ 1583 | "Cavan", 1584 | "si364", 1585 | 0 1586 | ], 1587 | [ 1588 | "Tianqi", 1589 | "si364", 1590 | 0 1591 | ], 1592 | [ 1593 | "Gian", 1594 | "si364", 1595 | 0 1596 | ], 1597 | [ 1598 | "Grainne", 1599 | "si364", 1600 | 0 1601 | ], 1602 | [ 1603 | "Arin", 1604 | "si364", 1605 | 0 1606 | ], 1607 | [ 1608 | "Yolanda", 1609 | "si364", 1610 | 0 1611 | ], 1612 | [ 1613 | "Caedan", 1614 | "si364", 1615 | 0 1616 | ], 1617 | [ 1618 | "Kit", 1619 | "si364", 1620 | 0 1621 | ], 1622 | [ 1623 | "Fathima", 1624 | "si364", 1625 | 0 1626 | ], 1627 | [ 1628 | "Kasha", 1629 | "si364", 1630 | 0 1631 | ], 1632 | [ 1633 | "Zara", 1634 | "si364", 1635 | 0 1636 | ], 1637 | [ 1638 | "Bree", 1639 | "si364", 1640 | 0 1641 | ], 1642 | [ 1643 | "Ngonidzashe", 1644 | "si364", 1645 | 0 1646 | ], 1647 | [ 1648 | "Cree", 1649 | "si422", 1650 | 1 1651 | ], 1652 | [ 1653 | "Mahdiya", 1654 | "si422", 1655 | 0 1656 | ], 1657 | [ 1658 | "Keris", 1659 | "si422", 1660 | 0 1661 | ], 1662 | [ 1663 | "Mhurain", 1664 | "si422", 1665 | 0 1666 | ], 1667 | [ 1668 | "Arayan", 1669 | "si422", 1670 | 0 1671 | ], 1672 | [ 1673 | "Faye", 1674 | "si422", 1675 | 0 1676 | ], 1677 | [ 1678 | "Heidar", 1679 | "si422", 1680 | 0 1681 | ], 1682 | [ 1683 | "Sandie", 1684 | "si422", 1685 | 0 1686 | ], 1687 | [ 1688 | "Mika", 1689 | "si422", 1690 | 0 1691 | ], 1692 | [ 1693 | "Evalina", 1694 | "si422", 1695 | 0 1696 | ], 1697 | [ 1698 | "Idris", 1699 | "si422", 1700 | 0 1701 | ], 1702 | [ 1703 | "Rico", 1704 | "si422", 1705 | 0 1706 | ], 1707 | [ 1708 | "Mairead", 1709 | "si422", 1710 | 0 1711 | ], 1712 | [ 1713 | "Benny", 1714 | "si422", 1715 | 0 1716 | ], 1717 | [ 1718 | "Conghaile", 1719 | "si422", 1720 | 0 1721 | ], 1722 | [ 1723 | "Deelan", 1724 | "si422", 1725 | 0 1726 | ], 1727 | [ 1728 | "Kristen", 1729 | "si422", 1730 | 0 1731 | ], 1732 | [ 1733 | "Zamaar", 1734 | "si422", 1735 | 0 1736 | ], 1737 | [ 1738 | "Ellice", 1739 | "si422", 1740 | 0 1741 | ], 1742 | [ 1743 | "Amera", 1744 | "si422", 1745 | 0 1746 | ], 1747 | [ 1748 | "Oluwatamilore", 1749 | "si422", 1750 | 0 1751 | ], 1752 | [ 1753 | "Riley", 1754 | "si422", 1755 | 0 1756 | ], 1757 | [ 1758 | "Jac", 1759 | "si422", 1760 | 0 1761 | ], 1762 | [ 1763 | "Alyessa", 1764 | "si422", 1765 | 0 1766 | ], 1767 | [ 1768 | "Tarik", 1769 | "si422", 1770 | 0 1771 | ], 1772 | [ 1773 | "Kuba", 1774 | "si422", 1775 | 0 1776 | ], 1777 | [ 1778 | "Carlos", 1779 | "si422", 1780 | 0 1781 | ], 1782 | [ 1783 | "Harper", 1784 | "si422", 1785 | 0 1786 | ], 1787 | [ 1788 | "Koni", 1789 | "si422", 1790 | 0 1791 | ], 1792 | [ 1793 | "Aydan", 1794 | "si422", 1795 | 0 1796 | ], 1797 | [ 1798 | "Youssef", 1799 | "si422", 1800 | 0 1801 | ], 1802 | [ 1803 | "Danniel", 1804 | "si422", 1805 | 0 1806 | ], 1807 | [ 1808 | "Nial", 1809 | "si422", 1810 | 0 1811 | ], 1812 | [ 1813 | "Seamas", 1814 | "si422", 1815 | 0 1816 | ], 1817 | [ 1818 | "Mario", 1819 | "si422", 1820 | 0 1821 | ], 1822 | [ 1823 | "Amelia", 1824 | "si422", 1825 | 0 1826 | ], 1827 | [ 1828 | "Lois", 1829 | "si422", 1830 | 0 1831 | ], 1832 | [ 1833 | "Katrianne", 1834 | "si422", 1835 | 0 1836 | ], 1837 | [ 1838 | "Peni", 1839 | "si422", 1840 | 0 1841 | ], 1842 | [ 1843 | "Kelum", 1844 | "si422", 1845 | 0 1846 | ], 1847 | [ 1848 | "Emaly", 1849 | "si422", 1850 | 0 1851 | ], 1852 | [ 1853 | "Delilah", 1854 | "si422", 1855 | 0 1856 | ], 1857 | [ 1858 | "Aleeyah", 1859 | "si422", 1860 | 0 1861 | ], 1862 | [ 1863 | "Hibah", 1864 | "si422", 1865 | 0 1866 | ], 1867 | [ 1868 | "Finnley", 1869 | "si422", 1870 | 0 1871 | ], 1872 | [ 1873 | "Franko", 1874 | "si430", 1875 | 1 1876 | ], 1877 | [ 1878 | "Charlie", 1879 | "si430", 1880 | 0 1881 | ], 1882 | [ 1883 | "Awais", 1884 | "si430", 1885 | 0 1886 | ], 1887 | [ 1888 | "Shazil", 1889 | "si430", 1890 | 0 1891 | ], 1892 | [ 1893 | "Rheo", 1894 | "si430", 1895 | 0 1896 | ], 1897 | [ 1898 | "Callan", 1899 | "si430", 1900 | 0 1901 | ], 1902 | [ 1903 | "Qin", 1904 | "si430", 1905 | 0 1906 | ], 1907 | [ 1908 | "Victoria", 1909 | "si430", 1910 | 0 1911 | ], 1912 | [ 1913 | "Katelynn", 1914 | "si430", 1915 | 0 1916 | ], 1917 | [ 1918 | "Wilkie", 1919 | "si430", 1920 | 0 1921 | ], 1922 | [ 1923 | "Kaydi", 1924 | "si430", 1925 | 0 1926 | ], 1927 | [ 1928 | "Letitia", 1929 | "si430", 1930 | 0 1931 | ], 1932 | [ 1933 | "Erica", 1934 | "si430", 1935 | 0 1936 | ], 1937 | [ 1938 | "Keatin", 1939 | "si430", 1940 | 0 1941 | ], 1942 | [ 1943 | "Nikol", 1944 | "si430", 1945 | 0 1946 | ], 1947 | [ 1948 | "Phinehas", 1949 | "si430", 1950 | 0 1951 | ], 1952 | [ 1953 | "Fia", 1954 | "si430", 1955 | 0 1956 | ], 1957 | [ 1958 | "Emowyn", 1959 | "si430", 1960 | 0 1961 | ], 1962 | [ 1963 | "Julieanne", 1964 | "si430", 1965 | 0 1966 | ], 1967 | [ 1968 | "Latisha", 1969 | "si430", 1970 | 0 1971 | ], 1972 | [ 1973 | "Raegan", 1974 | "si430", 1975 | 0 1976 | ], 1977 | [ 1978 | "Ohran", 1979 | "si430", 1980 | 0 1981 | ], 1982 | [ 1983 | "Cody", 1984 | "si430", 1985 | 0 1986 | ], 1987 | [ 1988 | "James", 1989 | "si430", 1990 | 0 1991 | ], 1992 | [ 1993 | "Sera", 1994 | "si430", 1995 | 0 1996 | ], 1997 | [ 1998 | "Fearn", 1999 | "si430", 2000 | 0 2001 | ], 2002 | [ 2003 | "Kirstie", 2004 | "si430", 2005 | 0 2006 | ], 2007 | [ 2008 | "Kaden", 2009 | "si430", 2010 | 0 2011 | ], 2012 | [ 2013 | "Atapattu", 2014 | "si430", 2015 | 0 2016 | ], 2017 | [ 2018 | "Jeyun", 2019 | "si430", 2020 | 0 2021 | ], 2022 | [ 2023 | "Etinosa", 2024 | "si430", 2025 | 0 2026 | ], 2027 | [ 2028 | "Valen", 2029 | "si430", 2030 | 0 2031 | ], 2032 | [ 2033 | "Saghun", 2034 | "si430", 2035 | 0 2036 | ], 2037 | [ 2038 | "Milie", 2039 | "si430", 2040 | 0 2041 | ], 2042 | [ 2043 | "Tobi", 2044 | "si430", 2045 | 0 2046 | ], 2047 | [ 2048 | "Sarra", 2049 | "si430", 2050 | 0 2051 | ], 2052 | [ 2053 | "Malebo", 2054 | "si430", 2055 | 0 2056 | ], 2057 | [ 2058 | "Keelin", 2059 | "si430", 2060 | 0 2061 | ], 2062 | [ 2063 | "Ellia", 2064 | "si430", 2065 | 0 2066 | ], 2067 | [ 2068 | "Henri", 2069 | "si430", 2070 | 0 2071 | ], 2072 | [ 2073 | "Carlie", 2074 | "si430", 2075 | 0 2076 | ], 2077 | [ 2078 | "Japjeet", 2079 | "si430", 2080 | 0 2081 | ], 2082 | [ 2083 | "Brodi", 2084 | "si430", 2085 | 0 2086 | ], 2087 | [ 2088 | "Finan", 2089 | "si430", 2090 | 0 2091 | ], 2092 | [ 2093 | "Vaila", 2094 | "si430", 2095 | 0 2096 | ], 2097 | [ 2098 | "Nika", 2099 | "si430", 2100 | 0 2101 | ], 2102 | [ 2103 | "Ross", 2104 | "si430", 2105 | 0 2106 | ], 2107 | [ 2108 | "Eamon", 2109 | "si430", 2110 | 0 2111 | ], 2112 | [ 2113 | "Conlyn", 2114 | "si430", 2115 | 0 2116 | ], 2117 | [ 2118 | "Calin", 2119 | "si430", 2120 | 0 2121 | ], 2122 | [ 2123 | "Luiza", 2124 | "si430", 2125 | 0 2126 | ], 2127 | [ 2128 | "Allice", 2129 | "si430", 2130 | 0 2131 | ] 2132 | ] -------------------------------------------------------------------------------- /Week-4/rosterdb.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-4/rosterdb.sqlite -------------------------------------------------------------------------------- /Week-5/Geodump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-5/Geodump.png -------------------------------------------------------------------------------- /Week-5/Geoload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-5/Geoload.png -------------------------------------------------------------------------------- /Week-5/Mapview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-5/Mapview.png -------------------------------------------------------------------------------- /Week-5/README.txt: -------------------------------------------------------------------------------- 1 | Using the Google Geocoding API with a Database and 2 | Visualizing data on Google Map 3 | 4 | In this project, we are using the Google geocoding API 5 | to clean up some user-entered geographic locations of 6 | university names and then placing the data on a Google 7 | Map. 8 | 9 | You should install the SQLite browser to view and modify 10 | the databases from: 11 | 12 | http://sqlitebrowser.org/ 13 | 14 | The first problem to solve is that the Google geocoding 15 | API is rate limited to 2500 requests per day. So if you have 16 | a lot of data you might need to stop and restart the lookup 17 | process several times. So we break the problem into two 18 | phases. 19 | 20 | In the first phase we take our input data in the file 21 | (where.data) and read it one line at a time, and retreive the 22 | geocoded response and store it in a database (geodata.sqlite). 23 | Before we use the geocoding API, we simply check to see if 24 | we already have the data for that particular line of input. 25 | 26 | You can re-start the process at any time by removing the file 27 | geodata.sqlite 28 | 29 | Run the geoload.py program. This program will read the input 30 | lines in where.data and for each line check to see if it is already 31 | in the database and if we don't have the data for the location, 32 | call the geocoding API to retrieve the data and store it in 33 | the database. 34 | 35 | As of December 2016, the Google Geocoding API requires an API 36 | key. To complete this assignment, you can use a subset of that data 37 | which is available at: 38 | 39 | http://python-data.dr-chuck.net/geojson 40 | 41 | This URL only has a subset of the data but it has no rate limit so 42 | it is good for testing. 43 | 44 | For example: 45 | 46 | http://python-data.dr-chuck.net/geojson?address=Northeastern+University 47 | 48 | If you get an API from Google, you can use the original URL: 49 | 50 | http://maps.googleapis.com/maps/api/geocode/json?address=Monash+University 51 | 52 | Here is a sample run after there is already some data in the 53 | database: 54 | 55 | Mac: python geoload.py 56 | Win: geoload.py 57 | 58 | Found in database Northeastern University 59 | 60 | Found in database University of Hong Kong, Illinois Institute of Technology, Bradley University 61 | 62 | Found in database Technion 63 | 64 | Found in database Viswakarma Institute, Pune, India 65 | 66 | Found in database UMD 67 | 68 | Found in database Tufts University 69 | 70 | Resolving Monash University 71 | Retrieving http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Monash+University 72 | Retrieved 2063 characters { "results" : [ 73 | {u'status': u'OK', u'results': ... } 74 | 75 | Resolving Kokshetau Institute of Economics and Management 76 | Retrieving http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Kokshetau+Institute+of+Economics+and+Management 77 | Retrieved 1749 characters { "results" : [ 78 | {u'status': u'OK', u'results': ... } 79 | 80 | The first five locations are already in the database and so they 81 | are skipped. The program scans to the point where it finds un-retrieved 82 | locations and starts retrieving them. 83 | 84 | The geoload.py can be stopped at any time, and there is a counter 85 | that you can use to limit the number of calls to the geocoding 86 | API for each run. 87 | 88 | Once you have some data loaded into geodata.sqlite, you can 89 | visualize the data using the (geodump.py) program. This 90 | program reads the database and writes tile file (where.js) 91 | with the location, latitude, and longitude in the form of 92 | executable JavaScript code. 93 | 94 | A run of the geodump.py program is as follows: 95 | 96 | Mac: python geodump.py 97 | Win: geodump.py 98 | 99 | Northeastern University, 360 Huntington Avenue, Boston, MA 02115, USA 42.3396998 -71.08975 100 | Bradley University, 1501 West Bradley Avenue, Peoria, IL 61625, USA 40.6963857 -89.6160811 101 | ... 102 | Technion, Viazman 87, Kesalsaba, 32000, Israel 32.7775 35.0216667 103 | Monash University Clayton Campus, Wellington Road, Clayton VIC 3800, Australia -37.9152113 145.134682 104 | Kokshetau, Kazakhstan 53.2833333 69.3833333 105 | ... 106 | 12 records written to where.js 107 | Open where.html to view the data in a browser 108 | 109 | The file (where.html) consists of HTML and JavaScript to visualize 110 | a Google Map. It reads the most recent data in where.js to get 111 | the data to be visualized. Here is the format of the where.js file: 112 | 113 | myData = [ 114 | [42.3396998,-71.08975, 'Northeastern University, 360 Huntington Avenue, Boston, MA 02115, USA'], 115 | [40.6963857,-89.6160811, 'Bradley University, 1501 West Bradley Avenue, Peoria, IL 61625, USA'], 116 | [32.7775,35.0216667, 'Technion, Viazman 87, Kesalsaba, 32000, Israel'], 117 | ... 118 | ]; 119 | 120 | This is a JavaScript list of lists. The syntax for JavaScript 121 | list constants is very similar to Python so the syntax should 122 | be familiar to you. 123 | 124 | Simply open where.html in a browser to see the locations. You 125 | can hover over each map pin to find the location that the 126 | gecoding API returned for the user-entered input. If you 127 | cannot see any data when you open the where.html file, you might 128 | want to check the JavaScript or developer console for your browser. 129 | 130 | -------------------------------------------------------------------------------- /Week-5/geodata.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PragneshRamani/Coursera--Using-Databases-with-Python/3db72219a7793a8704c0cbd847749b19d2739da8/Week-5/geodata.sqlite -------------------------------------------------------------------------------- /Week-5/geodump.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | import json 3 | import codecs 4 | 5 | conn = sqlite3.connect('geodata.sqlite') 6 | cur = conn.cursor() 7 | 8 | cur.execute('SELECT * FROM Locations') 9 | fhand = codecs.open('where.js','w', "utf-8") 10 | fhand.write("myData = [\n") 11 | count = 0 12 | for row in cur : 13 | data = str(row[1]) 14 | try: js = json.loads(str(data)) 15 | except: continue 16 | 17 | if not('status' in js and js['status'] == 'OK') : continue 18 | 19 | lat = js["results"][0]["geometry"]["location"]["lat"] 20 | lng = js["results"][0]["geometry"]["location"]["lng"] 21 | if lat == 0 or lng == 0 : continue 22 | where = js['results'][0]['formatted_address'] 23 | where = where.replace("'","") 24 | try : 25 | print where, lat, lng 26 | 27 | count = count + 1 28 | if count > 1 : fhand.write(",\n") 29 | output = "["+str(lat)+","+str(lng)+", '"+where+"']" 30 | fhand.write(output) 31 | except: 32 | continue 33 | 34 | fhand.write("\n];\n") 35 | cur.close() 36 | fhand.close() 37 | print count, "records written to where.js" 38 | print "Open where.html to view the data in a browser" 39 | 40 | -------------------------------------------------------------------------------- /Week-5/geoload.py: -------------------------------------------------------------------------------- 1 | import urllib 2 | import sqlite3 3 | import json 4 | import time 5 | import ssl 6 | 7 | # Google API (requires API key) 8 | # serviceurl = "http://maps.googleapis.com/maps/api/geocode/json?" 9 | # If you are in China this URL might work (with key): 10 | # serviceurl = "http://maps.google.cn/maps/api/geocode/json?" 11 | 12 | serviceurl = "http://maps.googleapis.com/maps/api/geocode/json?" 13 | 14 | 15 | # Deal with SSL certificate anomalies Python > 2.7 16 | # scontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1) 17 | scontext = None 18 | 19 | conn = sqlite3.connect('geodata.sqlite') 20 | cur = conn.cursor() 21 | 22 | cur.execute(''' 23 | CREATE TABLE IF NOT EXISTS Locations (address TEXT, geodata TEXT)''') 24 | 25 | fh = open("where.data") 26 | count = 0 27 | for line in fh: 28 | if count > 200 : 29 | print 'Retrieved 200 locations, restart to retrieve more' 30 | break 31 | address = line.strip() 32 | print '' 33 | cur.execute("SELECT geodata FROM Locations WHERE address= ?", (buffer(address), )) 34 | 35 | try: 36 | data = cur.fetchone()[0] 37 | print "Found in database ",address 38 | continue 39 | except: 40 | pass 41 | 42 | print 'Resolving', address 43 | url = serviceurl + urllib.urlencode({"sensor":"false", "address": address}) 44 | print 'Retrieving', url 45 | uh = urllib.urlopen(url, context=scontext) 46 | data = uh.read() 47 | print 'Retrieved',len(data),'characters',data[:20].replace('\n',' ') 48 | count = count + 1 49 | try: 50 | js = json.loads(str(data)) 51 | # print js # We print in case unicode causes an error 52 | except: 53 | continue 54 | 55 | if 'status' not in js or (js['status'] != 'OK' and js['status'] != 'ZERO_RESULTS') : 56 | print '==== Failure To Retrieve ====' 57 | print data 58 | continue 59 | 60 | cur.execute('''INSERT INTO Locations (address, geodata) 61 | VALUES ( ?, ? )''', ( buffer(address),buffer(data) ) ) 62 | conn.commit() 63 | if count % 10 == 0 : 64 | print('Pausing for a bit...') 65 | time.sleep(5) 66 | 67 | print "Run geodump.py to read the data from the database so you can visualize it on a map." 68 | -------------------------------------------------------------------------------- /Week-5/where.data: -------------------------------------------------------------------------------- 1 | AGH University of Science and Technology 2 | Academy of Fine Arts Warsaw Poland 3 | American University in Cairo 4 | Arizona State University 5 | Athens Information Technology 6 | BITS Pilani 7 | Babcock University 8 | Banaras Hindu University 9 | Bangalore University 10 | Baylor University 11 | Beijing normal university 12 | Belarusian State University 13 | Belgrade University 14 | Beloit College 15 | Belorussian State University 16 | Ben Gurion University 17 | Bharthidasan University 18 | Boston University 19 | California Polytechnic State University of San Luis Obispo 20 | California State University San Bernardino 21 | City of Westminster College 22 | Columbia University 23 | Cranfield University 24 | Czech Technical University in Prague 25 | Dartmouth 26 | De Anza College 27 | Distant University of Hagen 28 | Dnipropetrovsk National University 29 | Dokuz Eylul University 30 | Drexel 31 | Drexel University and University of Texas at Austin 32 | Duke University 33 | EM Lyon 34 | Ecole centrale de PARIS 35 | Elon University 36 | Erhvervsakademi Sydvest 37 | Escuela Superior Politecnica del Litoral 38 | Fachhochschule Dusseldorf 39 | Fachhochschule FH Salzburg 40 | Faculdade de Tecnologia do Estado de Sao Paulo 41 | Faculty of Technical Sciences Novi Sad Serbia 42 | Farmingdale State University 43 | Federal University of Minas Gerais 44 | Florida Atlantic University 45 | Franklin Pierce College 46 | Gauhati University 47 | Gujarat Technological University 48 | George Mason University 49 | Georgetown University Law Center 50 | Georgia State University 51 | Grandville 52 | Groep T University 53 | Hanoi University of Science and Technology 54 | Hebrew University 55 | IIIT Hyderabad 56 | IIT KANPUR 57 | IT College of Estonia 58 | IU 59 | IUAV Venezia 60 | Illinois Institute of Technology 61 | Illinois State University Joliet Junior College 62 | Indian Institute of Technology 63 | Indian Institute of Technology Kharagpur India 64 | Indian School of Mines Dhanbad 65 | Indiana University 66 | Indiana University at Bloomington 67 | Institut Superieur de technologies 68 | Institute of Business and Modern Technologies 69 | Instituto Tecnologico de Santo Domingo 70 | International Institute of Information Technology Hyderabad 71 | Irkutsk State University 72 | JADAVPUR UNIVERSITY 73 | Jawaharlal Nehru Technological University 74 | Jawaharlal Nehru University 75 | Jordan University of Science and Technology 76 | K-State 77 | KUL 78 | Kalamazoo College 79 | Kaunas Technology University 80 | Kaunas university of technology 81 | Kazan Federal University 82 | Kent State University 83 | Kharkiv State Academy of Municipal Economy Ukraine 84 | King Mongkuts University of Technology Thonburi 85 | Kokshetau Institute of Economics and Management 86 | Kyiv Polytechnic Institute 87 | Kyiv Polytechnical Institute 88 | Kyiv Unisersity of Oriental Language 89 | Laurentian University 90 | Lisandro Alvarado 91 | LJ Institute of Engineering and Technology Ahmedabad 92 | Lodz University of Technology 93 | Lviv University 94 | MSU 95 | Madras university 96 | Magnitogorsk State Technical University 97 | Malayer Azad University 98 | Marietta College 99 | Masdar Institute 100 | Matematicki fakultet Beograd 101 | Michigan State University 102 | Middle East Technical University 103 | Missouri University of Science and Technology 104 | Monash 105 | Monash University 106 | Monash University Churchill Australia 107 | Monterrey Institute of Technology and Higher Education 108 | Moscow Engineering-Physics Institute 109 | Moscow Institute of Physics & Technology 110 | Moscow State University 111 | NIT ROURKELA 112 | NYU 113 | Nagpur University 114 | Nanyang Technological University 115 | National Institute of Technology Jalandhar 116 | National Taiwan University 117 | National University of Engineering 118 | North Central College 119 | Northeastern University 120 | Northwestern University 121 | Obninsk Technical University of Nuclear Power Engineering Russia 122 | Old Dominion University 123 | Oregon Institute of Technology 124 | PUCMM 125 | Payame Noor University 126 | Penn State University 127 | Politecnico di Milano 128 | Politehnica University Bucharest 129 | Polytechnic University of Timisoara 130 | Pondicherry University 131 | Pontificia universidad catolica de chile 132 | Portland State University 133 | Purdue University Indianapolis 134 | R V College of Engineering 135 | RPI 136 | Ramapo College of New Jersey 137 | Rochester Institute of Technology 138 | SASTRA University 139 | Saint Petersburg State University 140 | Saint Petersburg State University of Aerospace Instrumentation 141 | Saint-Petersburg Polytechnic Univesity 142 | San Francisco State University 143 | San Jose State University 144 | Shanghai Jiao Tong University 145 | Sharif University of Technology 146 | Simon Bolivar University 147 | Simon Fraser University 148 | Smolensk State University 149 | Sonoma State University 150 | South Federal University 151 | Spiru Haret University 152 | Stanford 153 | State University of Campinas 154 | State University of New York College at Oswego 155 | Stellenbosch University 156 | Stonehill College 157 | Tallinn University 158 | Tallinn University of Technology 159 | Tampere University of Technology 160 | Tanta University 161 | Tarrant County College 162 | Technical University of Cluj-Napoca 163 | Technion 164 | Tel Aviv University 165 | The Jerusalem collage of engineering 166 | The University of Latvia 167 | The University of Manchester 168 | The University of South Africa 169 | Transilvania University 170 | Tufts University 171 | UC Berkeley 172 | UCLA 173 | UCSD 174 | UIUC 175 | UMD 176 | UNISA 177 | UNIVERSIDAD DE Buenos Aires 178 | UOC 179 | USC 180 | UW Madison 181 | Universidad Central de Venezuela 182 | Universidad Complutense de Madrid 183 | Universidad Cooperativa de Colombia 184 | Universidad Nacional Autonoma de Mexico 185 | Universidad Nacional Costa Rica 186 | Universidad Nacional de Colombia 187 | Universidad Tecnologica Boliviana 188 | Universidad de Buenos Aires 189 | Universidad de Castilla La Mancha 190 | Universidad de Los Andes Colombia 191 | Universidad de Oriente 192 | Universidad de San Carlos de Guatemala 193 | Universidad de Valladolid 194 | Universidad de la Sabana 195 | Universidad del Valle de Guatemala 196 | Universidade Federal da Paraiba 197 | Universidade Federal de Santa Catarina 198 | Universidade Federal do Rio Grande do Sul 199 | Universidade Federal do Rio de Janeiro 200 | Universidade Tecnica de Lisboa 201 | Universidade de Sao Paulo 202 | Universidade do Minho 203 | Universitas Gadjah Mada 204 | Universitat Politecnica de Valencia 205 | Universite Catholique de Louvain 206 | University College Dublin 207 | University Munich 208 | University of Akron 209 | University of Alberta 210 | University of Amsterdam 211 | University of Arkansas 212 | University of Athens 213 | University of Belgrade 214 | University of Birmingham 215 | University of Buenos Aires 216 | University of Cambridge 217 | University of Central Oklahoma 218 | University of Chicago 219 | University of Cincinnati 220 | University of Colorado at Boulder 221 | University of Connecticut 222 | University of Dallas 223 | University of Debrecen 224 | University of Delaware 225 | University of Erlangen-Nuremberg 226 | University of Essex 227 | University of Evora 228 | University of Florida 229 | University of Gothenburg 230 | University of Greifswald 231 | University of Hamburg 232 | University of Hawaii 233 | University of Helsinki 234 | University of Ilorin Kwara State 235 | University of Jaffna 236 | University of Kansas 237 | University of Kerala 238 | University of London 239 | University of Malaga 240 | University of Malaya 241 | University of Manchester 242 | University of Michigan 243 | University of Missouri - Columbia 244 | University of Moratuwa 245 | University of Mumbai 246 | University of Nebraska 247 | University of Nebraska - Lincoln 248 | University of New Haven 249 | University of New South Wales 250 | University of Notre Dame 251 | University of Oklahoma 252 | University of Ottawa 253 | University of Oxford 254 | University of Padua 255 | University of Pavia Italy 256 | University of Pennsylvania 257 | University of Piraeus Athens 258 | University of Pretoria 259 | University of Salamanca 260 | University of Sao Paulo 261 | University of Sarajevo 262 | University of Southern California 263 | University of Stellenbosch 264 | University of Tartu 265 | University of Tehran 266 | University of Texas 267 | University of Texas at Austin 268 | University of Toronto 269 | University of Tuebingen 270 | University of Twente 271 | University of Utah 272 | University of Vienna 273 | University of Warsaw 274 | University of Washington 275 | University of Washington - Bothell 276 | University of Waterloo 277 | University of West Florida 278 | University of Wisconsin 279 | University of the Punjab Lahore 280 | University of the Witwatersrand 281 | Vilnius Gediminas Technical University 282 | Vilnius University 283 | Virginia Commonwealth University 284 | Virginia Tech 285 | Viswakarma Institute Pune India 286 | Warsaw University 287 | Washington State University 288 | Wayne State 289 | Weber State 290 | Weizmann Institute of Science 291 | Western Governors University 292 | Xavier University 293 | Zagazig University 294 | allama iqbal open university islamabad 295 | arizona state university 296 | federal institute of tecnology and education from southeastern Minas Gerais 297 | kansas state university 298 | universidad complutense de madrid 299 | university of Patras 300 | university of padua 301 | -------------------------------------------------------------------------------- /Week-5/where.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A Map of Information 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 43 | 44 | 45 |
46 |

About this Map

47 |

48 | This is a cool map from 49 | www.pythonlearn.com. 50 |

51 | 52 | 53 | -------------------------------------------------------------------------------- /Week-5/where.js: -------------------------------------------------------------------------------- 1 | myData = [ 2 | [50.0668858,19.9136192, 'aleja Adama Mickiewicza 30, 30-059 Kraków, Poland'], 3 | [52.2394019,21.0150792, 'Krakowskie Przedmieście 5, 00-068 Warszawa, Poland'], 4 | [30.018923,31.499674, 'Parcel 8, 74 S El-Teseen St, NEW CAIRO, Cairo, Cairo Governorate 11835, Egypt'], 5 | [33.4197221,-111.9313334, 'Tempe, AZ 85281, USA'], 6 | [38.0399391,23.8030901, 'Monumental Plaza, Building C, 1st Floor, Leof. Kifisias 44, Marousi 151 25, Greece'], 7 | [28.3639812,75.5869784, 'Campus, Vidya Vihar, Pilani,, Pilani Road, BITS, Pilani, Rajasthan 333031, India'], 8 | [6.8931574,3.7105118, 'Ogun State, ILISHAN REMO, Ilishan-Remo, Nigeria'], 9 | [25.2677203,82.9912582, 'Kabir Colony, Banaras Hindu University Campus, Varanasi, Uttar Pradesh 221005, India'], 10 | [12.9426016,77.5043392, 'Bangalore University Rd, Jnana Jyothi Nagar, Gnana Bharathi, Bengaluru, Karnataka 560056, India'], 11 | [31.549841,-97.1143146, '1301 S University Parks Dr, Waco, TX 76798, USA'], 12 | [39.9619537,116.3662615, '19 Xinjiekou Outer St, BeiTaiPingZhuang, Haidian Qu, Beijing Shi, China, 100875'], 13 | [53.8930389,27.5455566, 'praspiekt Niezaliežnasci 4, Minsk, Belarus'], 14 | [44.8184339,20.4575676, 'Studentski trg 1, Beograd, Serbia'], 15 | [42.5030333,-89.0309048, '700 College St, Beloit, WI 53511, USA'], 16 | [53.8930389,27.5455566, 'praspiekt Niezaliežnasci 4, Minsk, Belarus'], 17 | [31.262218,34.801461, 'אוניברסיטת ב-גוריון בנגב, ת.ד 653, Beer Sheva, 8499000, Israel'], 18 | [10.6779085,78.7445488, 'Palkalaiperur, Tiruchirappalli, Tamil Nadu 620024, India'], 19 | [42.3504997,-71.1053991, 'Boston, MA 02215, USA'], 20 | [35.3050053,-120.6624942, 'San Luis Obispo, CA 93407, USA'], 21 | [34.1821786,-117.3235324, '5500 University Pkwy, San Bernardino, CA 92407, USA'], 22 | [51.5210038,-0.1746353, '25 Paddington Green, London W2 1NB, UK'], 23 | [40.8075355,-73.9625727, '116th St & Broadway, New York, NY 10027, USA'], 24 | [52.0743967,-0.6293078, 'College Rd, Cranfield MK43 0AL, UK'], 25 | [50.1030364,14.3912841, 'Zikova 1903/4, 166 36 Praha 6, Czechia'], 26 | [43.7044406,-72.2886934, 'Hanover, NH 03755, USA'], 27 | [37.3198512,-122.0452038, '21250 Stevens Creek Blvd, Cupertino, CA 95014, USA'], 28 | [51.37759,7.49462, 'Universitätsstraße 11, 58084 Hagen, Germany'], 29 | [48.4331922,35.0427966, 'Haharina Ave, 72, Dnipropetrovsk, Dnipropetrovsk Oblast, Ukraine, 49000'], 30 | [38.4308451,27.1369785, 'Kültür Mahallesi, Cumhuriyet Blv No:144, 35220 Konak/İzmir, Turkey'], 31 | [39.9566127,-75.1899441, '3141 Chestnut St, Philadelphia, PA 19104, USA'], 32 | [30.2849185,-97.7340567, 'Austin, TX 78712, USA'], 33 | [36.0014258,-78.9382286, 'Durham, NC 27708, USA'], 34 | [45.786447,4.764139, '23 Avenue Guy de Collongue, 69130 Écully, France'], 35 | [48.7654688,2.288493, 'Grande Voie des Vignes, 92290 Châtenay-Malabry, France'], 36 | [36.1048749,-79.5038882, '100 Campus Drive, Elon, NC 27244, USA'], 37 | [55.4884307,8.4467103, 'Spangsbjerg Kirkevej 103, 6700 Esbjerg, Denmark'], 38 | [-2.1481458,-79.9644885, 'Km 30., Vía Perimetral 5, Guayaquil, Ecuador'], 39 | [51.2473822,6.7916469, 'Münsterstraße 156, 40476 Düsseldorf, Germany'], 40 | [47.7239467,13.0864957, 'Urstein Süd 1, 5412 Salzburg, Austria'], 41 | [-23.5294707,-46.6322811, 'Praça Coronel Fernando Prestes, 30 - Bom Retiro, São Paulo - SP, 01124-060, Brazil'], 42 | [45.2461012,19.8516968, 'Trg Dositeja Obradovića 6, Novi Sad 106314, Serbia'], 43 | [40.7525499,-73.4287388, '2350 Broadhollow Rd, Farmingdale, NY 11735, USA'], 44 | [-19.8690878,-43.9663841, 'Av. Pres. Antônio Carlos, 6627 - Pampulha, Belo Horizonte - MG, 31270-901, Brazil'], 45 | [26.3749228,-80.1021113, '777 Glades Rd, Boca Raton, FL 33431, USA'], 46 | [42.7789743,-72.0555393, '40 University Dr, Rindge, NH 03461, USA'], 47 | [26.1539392,91.6622401, 'Gopinath Bordoloi Nagar, Guwahati, Assam 781014, India'], 48 | [23.1059121,72.5936805, 'Near Visat Three Roads, Visat - Gandhinagar Highway, Chandkheda, Ahmedabad, Gujarat 382424, India'], 49 | [38.8315541,-77.3120885, '4400 University Dr, Fairfax, VA 22030, USA'], 50 | [38.8977953,-77.0129087, '600 New Jersey Ave NW, Washington, DC 20001, USA'], 51 | [33.753068,-84.3852819, 'Atlanta, GA 30302, USA'], 52 | [42.9097484,-85.7630885, 'Grandville, MI, USA'], 53 | [50.8748542,4.7077677, 'Andreas Vesaliusstraat 13, 3000 Leuven, Belgium'], 54 | [21.0070516,105.8428957, '1 Đại Cồ Việt, Bách Khoa, Hà Nội, Bách Khoa Hai Bà Trưng Hà Nội, Vietnam'], 55 | [31.7945578,35.2414009, 'Jerusalem'], 56 | [17.447156,78.34876, 'Gachibowli, Hyderabad, Telangana 500032, India'], 57 | [26.5123388,80.2329, 'Kalyanpur, Kanpur, Uttar Pradesh 208016, India'], 58 | [59.3954769,24.6643814, 'Raja 4, 12616 Tallinn, Estonia'], 59 | [39.1766135,-86.5130173, '107 S Indiana Ave, Bloomington, IN 47405, USA'], 60 | [45.4326794,12.3150516, 'Santa Croce, 191, 30135 Venezia, Italy'], 61 | [41.8348731,-87.6270059, '3300 S Federal St, Chicago, IL 60616, USA'], 62 | [41.500374,-88.178946, '1215 Houbolt Rd, Joliet, IL 60431, USA'], 63 | [19.1334302,72.9132679, 'IIT Area, Powai, Mumbai, Maharashtra 400076, India'], 64 | [22.3149274,87.3105311, 'IIT Kharagpur, Kharagpur, West Bengal 721302, India'], 65 | [23.8143819,86.4412022, 'Sardar Patel Nagar, Dhanbad, Jharkhand 826004, India'], 66 | [39.1766135,-86.5130173, '107 S Indiana Ave, Bloomington, IN 47405, USA'], 67 | [39.1766135,-86.5130173, '107 S Indiana Ave, Bloomington, IN 47405, USA'], 68 | [44.9188314,4.9168034, '14 Rue Barthélémy de Laffemas, 26000 Valence, France'], 69 | [39.106401,-76.951581, '15319 Briarcliff Manor Way, Burtonsville, MD 20866, USA'], 70 | [18.487876,-69.962292, 'Av. de Los Próceres 49, Santo Domingo 10602, Dominican Republic'], 71 | [17.447156,78.34876, 'Gachibowli, Hyderabad, Telangana 500032, India'], 72 | [52.2766124,104.2777287, 'ul. Karla Marksa, 1, Irkutsk, Irkutskaya oblast, Russia, 664003'], 73 | [22.4966561,88.3710918, 'Prayukti Bhawan, 188, Raja Subodh Chandra Mallick Rd, Jadavpur University Campus Area, Jadavpur, Kolkata, West Bengal 700032, India'], 74 | [17.4946257,78.3921576, 'Kukatpally, Hyderabad, Telangana 500085, India'], 75 | [28.5423897,77.1671442, 'New Mehrauli Road, Munirka, New Delhi, Delhi 110067, India'], 76 | [32.4950392,35.9912257, 'Ar Ramtha, Irbid, Jordan'], 77 | [39.1974437,-96.5847249, 'Manhattan, KS 66506, USA'], 78 | [2.7402008,101.7081373, 'Kuala Lumpur Intl Airport, Kuala Lumpur International Airport, 64000 Sepang, Selangor, Malaysia'], 79 | [42.290035,-85.598145, '1200 Academy St, Kalamazoo, MI 49006, USA'], 80 | [54.898991,23.912825, 'K. Donelaičio g. 73, Kaunas 44249, Lithuania'], 81 | [54.898991,23.912825, 'K. Donelaičio g. 73, Kaunas 44249, Lithuania'], 82 | [55.790447,49.1214348, 'Kremlyovskaya St, 18, Kazan, Respublika Tatarstan, Russia, 420000'], 83 | [41.1490629,-81.3414649, '800 E Summit St, Kent, OH 44240, USA'], 84 | [49.9958165,36.2417771, 'Marshala Bazhanova St, 13, Kharkiv, Kharkiv Oblast, Ukraine, 61002'], 85 | [13.6517367,100.4949226, '126 Pracha Uthit Rd, Khwaeng Bang Mot, Khet Thung Khru, Krung Thep Maha Nakhon 10140, Thailand'], 86 | [50.4488824,30.4572543, 'Peremohy Ave, 37, Kyiv, Ukraine, 03056'], 87 | [50.4488824,30.4572543, 'Peremohy Ave, 37, Kyiv, Ukraine, 03056'], 88 | [50.4531437,30.3546906, 'Lvivska St, 49, Kyiv, Ukraine, 03179'], 89 | [46.4667708,-80.9742332, '935 Ramsey Lake Rd, Sudbury, ON P3E 2C6, Canada'], 90 | [10.475893,-66.8907223, 'Calle Lisandro Alvardo, Caracas, Distrito Capital, Venezuela'], 91 | [22.9896919,72.4862269, 'Sarkhej - Gandhinagar Hwy, Makarba, Sarkhej- Okaf, Gujarat 380054, India'], 92 | [51.7537146,19.4517176, 'Stefana Żeromskiego 116, 90-924 Łódź, Poland'], 93 | [49.8406108,24.0225099, 'Universytetska St, 1, Lviv, Lviv Oblast, Ukraine, 79000'], 94 | [42.701848,-84.4821719, '220 Trowbridge Rd, East Lansing, MI 48824, USA'], 95 | [13.0660293,80.2831719, 'Navalar Nagar, Chepauk, Triplicane, Chennai, Tamil Nadu 600005, India'], 96 | [53.422244,58.9825085, 'pr. Lenina, 38, Magnitogorsk, Chelyabinskaya oblast, Russia, 455000'], 97 | [34.304073,48.8452846, 'Hamadan Province, Malayer, University Blvd, Iran'], 98 | [39.4145456,-81.4491067, '215 5th St, Marietta, OH 45750, USA'], 99 | [24.4335115,54.6176592, 'Masdar City,Khalifa City A,Opp - Airport Road Home WTC AUH - Abu Dhabi - United Arab Emirates'], 100 | [44.8195126,20.459315, 'Studentski trg 16, Beograd 105104, Serbia'], 101 | [42.701848,-84.4821719, '220 Trowbridge Rd, East Lansing, MI 48824, USA'], 102 | [39.8920568,32.7786112, 'Middle East Technical University Üniversiteler Mahallesi, Dumlupınar Bulvarı No:1 06800 Çankaya Ankara/TURKEY, Üniversiteler Mahallesi, Middle East Technical University, 06800 Çankaya/Ankara, Turkey'], 103 | [37.953451,-91.7755727, '1201 N State St, Rolla, MO 65409, USA'], 104 | [-37.9015913,145.1155133, 'Monash, VIC, Australia'], 105 | [-37.9114731,145.1344641, 'Wellington Rd, Clayton VIC 3800, Australia'], 106 | [-38.311211,146.429409, 'Northways Rd, Churchill VIC 3842, Australia'], 107 | [25.6515649,-100.28954, 'Av. Eugenio Garza Sada 2501 Sur, Tecnológico, 64849 Monterrey, N.L., Mexico'], 108 | [55.649567,37.6638741, 'Kashirskoye sh., 31, Moskva, Russia, 115409'], 109 | [55.9294231,37.5185144, 'Institutskiy per., 9, Dolgoprudnyy, Moskovskaya oblast, Russia, 141701'], 110 | [55.7039349,37.5286695, 'ul. Leninskiye Gory, 1, Moskva, Russia, 119991'], 111 | [22.2533322,84.9011421, 'Sector - 2, Rourkela, Odisha 769008, India'], 112 | [40.7295134,-73.9964609, 'New York, NY 10003, USA'], 113 | [21.1457071,79.0752439, 'Chhatrapati Shivaji Maharaj Administrative Premises, Ravindranath Tagore Marg, Nagpur, Maharashtra 440001, India'], 114 | [1.3483099,103.6831347, '50 Nanyang Ave, Singapore 639798'], 115 | [31.3961507,75.5353566, 'N.I.T. Post Office, G T Road, Jalandhar, Punjab 144011, India'], 116 | [25.0173405,121.5397518, 'No. 1, Section 4, Roosevelt Rd, Da’an District, Taipei City, Taiwan 10617'], 117 | [-12.024022,-77.0481441, 'Av. Túpac Amaru s/n, Rimac, Lima 25, Perú, Av. Tupac Amaru 210, Rímac Lima 25, Peru'], 118 | [41.7757375,-88.1427779, '30 N Brainard St, Naperville, TX 76450, USA'], 119 | [42.3398067,-71.0891717, '360 Huntington Ave, Boston, MA 02115, USA'], 120 | [42.0564594,-87.675267, '633 Clark St, Evanston, IL 60208, USA'], 121 | [55.137191,36.607059, 'Студенческий городок кв-л 1, строен. 1, Обнинск, Калужская обл., 249030, Russia'], 122 | [36.8855515,-76.3067676, '5115 Hampton Blvd, Norfolk, VA 23529, USA'], 123 | [42.2560719,-121.7862578, '3201 Campus Dr, Klamath Falls, OR 97601, USA'], 124 | [19.4445363,-70.683252, 'Autopista Duarte Km 1 1/2, Santiago De Los Caballeros 51000, Dominican Republic'], 125 | [35.8012314,51.5028533, 'Tehran Province, Tehran, اتوبان ارتش کوی نفت, Nakhl St, Iran'], 126 | [40.7982133,-77.8599084, 'Old Main, State College, PA 16801, USA'], 127 | [45.4781071,9.2272764, 'Piazza Leonardo da Vinci, 32, 20133 Milano, Italy'], 128 | [44.4386064,26.0494925, 'Splaiul Independenței 313, București 060042, Romania'], 129 | [45.7536471,21.2251066, 'Piata Victoriei nr. 2, Timișoara 300006, Romania'], 130 | [12.0219374,79.8574591, 'Kalapet, Puducherry, 605014, India'], 131 | [-33.4411279,-70.6407933, 'Av Libertador Bernardo OHiggins 328, Santiago, Región Metropolitana, Chile'], 132 | [45.5117567,-122.6842859, '1825 SW Broadway, Portland, OR 97201, USA'], 133 | [39.7738832,-86.1763393, '420 University Blvd, Indianapolis, IN 46202, USA'], 134 | [12.9237077,77.4986878, 'Mysuru Road, R. V. Vidyanikethan Post, Bengaluru, Karnataka 560059, India'], 135 | [42.730172,-73.6788026, '110 8th St, Troy, NY 12180, USA'], 136 | [41.0815079,-74.1746234, '505 Ramapo Valley Rd, Mahwah, NJ 07430, USA'], 137 | [43.0861017,-77.6705143, '1 Lomb Memorial Dr, Rochester, NY 14623, USA'], 138 | [10.7275232,79.020733, 'Thirumalaisamudram, Thanjavur, Tamil Nadu 613401, India'], 139 | [59.941894,30.2989198, 'Университетская наб., 7/9, Санкт-Петербург, г. Санкт-Петербург, Russia, 199034'], 140 | [59.9295233,30.2965598, 'Bolshaya Morskaya ul., 67, Sankt-Peterburg, Russia, 190000'], 141 | [60.007357,30.372899, 'Politekhnicheskaya ul., 29, Sankt-Peterburg, Russia, 195251'], 142 | [37.721897,-122.4782094, '1600 Holloway Ave, San Francisco, CA 94132, USA'], 143 | [37.3351874,-121.8810715, '1 Washington Sq, San Jose, CA 95192, USA'], 144 | [31.0252201,121.4337784, '800 Dongchuan Rd, Minhang Qu, China, 201109'], 145 | [35.7036366,51.351593, 'Tehran, Azadi Avenue، Iran'], 146 | [10.408363,-66.8755735, 'Sartenejas, Caracas, Miranda, Venezuela'], 147 | [49.2780937,-122.9198833, '8888 University Dr, Burnaby, BC V5A 1S6, Canada'], 148 | [54.7848868,32.0462608, 'ul. Przhevalskogo, 4, Smolensk, Smolenskaya oblast, Russia, 214000'], 149 | [38.3393866,-122.6741812, '1801 E Cotati Ave, Rohnert Park, CA 94928, USA'], 150 | [47.224719,39.728334, 'ул. /42, Bolshaya Sadovaya ul., 105, Rostov-on-Don, Rostov Oblast, Russia, 344006'], 151 | [44.4332166,26.1009718, 'Strada Ion Ghica 13, București 030167, Romania'], 152 | [37.4274745,-122.169719, '450 Serra Mall, Stanford, CA 94305, USA'], 153 | [-22.8184393,-47.0647206, 'Cidade Universitária Zeferino Vaz - Barão Geraldo, Campinas - SP, 13083-970, Brazil'], 154 | [43.450851,-76.543438, '7060 New York 104, Oswego, NY 13126, USA'], 155 | [-33.9328078,18.864447, 'Stellenbosch, 7600, South Africa'], 156 | [42.0590153,-71.0806276, '320 Washington St, North Easton, MA 02357, USA'], 157 | [59.438742,24.771645, 'Narva mnt 25, 10120 Tallinn, Estonia'], 158 | [59.395884,24.671431, 'Ehitajate tee 5, 12616 Tallinn, Estonia'], 159 | [61.4497952,23.8586408, 'Korkeakoulunkatu 10, 33720 Tampere, Finland'], 160 | [30.7924391,30.9991409, 'El-Gaish, Tanta Qism 2, Tanta, Gharbia Governorate, Egypt'], 161 | [32.7474661,-97.3278753, '1500 Houston St, Fort Worth, TX 76102, USA'], 162 | [46.7962454,23.6265524, 'Strada Memorandumului 28, Cluj-Napoca 400000, Romania'], 163 | [32.7767783,35.0231271, 'Haifa, 3200003, Israel'], 164 | [32.1133141,34.8043877, 'Tel Aviv-Yafo, Israel'], 165 | [31.7691587,35.1937099, 'יעקב שרייבום 26, ירושלים, 9103501, Israel'], 166 | [56.9508098,24.1163132, 'Raiņa bulvāris 19, Centra rajons, Rīga, LV-1586, Latvia'], 167 | [53.4668498,-2.2338837, 'Oxford Rd, Manchester M13 9PL, UK'], 168 | [-25.7676588,28.1992637, '1 Preller St, Pretoria, 0002, South Africa'], 169 | [38.0521497,-84.4936217, '300 N Broadway, Lexington, KY 40508, USA'], 170 | [42.4074843,-71.1190232, '419 Boston Ave, Medford, MA 02155‎, USA'], 171 | [37.8718992,-122.2585399, 'Berkeley, CA 94720, USA'], 172 | [34.068921,-118.4451811, 'Los Angeles, CA 90095, USA'], 173 | [32.8800604,-117.2340135, '9500 Gilman Dr, La Jolla, CA 92093, USA'], 174 | [40.1019523,-88.2271615, 'Champaign, IL 61801, USA'], 175 | [38.9869183,-76.9425543, 'College Park, MD 20742, USA'], 176 | [-25.7676588,28.1992637, '1 Preller St, Pretoria, 0002, South Africa'], 177 | [-34.5998875,-58.3730695, 'Viamonte 430, 1053 Buenos Aires, Argentina'], 178 | [41.406498,2.1945432, 'Rambla del Poblenou, 156, 08018 Barcelona, Spain'], 179 | [34.0223519,-118.285117, 'Los Angeles, CA 90007, USA'], 180 | [43.076592,-89.4124875, 'Madison, WI 53706, USA'], 181 | [10.49065,-66.8919913, 'Caracas, Capital District, Venezuela'], 182 | [40.4478246,-3.7285872, 'Av. Séneca, 2, 28040 Madrid, Spain'], 183 | [6.2468468,-75.5617397, 'Colombia #41-70, Medellín, Antioquia, Colombia'], 184 | [19.3188895,-99.1843676, 'University City, Mexico City, CDMX, Mexico'], 185 | [9.9986861,-84.1111858, 'Heredia Province, Heredia, Costa Rica'], 186 | [4.6381938,-74.0840464, 'Cra 45, Bogotá, Colombia'], 187 | [-16.500656,-68.134299, 'Colombia 154, La Paz, Bolivia'], 188 | [-34.5998875,-58.3730695, 'Viamonte 430, 1053 Buenos Aires, Argentina'], 189 | [38.9961521,-3.9228878, 'Av. Camilo José Cela, 7, 13005 Ciudad Real, Cdad. Real, Spain'], 190 | [4.6028443,-74.0648433, 'Cra. 1 #18a-12, Bogotá, Colombia'], 191 | [20.043494,-75.8172668, 'Santiago de Cuba, Cuba'], 192 | [14.5841461,-90.5554114, 'Ciudad Universitaria, 11 Av, Guatemala 01012, Guatemala'], 193 | [41.6569271,-4.7140547, 'C/Plaza de Santa Cruz, 8, 47002 Valladolid, Spain'], 194 | [4.8615787,-74.0325368, 'Puente Del Comun, Chía, Cundinamarca, Colombia'], 195 | [14.603554,-90.489184, '11-95, 01015,, 18 Avenida, Guatemala'], 196 | [-7.1367475,-34.8455092, 'Cidade Universitária, s/n - Conj. Pres. Castelo Branco III, João Pessoa - PB, 58051-900, Brazil'], 197 | [-27.599144,-48.5235907, 'Campus Reitor João David Ferreira Lima, s/n - Trindade, Florianópolis - SC, 88040-900, Brazil'], 198 | [-30.0338411,-51.2185702, 'Av. Paulo Gama, 110 - Farroupilha, Porto Alegre - RS, 90040-060, Brazil'], 199 | [-22.9541412,-43.1753638, 'Av. Pedro Calmon, 550 - Cidade Universitária, Rio de Janeiro - RJ, 21941-901, Brazil'], 200 | [38.7368192,-9.138705, 'Av. Rovisco Pais 1, 1049-001 Lisboa, Portugal'], 201 | [-23.5613991,-46.7307891, 'Butantã, São Paulo - State of São Paulo, 05508-090, Brazil'] 202 | ]; 203 | --------------------------------------------------------------------------------