~deciduously/aoc2020

e87bde2d0092efd02860bdb1f623a2881ab6d175 — Ben Lovy 1 year, 6 months ago 709b315
Day 4 part 1
4 files changed, 1222 insertions(+), 0 deletions(-)

A 4/day4
A 4/day4.nim
A 4/puzzle
A 4/sample
A 4/day4 => 4/day4 +0 -0
A 4/day4.nim => 4/day4.nim +88 -0
@@ 0,0 1,88 @@
import options, strutils

proc readLines(name: string): seq[string] =
    var ret: seq[string] = @[]

    # Delimiter is two newlines for this
    let wholeFile = readFile(name)
    for line in wholeFile.split("\n\n"):
        # strip any remaining internal whitespace
        var line = line.replace('\n', ' ')
        ret.add(line)
    ret

type
    Passport = ref object
        byr: Option[string]
        iyr: Option[string]
        eyr: Option[string]
        hgt: Option[string]
        hcl: Option[string]
        ecl: Option[string]
        pid: Option[string]
        cid: Option[string]

proc `$`(p: Passport): string =
    if p.pid.isSome:
        p.pid.get()
    else:
        "No ID"

proc newPassport(): Passport =
    Passport(byr: none(string), iyr: none(string), eyr: none(string), hgt: none(string), hcl: none(string), ecl: none(string), pid: none(string), cid: none(string))

proc passportFromString(str: string): Passport =
    let parts = str.split(' ')
    var ret = newPassport()
    for part in parts:
        let kv = part.split(':')
        case kv[0]:
            of "byr":
                ret.byr = some(kv[1])
            of "iyr":
                ret.iyr = some(kv[1])
            of "eyr":
                ret.eyr = some(kv[1])
            of "hgt":
                ret.hgt = some(kv[1])
            of "hcl":
                ret.hcl = some(kv[1])
            of "ecl":
                ret.ecl = some(kv[1])
            of "pid":
                ret.pid = some(kv[1])
            of "cid":
                ret.cid = some(kv[1])
            else: break
    ret
            

proc isValidPartOne(p: Passport): bool =
    p.byr.isSome and p.iyr.isSome and p.eyr.isSome and p.hgt.isSome and p.hcl.isSome and p.ecl.isSome and p.pid.isSome

# proc validateByr(str: string): bool
# etc

proc isValidPartTwo(p: Passport): bool =
    # byr
    # iyr
    # eyr
    # hgt
    # hcl
    # ecl
    # pid

proc generatePassports(filename: string): seq[Passport] =
    let strs = readLines(filename)
    var ret = newSeq[Passport]()
    for str in strs:
        ret.add(passportFromString(str))
    ret

let passports = generatePassports("puzzle")
echo passports
var res = 0
for pass in passports:
    if pass.isValid(): res += 1

echo res
\ No newline at end of file

A 4/puzzle => 4/puzzle +1121 -0
@@ 0,0 1,1121 @@
eyr:2024 pid:662406624 hcl:#cfa07d byr:1947 iyr:2015 ecl:amb hgt:150cm

iyr:2013 byr:1997 hgt:182cm hcl:#ceb3a1
eyr:2027
ecl:gry cid:102 pid:018128535

hgt:61in iyr:2014 pid:916315544 hcl:#733820 ecl:oth

hcl:#a97842
eyr:2026 byr:1980 ecl:grn pid:726519569 hgt:184cm cid:132 iyr:2011

ecl:grn hcl:#6b5442 pid:619743219 cid:69 hgt:176cm eyr:2027 iyr:2012
byr:1980

ecl:brn byr:1969 iyr:2014
hgt:164cm eyr:2020 pid:982796633 hcl:#602927

ecl:gmt
iyr:1987 eyr:2039 pid:15115163 byr:2006
hcl:bfab0d

cid:117
hcl:#efcc98
iyr:2010 pid:322719183
hgt:176cm
eyr:2020
byr:1957
ecl:brn

byr:1954 hgt:178cm hcl:#38f7fd pid:838813262 ecl:blu
eyr:2029 iyr:2019

eyr:2023 ecl:amb iyr:2020 byr:1927 pid:242570886 hcl:#18171d hgt:192cm

iyr:1990 cid:295 hgt:131 pid:187cm byr:2014
ecl:xry hcl:z
eyr:1928

ecl:hzl
byr:1953
eyr:2023 hcl:#866857
hgt:181cm iyr:2010 pid:568185567

byr:2030 hcl:#fffffd ecl:#a4a596 hgt:168cm
iyr:1936 eyr:2020 cid:296 pid:168786676

byr:2030 iyr:2026 eyr:1974 hcl:7fcaa5 ecl:utc
pid:190cm
hgt:67cm

byr:2023 eyr:2037 hgt:59cm
ecl:lzr hcl:z iyr:2026 pid:#ea9083

byr:2003 hcl:z hgt:91 iyr:1990 eyr:2024 ecl:#123d73
pid:48494230

byr:2022 eyr:2020 iyr:2030 ecl:gmt
hgt:191cm pid:3509331253 hcl:#888785

iyr:1994
ecl:#c3d564 byr:2009
hgt:162cm hcl:336498 pid:#e99d09
cid:288
eyr:1921

byr:1924 cid:290 iyr:2010 ecl:amb eyr:2020
hgt:156cm hcl:#7d3b0c pid:795497164

cid:301 iyr:2017 hgt:67cm
hcl:#888785 ecl:#0405b9 byr:1964 pid:707857518 eyr:1976

ecl:gry pid:474303066
iyr:2011 hcl:#18171d hgt:165cm byr:1921 eyr:2024

hcl:#6b5442 ecl:amb iyr:2020 hgt:191cm
byr:1949 cid:301
pid:075846582 eyr:2029

hcl:#a97842 cid:186 iyr:2014
ecl:gry
hgt:191cm eyr:2023 pid:645548969
byr:1956

pid:154cm hcl:z ecl:gmt iyr:1989 hgt:69in cid:53 byr:2010

hgt:72cm byr:2023
eyr:2034 hcl:z ecl:#f5249e iyr:1997 pid:#79af7a

eyr:2038 byr:2015
hgt:70cm ecl:grt hcl:9d58a1 iyr:1926 pid:6290928420

pid:620857794 eyr:2022
byr:1950
hgt:159cm
hcl:#ceb3a1 ecl:amb iyr:2015

eyr:1954 ecl:#ab2ce4 pid:#14eedd
iyr:2009
hcl:29e484
byr:2022 hgt:73cm

hgt:59cm byr:2026 cid:245 iyr:2020
eyr:2029 pid:073943129 ecl:hzl
hcl:#b6652a

iyr:2014 byr:2015 hcl:#a97842 eyr:2029
pid:#132098
hgt:150 ecl:oth

hgt:151in ecl:#967d49 eyr:2026 hcl:#18171d
pid:384230726 byr:1934
iyr:2018

iyr:2020 eyr:2021 byr:1937 pid:735047371 cid:159 ecl:blu hgt:177cm hcl:#22b774

ecl:brn hcl:#6b5442 pid:117807698 cid:105 iyr:2016 byr:1977 hgt:183cm

ecl:hzl hcl:#6b5442 byr:1933
iyr:2019 pid:348486702
eyr:2020 hgt:193cm

byr:1928
ecl:gry
eyr:2028 hcl:#fffffd pid:571149069
iyr:2012 hgt:175cm

pid:359108298
eyr:2027 hgt:158cm ecl:amb iyr:2016
hcl:#602927

iyr:2027 byr:2015
hgt:191in pid:102033301 ecl:xry
eyr:2031 hcl:#602927

ecl:oth cid:163 hcl:z iyr:2014
byr:1944 hgt:173cm
eyr:2027 pid:#0524c1

ecl:brn
byr:2030 hgt:71cm eyr:1931 cid:165 iyr:2010 hcl:#cfa07d
pid:509642098

hgt:166 iyr:2020 cid:308
eyr:2022 pid:950463527
byr:2017
hcl:z

ecl:amb
eyr:2023 byr:1924
pid:901038027 hgt:70in
iyr:2010 hcl:z

byr:1972
iyr:2013
hcl:d669ad hgt:64cm cid:247 ecl:#19aa26 eyr:2023

hgt:71 hcl:#fffffd
byr:1976 cid:108 eyr:2038
ecl:grt iyr:2018 pid:190cm

iyr:2017
byr:1963 ecl:grn hgt:175cm
pid:160915270 eyr:2028 hcl:#cfa07d

pid:569740130 hgt:171cm hcl:#733820
ecl:gry eyr:2024 iyr:2020 byr:1973

byr:1937
iyr:2016 ecl:gry hgt:181cm pid:521705827 hcl:#b6652a eyr:2027 cid:295

hgt:156cm ecl:blu iyr:2019 hcl:#866857
pid:662418718 byr:2000 eyr:2024

byr:1971 pid:693616099
hcl:#efcc98
hgt:175cm iyr:2016 ecl:gry
eyr:2023

iyr:2013
eyr:2024
ecl:gry
pid:414295491 byr:1986
hgt:188cm hcl:#b6652a

eyr:2022 byr:1975 iyr:2020
ecl:grn cid:68 hcl:#a97842
hgt:151cm pid:229803943

cid:258 iyr:2012
ecl:hzl
byr:2001
eyr:2021
hcl:#866857 pid:990590217 hgt:172cm

cid:339 byr:1957 hcl:#866857 pid:343480061 eyr:2039
hgt:191cm
iyr:2021
ecl:utc

cid:281 hcl:z ecl:blu
byr:2020 pid:132694306 eyr:2020 iyr:1953

hcl:#602927
byr:1933 eyr:2028
hgt:165cm ecl:gry iyr:2018 pid:658484617

ecl:oth
hgt:188cm cid:110 pid:056975690 iyr:2016 byr:1950 eyr:2023 hcl:#cfa07d

cid:342 hcl:#fffffd eyr:2024
pid:153555359 byr:1974
ecl:gry hgt:191cm iyr:2020

byr:2019 ecl:#160ed3 eyr:1999 hcl:z
cid:146 pid:195693972 hgt:159cm

iyr:2015 eyr:2030 hgt:191cm byr:1979
ecl:#ec4873 pid:994113786 hcl:#cfa07d

pid:552331609
ecl:grn
hgt:171cm eyr:2022 hcl:#b6652a
iyr:2020 byr:1931

hgt:177cm iyr:2010 pid:934058099
eyr:2020
ecl:blu
byr:1967
cid:112 hcl:#7d3b0c

iyr:2028
hgt:138
cid:180 hcl:z
eyr:2022 pid:3286566621 byr:2002

eyr:2020
iyr:2019
hcl:#a97842 pid:149148750 ecl:brn hgt:159cm
byr:1981 cid:339

cid:344
eyr:2021 byr:1968 pid:777786047
ecl:grn hgt:192cm hcl:#888785
iyr:2015

hgt:173cm
eyr:2030
hcl:#733820 pid:610226642 byr:1954 cid:80
iyr:2013 ecl:blu

byr:1999 eyr:2023
ecl:amb pid:912145128
hgt:181cm
iyr:2015 hcl:#a97842

eyr:2027 hgt:188cm
pid:080715145 hcl:#341e13 iyr:2013
ecl:oth
byr:1965

hgt:170cm byr:1950 iyr:2013
pid:010541784
eyr:2027 ecl:zzz
hcl:a3bae8

hgt:190cm eyr:2024 ecl:#6dcedc pid:909319684
iyr:2011 byr:1959 hcl:z cid:182

eyr:2028
iyr:2016 hcl:#623a2f pid:208417572 byr:1929 cid:137 ecl:hzl
hgt:167cm

hcl:#6b5442
ecl:grn
byr:1938
eyr:2023 cid:307
hgt:59in iyr:2014 pid:205268145

pid:047489285 eyr:2026
hcl:#b6652a byr:1920
iyr:2015
hgt:183cm ecl:gry

ecl:blu hcl:#508e8b iyr:2016 eyr:1954 hgt:151cm pid:086752750 byr:1920

iyr:2011 byr:1981 hgt:186cm
cid:117 hcl:#6b5442 ecl:amb
pid:756830713 eyr:2026

eyr:2037 pid:364464758 hcl:z ecl:grn
hgt:112 iyr:2013 byr:2022

ecl:hzl
cid:65 pid:679487194
byr:1986 hgt:169cm hcl:#cfa07d eyr:2025 iyr:2013

cid:192
byr:1921 pid:#5fe831 ecl:#fbb2b9 hgt:62cm eyr:1971 iyr:2024
hcl:z

hcl:#cfa07d eyr:2026
hgt:74in
iyr:2019
ecl:xry
pid:622690982 byr:1982

eyr:2026 pid:523515724 iyr:2013 byr:1973 hgt:167cm
ecl:grn hcl:#866857

byr:2009
eyr:1985 pid:484497014 ecl:#0bfcf2 iyr:1992 cid:131 hcl:39d6b0 hgt:177in

eyr:2020 iyr:2016 ecl:brn hcl:#ceb3a1 byr:1966 pid:696621560 cid:62
hgt:59in

hgt:166cm hcl:#7d3b0c
iyr:2016
ecl:brn pid:190cm
eyr:2020
byr:2001

eyr:2021
iyr:2012 hcl:#6b5442
ecl:amb hgt:169cm
pid:969150085
byr:1925

ecl:brn hgt:175cm byr:1992 iyr:2016 pid:415209726 eyr:2027
cid:72 hcl:#866857

iyr:2017
hcl:#733820 byr:1938 eyr:2020 pid:274486958 hgt:163cm

hcl:4f5dd1 cid:336 ecl:grn iyr:1931 pid:6212280197
byr:2016 eyr:2037
hgt:187in

iyr:2017 byr:1940 eyr:2025 pid:115098205 hgt:151cm
ecl:grn
cid:122
hcl:#6b5442

hcl:#efcc98
iyr:2020 pid:709548547 hgt:179cm
eyr:2030 ecl:gry byr:1975

cid:217 hcl:#888785 eyr:2029
ecl:hzl iyr:2013 pid:160053490
hgt:166cm byr:1992

eyr:2024 cid:188 iyr:2016 hcl:ff3a59 ecl:xry pid:296357512 byr:2026

hgt:154cm iyr:2010
ecl:blu pid:717041634 byr:1928 cid:123
eyr:2027
hcl:#a97842

pid:391011205 ecl:hzl hgt:191cm iyr:2016 eyr:2028 cid:281 byr:1934

byr:1937 hgt:65in
pid:667975382 ecl:gry cid:270 eyr:2024
iyr:2012

hgt:179cm pid:065528723
hcl:#888785 byr:1937 eyr:2028
iyr:2013 ecl:hzl

iyr:2027 cid:261 eyr:2037 ecl:#ced7d5 pid:157cm
hcl:3a80c1 byr:2029 hgt:187in

eyr:2028
hgt:157cm hcl:#733820
iyr:2012 ecl:blu byr:1952 pid:915063263 cid:335

eyr:2023 hcl:#efcc98 pid:490625944 byr:1961 ecl:grn hgt:155cm iyr:2018

cid:247 pid:2807544665 eyr:2021
ecl:oth
hgt:191cm
byr:1928
iyr:2013 hcl:#623a2f

eyr:2015
byr:2021
hcl:40d2fc hgt:69cm pid:159cm ecl:gmt

hgt:175cm eyr:1992 cid:328 pid:263110997 ecl:#e53989 byr:2014 hcl:#a97842 iyr:2026

pid:491396731 eyr:2027 hgt:172cm hcl:#623a2f cid:92 iyr:2017 byr:1983 ecl:grn

hcl:#fffffd
iyr:2018 byr:1983 pid:714591144 ecl:grn eyr:2021
hgt:160cm

eyr:2027
hgt:63in ecl:blu byr:1987 pid:397963077 iyr:2018 hcl:#ceb3a1

eyr:2027
hgt:184cm
hcl:#6b5442 iyr:2012 byr:1984 ecl:blu pid:196287205

iyr:1998
ecl:hzl
pid:7872103596 byr:1991
cid:275 eyr:2039
hgt:174cm hcl:0d2ad6

iyr:2010 hcl:#efcc98
byr:1992 hgt:65cm eyr:2038 pid:383236012 cid:68 ecl:lzr

hgt:190in cid:127
byr:1947 pid:515728209 hcl:#733820 iyr:2014 ecl:amb eyr:2020

iyr:2017 eyr:2028
hcl:#623a2f
byr:1964 ecl:grn pid:198467794 hgt:169cm

ecl:utc
hgt:59cm byr:2007 iyr:2030
hcl:7ac4db eyr:2038 pid:#7206c6

iyr:2010
hcl:z eyr:2021 ecl:brn
hgt:173 cid:86
pid:194240791 byr:1975

pid:9347286034
hgt:63cm
iyr:1992 eyr:2034 hcl:66031b ecl:grt byr:1929

pid:593398904 byr:1939 iyr:2019 hcl:#b6652a ecl:gry eyr:2023
hgt:70cm

byr:1991
iyr:2019 hgt:164cm pid:282852411 cid:340 ecl:amb
hcl:#341e13 eyr:2027

eyr:2020
iyr:2014 ecl:grn hcl:#866857 hgt:158cm
byr:1931 pid:321748597

cid:98 byr:2023 iyr:2019 pid:#48f79f
hcl:73c882 eyr:1973 hgt:151in
ecl:utc

iyr:2023
hcl:#18171d
pid:52221892 eyr:2039
byr:2008 hgt:72cm ecl:#db8d14

iyr:1966 cid:274
eyr:2034 pid:12256322
byr:2006 ecl:dne
hcl:985c2d

hcl:#fd033b
eyr:2026 ecl:blu
iyr:2016
byr:1953 hgt:157cm
pid:502619036

byr:2015 pid:159cm iyr:2025
hgt:158cm eyr:1943 hcl:z ecl:grn

ecl:blu iyr:2016
pid:842400950
hcl:#733820
cid:266
eyr:2027 byr:1931
hgt:161cm

iyr:2017 hgt:190cm byr:1994 pid:706570967
ecl:hzl hcl:#18171d
cid:180

cid:197 pid:204952666 ecl:amb
hgt:70in iyr:2016 byr:1936 hcl:#98cbe3 eyr:2025

pid:555499128
byr:1971 hgt:71in
cid:83 ecl:blu
hcl:#cfa07d eyr:2027

ecl:hzl iyr:2014
pid:30428184 cid:237
hgt:171cm byr:1942 hcl:#888785 eyr:1986

eyr:2025
pid:579385370 hgt:193cm
hcl:#c0946f byr:1979 iyr:2016
ecl:amb cid:284

eyr:2029 byr:1946 pid:278271295
ecl:grn
hcl:#cfa07d cid:271
hgt:172cm
iyr:2020

pid:731752614 eyr:2020 byr:1983
cid:248 ecl:oth hgt:179cm
iyr:2017 hcl:#fffffd

hcl:z
cid:203 eyr:2032 ecl:#3f9d3d hgt:65cm pid:4042846885 byr:2019
iyr:1946

hgt:171cm ecl:gry eyr:2027
iyr:2013
hcl:#7d3b0c pid:92288579
byr:1955

ecl:brn hgt:164cm byr:1969 hcl:#cbf9c9 pid:022724981 eyr:2030 iyr:2013 cid:244

hgt:162cm byr:1974 iyr:2015 pid:927525094 hcl:#3d3011 ecl:blu
eyr:2023

hgt:157cm
eyr:2020
pid:221286943 hcl:#fffffd ecl:amb iyr:2018 byr:1945

iyr:2019
eyr:2025 byr:1997 pid:341544323 hgt:174cm cid:113
ecl:hzl

pid:138492032 hcl:e35302 ecl:#caaede
eyr:1931
byr:2001 hgt:156 iyr:1998

pid:912182030 cid:189 hgt:162 hcl:#277b39
iyr:2013 eyr:2023 byr:2023 ecl:blu

eyr:2027 hcl:#fffffd
ecl:brn
cid:304 iyr:2016 byr:1969
pid:866607511 hgt:192cm

hgt:64in
ecl:amb
byr:1958
pid:720439412
iyr:2015 eyr:2022 hcl:#ceb3a1

eyr:2024 hgt:159cm
pid:187867283 iyr:2016
ecl:oth hcl:#fffffd
byr:1988

ecl:#910bf2 byr:1969 iyr:2011 hcl:z eyr:2024 pid:579502502
cid:103 hgt:174cm

pid:718692455
eyr:2028
iyr:2016
hcl:#602927
ecl:blu byr:1954
cid:251 hgt:182cm

eyr:2021 hcl:#341e13 ecl:amb
byr:1933 hgt:179cm iyr:2011 pid:083172316

iyr:1998 hcl:z eyr:1944
byr:2006 pid:453368738
hgt:160 ecl:#9da5f1 cid:261

hcl:#7d3b0c
iyr:2018
hgt:164cm eyr:2020 byr:1940 ecl:blu

pid:993701676 eyr:2028 ecl:gry
byr:1951 hcl:#888785 cid:116
iyr:2020
hgt:192cm

hcl:z eyr:2033
ecl:lzr iyr:2029 cid:326 hgt:68cm byr:2026
pid:96742419

hcl:#a97842 ecl:brn
byr:1920
hgt:173cm iyr:2015
eyr:2024 pid:176967666

byr:1930 eyr:2025 pid:792694131
hgt:179cm ecl:brn
hcl:#a97842
iyr:2015

hgt:167cm byr:1960 eyr:2022 hcl:#efcc98
cid:87 ecl:blu iyr:2012
pid:431515059

hcl:#cfa07d
eyr:2023
hgt:188cm ecl:grn pid:081575957 byr:1938 iyr:2012

iyr:2010 byr:1973
cid:108
eyr:2026
pid:880191154 hcl:#888785 hgt:181cm
ecl:brn

eyr:2021 iyr:2010 byr:1942 hcl:#7d3b0c ecl:hzl pid:886241926 hgt:171cm

cid:53 byr:1993
pid:150cm eyr:2035
hcl:#888785 hgt:153cm ecl:#128262 iyr:2021

ecl:gry
pid:555911148
hcl:#733820 eyr:2022 hgt:154cm iyr:2012
byr:1935 cid:338

hcl:#b6652a
pid:833873846 iyr:2012
hgt:167cm eyr:2023 byr:1984

eyr:2024
ecl:blu byr:1955
hcl:#b6652a pid:517975316 iyr:2010 hgt:166cm

pid:133785752
ecl:blu
eyr:2024
byr:1973
iyr:2019 hcl:#fffffd
cid:236 hgt:173cm

cid:222
byr:2013 hcl:z eyr:2036 pid:7443967478 ecl:brn
iyr:2030 hgt:62cm

hgt:193cm cid:259
hcl:#18171d
ecl:grn
byr:1995 pid:727880050 eyr:2030 iyr:2010

hcl:#c0946f cid:275 eyr:1954 pid:772184635 ecl:#76add7 byr:2009 iyr:2018 hgt:151cm

ecl:#52ed0f eyr:2033 hcl:#18171d pid:475397948
byr:1946 iyr:2028 hgt:178cm

iyr:2012 hgt:152cm
eyr:2027 byr:1923 ecl:brn
hcl:#18171d pid:513722888 cid:171

iyr:2029
hgt:111 hcl:z ecl:#33e3bc eyr:1930
byr:1934 pid:94036732

hgt:154cm eyr:2024 hcl:#6b5442 iyr:2017
byr:1974
ecl:amb pid:470968353 cid:345

hgt:184cm hcl:#617375 eyr:2028
byr:1975 ecl:oth
iyr:2018 pid:735589126

cid:261
hcl:#cfa07d pid:213013397
hgt:187cm
ecl:gry iyr:2016

hcl:#623a2f
ecl:#34964b eyr:2009 pid:169cm byr:2028 hgt:169cm
iyr:2028

eyr:2029 iyr:2016
byr:1985
hgt:192cm hcl:#602927 cid:167
ecl:blu pid:620818510

eyr:2029
byr:1968
ecl:blu
hgt:183cm iyr:2011 pid:952376140 hcl:#efcc98

iyr:2020
byr:1981 pid:850136149 eyr:2028 hgt:159cm hcl:#7d3b0c
ecl:brn

ecl:brn pid:480452858 hgt:65in cid:340 eyr:2022
byr:1946
hcl:#602927 iyr:2015

hgt:172 hcl:z eyr:1958 iyr:1941 byr:2019 pid:389995951 ecl:dne

byr:2025 hcl:4c8dcd
hgt:177in
ecl:#55d635
cid:197 pid:91192572
iyr:1921 eyr:2038

iyr:2027 pid:154cm
hgt:185in byr:2012
eyr:2036 hcl:efd47d
ecl:#64f98d
cid:86

eyr:2029 pid:837224515 ecl:grn cid:231 hcl:#733820 iyr:2019
hgt:159cm
byr:1977

pid:974518338 byr:1964 hcl:#cfa07d ecl:grn eyr:2030
hgt:61in
iyr:2019

iyr:2019
hgt:192in cid:94
eyr:1922
byr:1925 hcl:z ecl:utc pid:#081266

eyr:2027 iyr:2019 cid:328 byr:1961 hcl:#6b5442 ecl:blu hgt:177cm pid:235426720

byr:1959
eyr:2025
pid:890034625 ecl:oth
hgt:62in cid:348 hcl:#733820

hgt:161cm iyr:2018 pid:916160791 ecl:grn
byr:1951 hcl:#44d03a eyr:2025

hgt:158cm byr:1942 iyr:2012 hcl:#602927
eyr:2026 ecl:gry pid:651231060

ecl:hzl cid:340 pid:086942161 byr:1986 hcl:#a97842 iyr:2018
eyr:2028
hgt:181cm

ecl:blu
pid:278922687 cid:238 iyr:2018 hgt:153cm eyr:2027
byr:1965
hcl:#733820

eyr:2023 cid:208 hgt:178cm hcl:#341e13 byr:1937 pid:290981079 iyr:2010 ecl:grn

hcl:#888785
ecl:amb
byr:1943 pid:559804716 eyr:2026 hgt:166cm
iyr:2019

pid:947831563
ecl:gry
byr:1960 hcl:#341e13
iyr:2016 hgt:173cm eyr:2029

ecl:blu iyr:2016 pid:724632073 hcl:#623a2f
eyr:2028 hgt:192cm byr:1958

byr:2021
eyr:2016 hcl:z iyr:1988 pid:65353943
ecl:#bb553b
hgt:125

hcl:#efcc98 byr:1963 pid:290433211 eyr:2023 ecl:hzl
hgt:172cm iyr:2013

iyr:2015 ecl:brn
byr:2023 hcl:#18171d
pid:325330679
hgt:190in eyr:2023

pid:745674970 hgt:160cm eyr:2021 byr:1925 ecl:gry hcl:#341e13 iyr:2015
cid:297

eyr:2021
pid:596411633
byr:1947 ecl:blu cid:191 hcl:#341e13 hgt:168cm iyr:2019

eyr:2030 pid:#902a6b iyr:1997 hcl:11f396 hgt:188cm byr:2025
ecl:dne

eyr:2025
byr:2006
hcl:#888785 ecl:hzl hgt:187cm
iyr:2012 pid:017702828

byr:1988 hcl:#18171d iyr:2019
pid:110591871
ecl:hzl
hgt:160cm
eyr:2029

ecl:brn
hcl:#c0946f iyr:2030 pid:264404022 byr:1984 hgt:59cm eyr:2040

pid:5973803069
hcl:#cfa07d ecl:grt
hgt:153cm eyr:2039 byr:1970
iyr:2025

hcl:#fffffd
iyr:2022 byr:2026
hgt:180 pid:82035145 eyr:2034 cid:118 ecl:utc

hgt:186cm eyr:2026
ecl:brn
iyr:2013 hcl:#8f4c9b pid:010260339 byr:1948

ecl:amb hcl:#18171d iyr:2020 pid:259501214 byr:1978 hgt:193cm
cid:263 eyr:2022

hgt:161cm iyr:2015 byr:2014 eyr:2003
pid:708958872 ecl:grt
hcl:f4a430

hgt:170cm eyr:2021 pid:911638274 cid:110 byr:1963 ecl:blu
iyr:2015 hcl:1eda64

ecl:oth byr:1949 hgt:174cm hcl:#18171d eyr:2022 iyr:2019
pid:305857230

ecl:gry hcl:#a97842 pid:971971076 byr:2002 iyr:2019
hgt:188cm
eyr:2022 cid:238

eyr:2027 pid:221315043 iyr:2010 hgt:159cm ecl:blu byr:1998 hcl:#6b5442

hcl:#888785
byr:1926 eyr:2022 pid:433807814 ecl:grn
iyr:2010
hgt:181cm

ecl:grn hgt:164cm byr:1951 hcl:#18171d cid:75 pid:845508281 eyr:2021 iyr:2017

pid:#f59bc7
eyr:1987 hgt:191cm hcl:z byr:2024
iyr:1985

hcl:#623a2f pid:497429747
hgt:189cm
byr:1987
eyr:2027 iyr:2012 cid:95 ecl:hzl

byr:2000
hgt:165cm
iyr:2017 pid:519443292 eyr:2029 cid:240 hcl:#a97842
ecl:blu

cid:67 pid:038299774
eyr:2023 iyr:2015 hgt:179cm byr:1941 hcl:#18171d ecl:amb

byr:2000
eyr:2025 ecl:oth iyr:2017
pid:334154607
hcl:#fffffd hgt:173cm

hcl:#888785 ecl:amb
cid:131 iyr:2018 byr:1996 eyr:2026
hgt:180cm pid:709543988

iyr:1988
pid:263277424
hcl:ee8912 byr:1942 ecl:gry eyr:2040 hgt:161cm

eyr:2020 byr:1966 iyr:2020 hgt:169cm pid:611918000
hcl:#7d3b0c ecl:hzl

hgt:164cm ecl:brn
iyr:2015 pid:192054454 hcl:#6b5442 byr:1987 eyr:2022

byr:1952
ecl:zzz
pid:215953654
eyr:2021 hcl:#efcc98 hgt:153cm iyr:2026

hgt:167cm
hcl:#b6652a pid:847614726
eyr:2022 ecl:gry byr:1990 iyr:2015

hgt:185cm ecl:oth iyr:2012
byr:1933
cid:250
pid:038674023
hcl:#c0946f

pid:613273980 hcl:#a97842
ecl:oth byr:1924 hgt:179cm
eyr:2027 iyr:1950

hcl:#cfa07d byr:2018 hgt:190cm pid:64530329
ecl:brn
iyr:2024

hcl:z hgt:70cm pid:18807747
cid:284 byr:2023
eyr:2035 ecl:#4a1501
iyr:1954

iyr:2016 hgt:152cm pid:886247173 byr:1940 hcl:#c0946f eyr:2027 ecl:oth cid:150

hgt:152cm hcl:#48cfdf eyr:2025 cid:277
ecl:oth pid:246230621 byr:1932
iyr:2020

ecl:amb pid:871180042
cid:117 hcl:#602927 iyr:2011 hgt:152cm
eyr:2030 byr:1999

eyr:2024 ecl:hzl hgt:171cm
byr:1934 pid:356408125 iyr:2019 hcl:#b6652a
cid:169

eyr:2023
hcl:#7d3b0c
byr:1934 hgt:67in ecl:oth pid:191785527
cid:117 iyr:2016

iyr:2029
hcl:#602927 eyr:2022 byr:1931 ecl:oth hgt:192cm
pid:231475143

ecl:grn iyr:2014 cid:250 hcl:#b6652a byr:1970 pid:675238417 hgt:162cm
eyr:2026

ecl:brn
hcl:#623a2f eyr:2021 pid:293293433 hgt:158 byr:1977 iyr:2019

ecl:oth hcl:#ceb3a1 pid:013111996 eyr:2023 hgt:180cm byr:1976 cid:224

hgt:61cm
eyr:2027 ecl:amb pid:181cm iyr:1932
byr:1974
hcl:#18171d

byr:1968 hgt:167cm
hcl:#a97842 eyr:2022 iyr:2018 ecl:hzl pid:940968694

iyr:1943
hgt:96
cid:229
hcl:z eyr:1990 byr:2007 pid:#25aa73
ecl:#74592e

hgt:182cm iyr:2018 ecl:hzl eyr:2029 byr:1946 pid:602345030
hcl:#ceb3a1

pid:750306036 eyr:2020 hgt:181in ecl:xry
iyr:2011 hcl:z byr:1971 cid:71

pid:183825747 iyr:2019 hcl:#6b5442
byr:1974
hgt:180cm eyr:2028
ecl:amb

ecl:brn cid:200 pid:576495225
byr:1924
hcl:#efcc98 eyr:2022 iyr:2017 hgt:185cm

iyr:2020 hgt:167cm byr:1965 ecl:brn hcl:#888785
eyr:2028 pid:752062953

byr:2026
hcl:z
eyr:2020
ecl:#b4ec74 pid:187cm iyr:1974
cid:326 hgt:150cm

byr:1996 pid:507323629
iyr:2015 cid:347 eyr:2026 hcl:#efcc98
ecl:amb hgt:157cm

byr:2017 pid:456780590 hcl:#888785 eyr:1966 ecl:amb iyr:2023 cid:187 hgt:62cm

ecl:hzl iyr:2015 hcl:#6b5442 hgt:152cm eyr:2028 byr:1982 pid:003269467

iyr:2017 eyr:2026
ecl:blu cid:70 hcl:#7d3b0c
byr:1966 pid:160330947 hgt:189cm

iyr:2010 ecl:amb
hgt:164cm eyr:2029 byr:1963
pid:596606374 hcl:#efcc98

hcl:#fffffd cid:277 pid:102326370 hgt:154cm eyr:2026 iyr:2012 byr:1968
ecl:hzl

ecl:oth pid:477189554 hcl:#6b5442 eyr:2022 byr:1948 hgt:74in cid:181
iyr:2016

hgt:169cm hcl:#d7bc93
cid:344 ecl:oth
pid:#09c55d iyr:2017
eyr:2030 byr:1928

hcl:5d02ff ecl:#ca7901 iyr:1959 byr:2006 eyr:2022
hgt:164in
pid:#d6cdfd

ecl:amb pid:5739190196 eyr:2021 hgt:157in hcl:#efcc98 byr:2018 iyr:2028

byr:1995 ecl:hzl
iyr:2017
hcl:#a97842 pid:917039291 eyr:2026 hgt:175cm

iyr:2017 pid:756519868
hcl:#623a2f
eyr:2028
hgt:158cm
ecl:amb byr:1957

iyr:2012
hgt:158cm
byr:2014 pid:973021666 hcl:f04766 eyr:2035 ecl:utc

ecl:blu
byr:1989 eyr:2022
pid:520765501
cid:200 hgt:193cm hcl:#a97842 iyr:2011

byr:1959
ecl:blu hcl:#733820 cid:284 hgt:162cm
eyr:2022 pid:751629408 iyr:2016

byr:1978 cid:301
ecl:oth hgt:67cm hcl:#888785
eyr:2040 iyr:2025 pid:26038514

iyr:2020 byr:1974 hgt:163cm ecl:blu hcl:#7d3b0c eyr:2028 cid:99

hcl:#a97842
hgt:186cm
ecl:grn byr:1969 pid:460360492 iyr:2011 eyr:2028

byr:2009
pid:489490924 eyr:2031
hcl:cb5351 ecl:#083a25 hgt:164cm

iyr:2019
hcl:3463cc ecl:amb pid:4089063078 eyr:2022 hgt:150cm
byr:2007

eyr:2028 hcl:#ceb3a1
hgt:191cm iyr:2019 pid:737842199 ecl:blu cid:268 byr:1925

pid:868397851
hcl:#efcc98 ecl:grn iyr:2017 eyr:2021 byr:1943
hgt:179cm

hcl:#623a2f byr:1987 eyr:2023 iyr:2019 hgt:152cm
pid:473569020
ecl:grn

pid:953968630
hgt:175cm
byr:1971 ecl:blu hcl:#623a2f iyr:2017 cid:336 eyr:2030

ecl:grt hgt:74cm byr:2022 eyr:2024 pid:39114027
iyr:2026 hcl:4b5675

pid:#492988
eyr:2032 hgt:63cm iyr:2006
ecl:#817211 byr:2019

pid:800367032 hcl:#341e13
ecl:#765111 iyr:2012 byr:2006 hgt:166cm cid:291 eyr:2027

eyr:2021 iyr:2012 pid:876581393 ecl:amb hcl:#866857
hgt:64in byr:1993

iyr:2017 byr:1996 ecl:hzl pid:038990744
eyr:2028
hgt:177cm
hcl:#c0946f

hcl:#4214a6
eyr:2021
iyr:2019 cid:72 byr:1939
ecl:hzl pid:783071912 hgt:187cm

eyr:2020 hgt:158cm
pid:274060737 cid:277
iyr:2015 hcl:#bf9b5e byr:1950 ecl:brn

byr:1921 hcl:#7d3b0c cid:329 hgt:155cm eyr:2030 pid:718399669 iyr:2011 ecl:brn

cid:147 eyr:2021 hgt:167cm iyr:2010 ecl:grn byr:1975 hcl:#6b5442
pid:285479783

hgt:187cm
byr:2004 eyr:2025 hcl:bb331b
pid:851189955 iyr:2016
ecl:amb

hcl:#94007d pid:361561551 byr:1927 eyr:2026 iyr:2020
ecl:gry hgt:158cm

byr:1993 pid:#24c4af iyr:2023 hgt:175cm eyr:2028
hcl:z ecl:hzl cid:308

byr:1985 hcl:#c0946f eyr:2034 hgt:172cm
cid:300 iyr:2013 ecl:gry pid:389455676

eyr:2030 iyr:2017 byr:1956 hgt:178cm
pid:864401853 hcl:#6b5442

pid:836559549
iyr:2011
hgt:167cm
ecl:amb hcl:#c0946f
eyr:2026 byr:1981

pid:111085991 iyr:2011
ecl:blu eyr:2026 cid:311
byr:1920 hgt:182cm hcl:#602927

ecl:oth pid:284436132
byr:1929 cid:121
eyr:2027
iyr:2010
hgt:75in
hcl:#6b5442

byr:1987
hcl:#7d3b0c iyr:2018 hgt:180cm
ecl:blu eyr:2029 pid:878348021

hgt:183cm cid:98
byr:1953 hcl:#866857 eyr:2021 iyr:2012 pid:158898193

eyr:2030 pid:039638764 ecl:hzl hgt:190cm byr:1926
cid:294 hcl:#b6652a iyr:2017

A 4/sample => 4/sample +13 -0
@@ 0,0 1,13 @@
ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
byr:1937 iyr:2017 cid:147 hgt:183cm

iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
hcl:#cfa07d byr:1929

hcl:#ae17e1 iyr:2013
eyr:2024
ecl:brn pid:760753108 byr:1931
hgt:179cm

hcl:#cfa07d eyr:2025 pid:166559648
iyr:2011 ecl:brn hgt:59in
\ No newline at end of file