From 1d6085cd7dfb5d75b89ccf2edd950afec3665f24 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Tue, 8 Dec 2020 13:11:18 -0300 Subject: Add day 4 --- 2020/day4.raku | 146 +++++++++ 2020/day4.txt | 953 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1099 insertions(+) create mode 100644 2020/day4.raku create mode 100644 2020/day4.txt diff --git a/2020/day4.raku b/2020/day4.raku new file mode 100644 index 0000000..1790de4 --- /dev/null +++ b/2020/day4.raku @@ -0,0 +1,146 @@ +#!/usr/bin/env raku + +constant \EXAMPLE = q:to/END/; +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 +END + +constant \required-keys = ; + +sub split-input($input) { + $input.split: /^^$$/; +} + +sub valid-passport($passport --> Bool) { + [&&] required-keys.map({ $passport.contains($_) }) +} + +sub valid-passports($input) { + split-input($input).grep(*.&valid-passport) +} + +# Data Validation + +my %validations = ( + byr => sub ($v) { 1920 <= $v <= 2002 }, + iyr => sub ($v) { 2010 <= $v <= 2020 }, + eyr => sub ($v) { 2020 <= $v <= 2030 }, + hgt => sub ($v) { + if $v ~~ m/$ = [\d+] $ = [ cm || in ]/ { + if $ eq 'cm' { return 150 <= $ <= 193 } + else { return 59 <= $ <= 76 } + } + False + }, + hcl => sub ($v) { so $v ~~ m/'#' <[0..9 a..f]> ** 6/ }, + ecl => sub ($v) { so $v ~~ m/amb || blu || brn || gry || grn || hzl || oth/ }, + pid => sub ($v) { so $v ~~ m/^^\d ** 9 $$/ }, + cid => { True } +); + +sub data-validation($passport) { + [&&] $passport.words».split(':').map( + -> ($k, $v) { + %validations{$k}($v) + } + ) +} + +multi sub MAIN('part1', $file) { + say valid-passports(slurp($file)).elems; +} + +multi sub MAIN('part2', $file) { + say +valid-passports(slurp($file)).grep({ $_.&data-validation}) +} + +multi sub MAIN('test') { + use Test; + subtest 'Part1', { + is split-input(EXAMPLE).elems, 4, 'length'; + ok valid-passport(split-input(EXAMPLE)[0]), 'first input'; + nok valid-passport(split-input(EXAMPLE)[1]), 'second input'; + ok valid-passport(split-input(EXAMPLE)[2]), 'third input'; + nok valid-passport(split-input(EXAMPLE)[3]), 'four input'; + + is valid-passports(EXAMPLE).elems, 2, 'validate-passports'; + }; + subtest 'Part 2', { + subtest 'byr', { + ok %validations('2002'), 'valid'; + nok %validations('2003'), 'invalid'; + }; + subtest 'hgt', { + ok %validations('60in'), 'valid in'; + ok %validations('190cm'), 'valid cm'; + nok %validations('190in'), 'invalid in'; + nok %validations('190'), 'invalid'; + }; + subtest 'hcl', { + ok %validations('#123abc'), 'valid'; + nok %validations('#123abz'), 'invalid'; + nok %validations('123abc'), 'missing #'; + }; + subtest 'ecl', { + ok %validations('brn'), 'valid'; + nok %validations('wat'), 'invalid'; + } + subtest 'pid', { + ok %validations('000000001'), 'valid'; + nok %validations('0123456789'), 'valid'; + } + + subtest 'data validation', { + my $invalid-data = q:to/END/; + eyr:1972 cid:100 + hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 + + iyr:2019 + hcl:#602927 eyr:1967 hgt:170cm + ecl:grn pid:012533040 byr:1946 + + hcl:dab227 iyr:2012 + ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 + + hgt:59cm ecl:zzz + eyr:2038 hcl:74454a iyr:2023 + pid:3556412378 byr:2007 + END + + for split-input($invalid-data).kv -> $i, $passport { + nok data-validation($passport), "Run invalid $i"; + } + + my $valid-data = q:to/END/; + pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 + hcl:#623a2f + + eyr:2029 ecl:blu cid:129 byr:1989 + iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm + + hcl:#888785 + hgt:164cm byr:2001 iyr:2015 cid:88 + pid:545766238 ecl:hzl + eyr:2022 + + iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719 + END + + for split-input($valid-data).kv -> $i, $passport { + ok data-validation($passport), "Run valid $i"; + } + + } + } +} diff --git a/2020/day4.txt b/2020/day4.txt new file mode 100644 index 0000000..0e247b0 --- /dev/null +++ b/2020/day4.txt @@ -0,0 +1,953 @@ +ecl:amb +pid:690616023 +byr:1994 iyr:2014 hgt:172cm hcl:#c0946f eyr:2022 + +eyr:1980 cid:97 +hcl:z ecl:#102145 iyr:2011 byr:1945 +pid:187cm hgt:179in + +ecl:amb +iyr:2011 +cid:113 +eyr:2021 hcl:#b6652a pid:004682943 byr:1940 +hgt:173cm + +iyr:2023 +cid:146 byr:2022 ecl:dne hgt:76in eyr:2040 hcl:z + +hcl:#f97e30 +cid:73 iyr:2013 byr:1929 hgt:157cm +eyr:2024 ecl:blu pid:673398662 + +hcl:5343fe +hgt:152 byr:2018 +eyr:1992 pid:85999926 iyr:1938 ecl:#15bd97 + +byr:1975 hcl:z eyr:1988 pid:#c36f52 +iyr:2018 +hgt:184cm + +byr:1954 eyr:2023 hgt:170cm iyr:2012 ecl:blu pid:299556897 hcl:#b6652a + +hgt:191cm ecl:oth hcl:#7d3b0c +iyr:2016 pid:187567535 +byr:1999 eyr:2023 + +pid:814358147 eyr:2022 iyr:2000 byr:2001 hcl:#18171d +ecl:blu +hgt:76in + +ecl:hzl +hgt:163cm byr:1955 iyr:2018 eyr:2024 hcl:#6b5442 pid:343362099 + +eyr:2020 pid:185090160 ecl:#21a5e6 +iyr:1928 byr:2006 hcl:a2ebbf hgt:104 + +hgt:153cm +hcl:#a97842 ecl:blu eyr:2028 byr:1969 iyr:2019 +pid:729700590 + +iyr:2019 byr:1981 hgt:150cm pid:606092356 hcl:#18171d eyr:2026 +ecl:grn + +pid:760899887 +eyr:2023 hcl:#866857 hgt:185cm iyr:2017 +byr:1976 ecl:gry + +byr:1965 eyr:2026 +hcl:#623a2f +ecl:blu pid:483363116 iyr:2010 hgt:178cm cid:204 + +ecl:oth eyr:2022 +pid:268557763 byr:1965 iyr:2015 hcl:#c0946f hgt:164cm + +ecl:gry hgt:168cm hcl:#623a2f eyr:2020 cid:163 pid:124082663 iyr:2016 byr:1996 + +hcl:4c44fb iyr:1957 eyr:2039 ecl:grt hgt:63cm byr:2012 cid:104 + +byr:2024 iyr:2023 +ecl:gry +eyr:2007 pid:170cm hgt:68 hcl:d57b67 cid:333 + +byr:1956 +hgt:169cm iyr:2013 pid:370491367 +ecl:gry hcl:#5bc41d + +eyr:2023 iyr:2028 byr:1969 ecl:lzr hcl:1989b1 hgt:71cm pid:#12c226 + +cid:304 pid:866132461 +byr:2022 +hcl:z hgt:191in ecl:lzr iyr:2029 eyr:1989 + +ecl:brn hcl:#9a45a7 +hgt:176cm +byr:1974 pid:758747330 iyr:2014 eyr:2020 + +cid:190 ecl:hzl iyr:2014 byr:1990 hgt:69in eyr:2037 pid:384015829 hcl:#ceb3a1 + +byr:1998 eyr:2022 iyr:2018 hgt:153cm +hcl:#733820 pid:424512443 +ecl:blu + +hcl:27c41f byr:1972 eyr:1994 pid:777840405 +ecl:gry +hgt:179cm +iyr:2021 + +hgt:166cm eyr:2032 ecl:gry byr:1936 +pid:41703652 + +hcl:#efcc98 iyr:2019 byr:1936 pid:985830958 eyr:2021 +hgt:175cm ecl:brn + +eyr:2025 pid:972163513 hgt:155cm ecl:brn cid:169 iyr:2015 +hcl:#6b5442 + +eyr:2026 +hgt:173cm +byr:1984 +cid:191 +pid:791209101 hcl:#341e13 iyr:2020 ecl:hzl + +hgt:64cm +iyr:2010 byr:1978 +pid:618891746 hcl:#d6ac23 eyr:2023 ecl:brn + +eyr:2021 hcl:#341e13 iyr:2018 pid:502081929 +ecl:blu + +ecl:amb +iyr:2018 pid:8933462515 +hgt:160cm hcl:e330f0 eyr:2030 byr:2007 + +ecl:gry byr:1980 hcl:#341e13 iyr:2015 pid:830724822 hgt:167cm cid:156 +eyr:2023 + +ecl:gry hcl:#c39b75 byr:1995 hgt:153cm +eyr:2029 pid:83056475 iyr:2013 + +byr:1965 cid:250 +ecl:oth iyr:2016 +pid:242792947 eyr:2025 hcl:#efcc98 + +byr:2011 ecl:#62fe2d hcl:#2b434a hgt:190cm +eyr:2031 iyr:1964 pid:7096872943 + +cid:258 hcl:#c0946f pid:698224453 eyr:2029 hgt:189cm iyr:2012 ecl:blu byr:1963 + +eyr:2028 byr:1942 hgt:156cm pid:836243052 iyr:2016 +hcl:#888785 cid:310 ecl:brn + +hcl:#a97842 pid:740164307 ecl:oth byr:1997 +hgt:166cm +iyr:2015 eyr:2026 + +hcl:4ee9da iyr:2020 +eyr:1933 hgt:136 ecl:#8dee29 pid:44266010 byr:1966 cid:82 + +ecl:amb byr:1921 hgt:182cm eyr:2026 +hcl:#c0946f iyr:2010 + +hgt:178cm cid:343 eyr:2023 pid:197119382 hcl:#623a2f iyr:2017 +ecl:brn byr:2002 + +eyr:2030 byr:1967 ecl:blu hgt:166cm iyr:2017 +pid:655602762 hcl:#6b5442 + +cid:143 hgt:152cm eyr:2026 iyr:2018 byr:1950 ecl:grn hcl:#866857 pid:067535973 + +byr:2019 ecl:#e3c288 iyr:1948 hgt:72cm hcl:7da71b eyr:1956 + +hcl:#cfa07d +pid:688405238 cid:200 byr:1950 +iyr:2020 ecl:hzl hgt:170cm + +eyr:2026 hgt:164cm iyr:2010 hcl:#b6652a pid:404835595 byr:1924 ecl:blu + +iyr:2016 hcl:#866857 +ecl:gry +eyr:2023 pid:986813245 cid:247 byr:1977 +hgt:173cm + +ecl:#a59335 eyr:2023 +hcl:033f22 byr:1947 hgt:152 +iyr:2029 pid:#1e686a cid:305 + +byr:2005 +ecl:amb hcl:#a97842 +iyr:1972 +eyr:1967 pid:274884869 + +eyr:2038 iyr:2018 +pid:181cm ecl:xry hgt:185in +hcl:109b28 cid:287 + +ecl:amb byr:1943 pid:002483342 hgt:178cm +hcl:#c0946f eyr:2030 +iyr:2014 + +iyr:2020 byr:1963 cid:131 hcl:#18171d hgt:181cm pid:146726616 eyr:2021 + +pid:062629370 byr:1931 hgt:188cm eyr:2021 ecl:gry +hcl:#166b3d + +pid:007028786 ecl:blu hgt:156cm byr:1981 hcl:#888785 cid:53 iyr:2019 + +iyr:2014 hcl:#623a2f +ecl:hzl eyr:2029 byr:1988 +pid:849096536 hgt:167cm cid:322 + +pid:160824363 +hcl:#19bed3 +eyr:2024 hgt:171cm +byr:1968 iyr:2019 + +eyr:2024 hcl:#dd66d0 +byr:1986 +cid:105 pid:816153574 ecl:hzl iyr:2013 +hgt:173cm + +hcl:#ceb3a1 hgt:62in ecl:gry +iyr:2017 cid:234 byr:1963 +eyr:2029 +pid:514406488 + +hcl:#fffffd ecl:blu +eyr:2020 iyr:2010 +pid:544347103 hgt:164cm byr:1939 + +eyr:2021 +pid:999479324 hgt:164in ecl:brn iyr:2016 +hcl:#a97842 byr:2020 + +pid:053149570 byr:1920 eyr:2027 hgt:190cm iyr:2011 hcl:#fffffd ecl:oth + +hgt:165cm +hcl:#cfa07d +ecl:oth +eyr:2023 +pid:186cm +byr:1937 iyr:2012 + +eyr:2026 hgt:64cm hcl:#ac426a byr:1969 +cid:345 iyr:1960 +pid:#df648a ecl:blu + +byr:1923 iyr:2017 +eyr:2027 pid:798497862 hgt:182cm +hcl:#ceb3a1 ecl:oth + +hgt:182cm eyr:1990 ecl:grn hcl:#efcc98 byr:1968 +pid:005962011 +iyr:2010 + +cid:74 eyr:2020 hgt:71in +iyr:2015 pid:487940408 byr:1952 +hcl:#733820 + +hgt:75cm cid:249 +ecl:hzl +hcl:#6b5442 pid:4860441 eyr:2020 + +ecl:hzl eyr:2025 hgt:183cm +iyr:2020 byr:1993 pid:572766871 hcl:#866857 + +hcl:#888785 pid:200125941 hgt:155cm byr:1923 +eyr:2021 iyr:2010 ecl:gry + +pid:502547835 iyr:2014 hcl:#b6652a +byr:1985 hgt:189cm eyr:2024 + +eyr:2024 hcl:#fffffd ecl:amb byr:1952 +pid:724639818 +iyr:2013 hgt:183cm + +byr:2023 +iyr:2026 ecl:gry eyr:2032 hcl:3e0fc4 pid:5620497552 +hgt:84 + +cid:79 +hgt:68cm +iyr:2021 +pid:#365b83 byr:1928 +ecl:#79a6b3 eyr:2027 hcl:54130e + +hgt:74cm byr:1953 +cid:263 iyr:2018 +ecl:zzz +hcl:#efcc98 +pid:154cm eyr:1951 + +cid:272 pid:0638528559 hcl:z hgt:63cm byr:2029 ecl:zzz +eyr:2033 + +iyr:2016 +hgt:193cm hcl:#6b5442 pid:715518898 ecl:brn cid:195 +eyr:2025 + +ecl:oth +eyr:2025 hgt:166cm byr:1944 +iyr:2017 pid:814141652 + +eyr:2025 cid:140 ecl:hzl hcl:#c0946f pid:824866056 iyr:2011 hgt:65in byr:1947 + +iyr:2016 +ecl:brn eyr:2021 +hgt:161cm +byr:1984 hcl:#602927 pid:821539320 + +hgt:175cm cid:190 hcl:#ceb3a1 ecl:brn byr:1927 iyr:2017 eyr:2029 pid:836598854 + +eyr:2026 ecl:brn hgt:157cm pid:038645205 byr:1995 +iyr:2019 cid:339 + +ecl:brn hgt:70in hcl:#c0946f +pid:535498918 cid:153 +iyr:2012 eyr:2030 + +byr:1995 +hcl:#efcc98 hgt:174cm eyr:2030 pid:180839761 +ecl:grn iyr:2010 + +hgt:59cm eyr:2035 byr:2021 iyr:2012 ecl:hzl pid:219328725 hcl:#888785 + +ecl:oth hgt:184cm byr:1984 iyr:2016 +hcl:#cfa07d + +iyr:1998 byr:2024 ecl:lzr hgt:187 hcl:z eyr:1935 pid:#789b56 + +iyr:1967 hcl:z pid:828930046 hgt:59in +cid:153 +byr:2021 +ecl:grn +eyr:1935 + +byr:1991 +hcl:#341e13 ecl:gry iyr:2018 +hgt:67in pid:157970631 eyr:2021 + +byr:1941 hgt:169cm pid:322510952 hcl:#cfa07d cid:75 ecl:oth +eyr:2021 iyr:2020 + +hcl:#7d3b0c iyr:2013 cid:78 hgt:167cm ecl:brn byr:1974 pid:237404828 + +pid:1567157833 +hcl:#7d3b0c iyr:2025 eyr:2023 +byr:2002 ecl:oth hgt:191cm + +ecl:amb iyr:2014 hgt:182cm pid:526612838 +cid:287 eyr:2025 byr:1988 +hcl:#866857 + +hcl:#866857 hgt:174cm byr:1992 eyr:2028 iyr:2015 + +eyr:2029 +hgt:190cm +hcl:#18171d +cid:245 +ecl:oth pid:3636033742 byr:2024 +iyr:2019 + +byr:1972 hgt:163cm eyr:2020 hcl:#b6652a +pid:360516396 iyr:2019 ecl:grn + +iyr:1997 ecl:#be02d2 +eyr:2020 cid:259 byr:1953 +hcl:#6b5442 +hgt:177cm pid:978155362 + +pid:377596476 cid:153 +eyr:2025 byr:2000 hgt:181cm iyr:2014 hcl:#abc5cb ecl:hzl + +cid:171 ecl:lzr iyr:2013 eyr:1973 byr:2004 +pid:#267099 hgt:101 + +hcl:#623a2f +pid:029193661 +hgt:183cm +ecl:hzl eyr:2029 iyr:2013 +byr:1977 + +ecl:amb eyr:2021 hgt:159cm byr:1970 cid:152 +hcl:#b6652a iyr:2020 pid:180512119 + +eyr:2025 +ecl:grn +hgt:60in iyr:2013 pid:697352361 +hcl:#18171d byr:1989 + +byr:1934 hgt:165cm pid:703537570 ecl:hzl iyr:2015 +hcl:#888785 + +ecl:gmt +hcl:6dd6a5 +byr:1951 +pid:#7ab761 cid:304 iyr:1924 eyr:1953 hgt:71in + +ecl:amb hcl:#733820 eyr:2030 hgt:178cm +pid:692422832 iyr:2019 +cid:276 + +iyr:2012 ecl:oth +pid:674969358 +eyr:2027 hgt:157cm cid:247 hcl:#a97842 + +byr:2017 eyr:2031 hgt:180cm hcl:#ceb3a1 pid:372071110 +iyr:2015 ecl:amb + +hgt:165cm iyr:2015 +eyr:2021 ecl:amb byr:2000 cid:235 + +eyr:2027 hcl:#623a2f pid:595874068 +ecl:amb +hgt:177cm iyr:2019 byr:1929 + +pid:8150929412 hgt:191in eyr:2031 cid:233 byr:2027 +iyr:2026 ecl:#e94348 hcl:z + +hgt:65 byr:2009 iyr:2029 hcl:#fffffd eyr:1950 pid:950012410 cid:212 ecl:#5a6042 + +ecl:#44c561 hgt:178cm eyr:2021 pid:753771724 +iyr:2014 +hcl:#70adb2 byr:1989 + +iyr:2018 pid:809109448 ecl:amb hcl:#b6652a hgt:63in byr:1976 cid:96 + +byr:2021 ecl:grn pid:9284377919 iyr:2011 hgt:75cm hcl:#18171d eyr:2026 + +ecl:oth +byr:1926 +hgt:63 iyr:1948 cid:61 hcl:a528d1 eyr:2034 + +byr:1978 pid:150503169 iyr:2015 ecl:grn hgt:172cm cid:70 eyr:2022 hcl:#7d3b0c + +byr:1957 hcl:#cfa07d iyr:2010 ecl:amb eyr:2025 pid:921901279 + +ecl:utc pid:154cm +byr:1964 eyr:1978 hgt:114 hcl:z + +byr:1929 ecl:amb eyr:2028 iyr:2013 +hcl:#fffffd pid:479814281 +cid:105 hgt:64in + +pid:949640425 +cid:205 hcl:#341e13 ecl:amb +hgt:171cm byr:1998 + +hgt:190cm cid:113 ecl:grn eyr:2037 +hcl:#ceb3a1 pid:7994792779 iyr:2011 + +hgt:152cm iyr:2010 +byr:1992 eyr:2020 +hcl:#602927 +cid:66 +pid:604149642 + +eyr:2028 +byr:1961 hgt:71in +iyr:2013 cid:135 +pid:534090716 hcl:#ceb3a1 ecl:oth + +iyr:1937 byr:1995 cid:200 +eyr:2037 pid:#daf9af +hcl:052017 ecl:zzz hgt:73cm + +ecl:amb +hcl:#a97842 +iyr:2018 +hgt:153cm +cid:149 eyr:2023 pid:533403632 + +cid:275 ecl:brn iyr:2017 pid:087665205 byr:1945 hcl:#7d3b0c +eyr:2025 + +eyr:2030 hgt:177cm hcl:#cfa07d iyr:2018 pid:734113761 +byr:1965 + +hgt:163cm byr:1924 ecl:blu cid:125 +eyr:2027 hcl:#fffffd pid:137238888 + +hgt:174cm hcl:#623a2f eyr:2023 ecl:gry pid:585758460 +iyr:2011 + +cid:183 +byr:1928 pid:471385060 +hgt:192cm +ecl:oth iyr:2010 hcl:#623a2f eyr:2020 + +hgt:177cm +cid:273 ecl:oth eyr:2020 +hcl:#efcc98 +iyr:2012 pid:246299733 +byr:1954 + +pid:052203766 cid:146 ecl:hzl byr:1974 hcl:#6b5442 +eyr:2030 hgt:173cm +iyr:2011 + +hgt:167cm +byr:1972 iyr:2010 +pid:783359411 ecl:hzl hcl:#9f8cc9 eyr:2028 + +iyr:2020 hcl:#18171d ecl:grn +byr:1992 +hgt:189cm +eyr:2023 pid:736882272 + +cid:230 ecl:utc iyr:2022 +pid:170cm +byr:2015 hcl:#c0946f +eyr:2031 + +cid:261 +byr:1922 hgt:170cm ecl:brn eyr:2021 +pid:593276915 hcl:#18171d +iyr:2017 + +hcl:#341e13 pid:038417039 hgt:61in eyr:2025 iyr:2017 +cid:117 + +iyr:2017 eyr:2026 pid:441484223 +hgt:155cm byr:1968 hcl:#ceb3a1 ecl:hzl + +eyr:2021 +hgt:64in +ecl:oth hcl:#b6652a byr:1954 pid:204959612 iyr:2016 + +hcl:z eyr:1969 +pid:162cm ecl:#944b0f +iyr:2030 byr:2029 + +hgt:114 eyr:2034 byr:2026 hcl:84fa1a +pid:47909473 +iyr:2028 +ecl:utc + +eyr:2025 ecl:blu hgt:157cm iyr:2014 hcl:#a97842 byr:1974 pid:702610675 cid:241 + +pid:732388109 +hcl:#6b5442 cid:272 eyr:2026 hgt:193cm +ecl:amb byr:1982 + +eyr:2030 byr:1994 +hgt:177in ecl:amb pid:1589147420 iyr:2011 hcl:#4bf920 +cid:252 + +ecl:oth eyr:2022 +byr:1948 +pid:177cm cid:90 hgt:102 hcl:z iyr:2028 + +hgt:157cm pid:233347213 +hcl:z +byr:2009 eyr:2027 cid:235 ecl:blu +iyr:1965 + +ecl:blu iyr:2030 eyr:2028 hcl:#18171d pid:322593908 byr:1954 +cid:215 hgt:63in + +hgt:72cm +cid:345 pid:911728732 eyr:2025 +byr:2004 ecl:#0c4af7 hcl:3bb675 + +pid:171714794 byr:2019 +hcl:#866857 +cid:290 hgt:183in ecl:#d0c30f eyr:2032 + +iyr:2016 pid:905945155 hcl:#ceb3a1 byr:1958 hgt:159cm eyr:2028 cid:180 ecl:oth + +hcl:efb614 +eyr:2022 hgt:177cm pid:46962273 +byr:1974 +ecl:#089bdd iyr:1988 + +pid:662993164 iyr:2011 eyr:2025 ecl:hzl +byr:1942 hcl:#fffffd +hgt:175cm + +hcl:#7d3b0c iyr:2016 hgt:175cm eyr:2022 pid:953132241 +byr:1963 cid:261 ecl:grn + +iyr:2013 hgt:180cm cid:318 +ecl:amb +byr:1985 pid:439097817 eyr:2029 hcl:#602927 + +hgt:162cm ecl:blu +pid:675749832 cid:73 +byr:1940 hcl:#888785 +eyr:2026 + +pid:275352007 iyr:2012 eyr:2020 +ecl:amb hcl:#623a2f hgt:175cm cid:317 byr:1988 + +hcl:z hgt:164in +iyr:2026 eyr:1961 ecl:#2df35e pid:#5c9ed5 cid:341 + +pid:848086119 ecl:oth eyr:2021 iyr:2011 hgt:180cm byr:1923 hcl:#93461b + +eyr:2028 +iyr:2014 +byr:1978 +hgt:184cm +pid:966277564 ecl:hzl +cid:176 + +hcl:#888785 ecl:amb cid:329 pid:835961958 byr:1927 eyr:2028 iyr:2016 + +pid:160cm eyr:2026 hcl:#08714b +ecl:hzl iyr:1961 +hgt:156cm byr:1984 + +ecl:gry cid:302 +byr:1965 +iyr:2019 hcl:#ceb3a1 eyr:2027 pid:458192010 hgt:156cm + +pid:058273969 byr:1942 eyr:2027 +hcl:#c0946f iyr:2013 hgt:179cm + +iyr:2019 hgt:193in pid:52144528 eyr:2036 +cid:169 ecl:grt hcl:7e7039 + +hgt:192cm ecl:blu iyr:2015 pid:544936486 eyr:2024 +byr:1972 hcl:#c0946f + +eyr:2000 +hcl:78de23 byr:2020 +hgt:171in pid:160cm cid:68 +iyr:1956 ecl:gmt + +hcl:#733820 ecl:grn iyr:2018 +byr:2001 pid:770957230 + +cid:103 ecl:grn iyr:2018 +pid:068344094 +eyr:2023 hgt:69in byr:1984 hcl:#6b5442 + +hgt:193cm eyr:2021 ecl:grn hcl:#602927 byr:1938 iyr:2011 + +iyr:1931 +hcl:c0a318 +pid:99195939 +byr:2028 ecl:grt hgt:164 eyr:2017 + +eyr:1980 +ecl:zzz +hgt:98 cid:161 +pid:#96fe01 hcl:z +iyr:1974 + +byr:1936 hgt:176cm pid:56797167 iyr:2015 +ecl:#07ad47 +hcl:z + +pid:48720181 hcl:270e76 +byr:2022 +hgt:180cm ecl:#dde399 +eyr:2035 iyr:2023 + +eyr:2030 byr:2022 iyr:2018 hgt:162in ecl:gry +hcl:#63e2ec pid:615812600 + +ecl:grn +cid:56 hcl:#623a2f eyr:2020 hgt:167cm byr:1971 iyr:2012 +pid:262692066 + +hgt:61 hcl:#efcc98 iyr:2011 eyr:2026 +byr:1938 +ecl:amb pid:385025739 + +pid:972423724 hcl:#602927 eyr:2027 ecl:oth iyr:2015 +hgt:158cm byr:1956 + +pid:530035096 +ecl:hzl +iyr:2017 +eyr:2024 hcl:#888785 byr:1962 hgt:64in + +byr:1935 eyr:2022 ecl:grn hcl:#7d3b0c pid:294714199 + +eyr:2029 +iyr:2013 +byr:1927 hgt:175cm pid:058261075 hcl:#cfa07d ecl:amb + +ecl:blu pid:188764763 hgt:155cm byr:1921 +iyr:2018 eyr:2029 hcl:#b6652a + +byr:1975 hcl:930e76 iyr:2019 +pid:169cm eyr:2009 hgt:191 +ecl:#d28c56 + +hcl:z +pid:3190617557 +hgt:160cm cid:80 ecl:oth iyr:2022 eyr:2008 +byr:2016 + +hcl:#888785 byr:1999 ecl:blu cid:238 iyr:2018 hgt:160cm +eyr:2028 pid:174517111 + +eyr:2035 +hcl:z byr:2020 +pid:262135957 cid:324 iyr:2016 hgt:161cm ecl:grn + +byr:1936 +ecl:grn +iyr:2013 hcl:#623a2f eyr:2029 hgt:166cm + +hcl:#cfa07d hgt:159cm eyr:2021 +ecl:hzl +iyr:2014 pid:816039817 byr:1935 + +pid:596634790 hgt:161cm +eyr:2036 iyr:2016 +hcl:#7d3b0c byr:2015 ecl:brn + +byr:1952 +hgt:157cm eyr:2024 cid:60 pid:876160626 +ecl:blu iyr:2011 hcl:z + +hgt:193cm iyr:2020 eyr:2026 +pid:0136642346 ecl:hzl hcl:#efcc98 byr:1995 + +byr:1934 hgt:177cm +pid:445993865 +ecl:brn iyr:2018 +eyr:2030 +hcl:#733820 + +eyr:2021 hgt:71in +pid:918630878 +hcl:#602927 iyr:2017 byr:1943 +ecl:gry + +ecl:#81de2c iyr:2021 hgt:176cm eyr:1947 hcl:#888785 pid:1370052400 + +ecl:amb +byr:1922 iyr:2012 eyr:2022 pid:098866466 hcl:#18171d hgt:63in + +eyr:2028 iyr:2010 hcl:184355 +byr:1968 pid:337089458 ecl:brn hgt:181cm + +hcl:#733820 pid:225958483 ecl:gry eyr:2030 hgt:62in iyr:2012 byr:1987 + +eyr:1955 +hcl:03199c +pid:#3e832e +byr:2014 ecl:#453931 hgt:70cm + +byr:1975 +ecl:blu hcl:#7d3b0c +cid:169 pid:582470437 hgt:151cm +iyr:2019 eyr:2027 + +iyr:2017 byr:1971 pid:343492418 hgt:150cm hcl:#fffffd eyr:2024 + +byr:1997 +eyr:2026 +cid:257 hcl:#7d3b0c ecl:blu hgt:166cm iyr:2016 pid:117625518 + +iyr:2014 cid:248 hgt:165cm hcl:#18171d pid:294270262 +byr:1925 ecl:amb +eyr:2028 + +hgt:167in ecl:dne pid:174cm iyr:2019 byr:2005 hcl:b29331 cid:86 + +hcl:#733820 pid:259969636 eyr:2023 +ecl:hzl cid:317 +hgt:185cm byr:2025 +iyr:2012 + +hcl:#cfa07d hgt:152cm pid:807755992 iyr:2020 +byr:1922 ecl:grn eyr:2025 cid:241 + +pid:997807107 byr:1958 ecl:dne iyr:2013 eyr:2023 hcl:#18171d +hgt:152cm + +ecl:blu hgt:170cm +byr:1932 +pid:775223495 eyr:2024 iyr:2015 + +iyr:2011 +ecl:grn hcl:#ceb3a1 pid:190577415 +hgt:63in +eyr:2021 +byr:1986 + +ecl:oth eyr:2025 hgt:180cm +pid:258195402 iyr:2017 +byr:1961 +cid:109 hcl:#888785 + +hgt:178cm byr:1952 eyr:2023 hcl:#733820 +pid:106939563 ecl:brn iyr:2012 + +hgt:188cm iyr:2012 hcl:#fffffd byr:1942 +ecl:brn pid:804371742 + +byr:1978 cid:120 +eyr:2026 pid:405714523 hgt:60in +hcl:#a97842 ecl:blu +iyr:2017 + +iyr:2015 byr:1958 ecl:grn +hcl:#b6652a pid:#9e8af3 +eyr:2026 hgt:167cm + +hgt:171cm hcl:#888785 +cid:274 +ecl:grn pid:919263460 eyr:2023 iyr:2020 + +pid:606726472 eyr:2022 +byr:2008 +ecl:zzz cid:72 hgt:173in + +eyr:2032 byr:2004 +hcl:z iyr:2011 ecl:hzl +pid:523494728 +hgt:70cm + +hgt:169cm pid:755822781 byr:1984 ecl:hzl hcl:#6b5442 iyr:2014 + +eyr:2020 +byr:1942 cid:85 +hgt:157cm pid:558287447 hcl:#efcc98 +ecl:hzl + +byr:1980 cid:225 pid:367501996 iyr:2016 ecl:grn hcl:#efcc98 +hgt:175cm eyr:2029 + +pid:264780775 hgt:182cm ecl:grn +hcl:#18171d +eyr:2024 +byr:1926 iyr:2013 + +byr:1969 iyr:2015 +eyr:2026 ecl:blu +hcl:#fffffd +pid:005695878 cid:273 + +ecl:brn byr:2006 hgt:152cm +hcl:#888785 +pid:171cm cid:249 iyr:2026 +eyr:2022 + +byr:2011 iyr:2020 ecl:zzz hcl:z pid:412624100 +eyr:2031 + +cid:111 hcl:df9bd0 +iyr:2022 ecl:#32fdf9 +byr:2017 eyr:2000 +hgt:166in pid:0654651026 + +eyr:2021 +ecl:gry pid:587324819 hgt:187cm byr:1951 hcl:#6b5442 + +iyr:2011 +pid:180780096 hcl:#623a2f ecl:amb hgt:160cm byr:1991 eyr:2026 + +byr:2022 hgt:152cm eyr:2023 cid:70 ecl:grn +hcl:e0a24e +iyr:1959 pid:77110462 + +pid:251982311 byr:1994 ecl:gry hgt:165cm eyr:2021 +hcl:#623a2f +iyr:2019 + +ecl:blu byr:1945 +cid:241 +pid:732768808 hcl:#efcc98 +hgt:171cm eyr:2020 iyr:2012 + +cid:243 eyr:2001 +hcl:01a022 +hgt:162 pid:507703455 +byr:2003 ecl:#c6a07b +iyr:1941 + +hcl:#733820 cid:150 +ecl:hzl pid:843607639 hgt:190cm +byr:1958 +eyr:2025 + +eyr:2030 +pid:489370607 iyr:2014 ecl:oth hcl:#cfa07d byr:1995 hgt:193cm + +hgt:68in +byr:1933 +iyr:2010 ecl:brn +pid:380075958 +hcl:#623a2f cid:279 +eyr:2025 + +iyr:2019 +byr:2001 +hcl:#cfa07d ecl:brn pid:349877352 +hgt:161cm eyr:2029 + +hgt:171cm +eyr:2040 ecl:dne hcl:#6b5442 iyr:2020 byr:1990 + +hcl:#fffffd +hgt:154cm +byr:1979 eyr:2020 iyr:2018 +pid:118713281 cid:174 + +hcl:#7d3b0c eyr:2030 ecl:brn iyr:2017 +cid:184 hgt:180cm pid:504181498 byr:1925 + +hgt:150cm +eyr:2020 byr:1999 hcl:#a97842 iyr:2011 ecl:grn pid:620166468 + +hcl:#602927 +iyr:2015 +byr:1928 +pid:083747352 +eyr:2027 hgt:193cm +ecl:hzl + +byr:1938 ecl:gry +pid:511669464 eyr:1973 hgt:70cm +cid:262 iyr:2015 hcl:#c0946f + +eyr:2029 +byr:1923 hgt:160cm hcl:#7d3b0c iyr:2013 pid:525837692 ecl:gry + +hcl:#602927 eyr:2025 +pid:232338168 hgt:174cm cid:322 iyr:2010 ecl:oth + +hgt:192in cid:126 hcl:#6b5442 +pid:101406211 byr:1922 ecl:hzl eyr:2022 iyr:2013 + +eyr:2026 ecl:amb +byr:1921 +cid:336 +iyr:2020 hgt:182cm pid:533626984 + +pid:411943955 ecl:amb eyr:2025 hgt:166cm byr:1964 hcl:#341e13 cid:285 +iyr:2010 + +ecl:grn byr:1933 eyr:2024 +hgt:153cm +hcl:#5cfb31 iyr:2019 pid:773885967 + +ecl:hzl pid:426060511 +hgt:159cm +byr:1922 hcl:#6ffd04 iyr:2017 + +byr:2025 pid:#097d1b iyr:2020 eyr:2029 hcl:73d113 hgt:69cm ecl:utc + +ecl:amb hgt:170cm eyr:2025 byr:1930 iyr:2018 hcl:#733820 +cid:262 + +iyr:2019 +eyr:2021 +cid:65 pid:258615618 +ecl:oth byr:1987 +hcl:#efcc98 +hgt:178cm + +hcl:z eyr:1980 ecl:#1c5fd1 hgt:65cm byr:2014 +cid:222 pid:#c69fd5 iyr:2020 + +cid:271 pid:#4b8380 hcl:80fab0 +byr:2024 ecl:#20e25f +iyr:1945 +eyr:1935 hgt:159cm -- cgit v1.2.3-70-g09d2