initial commit

This commit is contained in:
Kegan Myers 2020-12-10 02:33:00 -06:00
commit feb9efed49
94 changed files with 22747 additions and 0 deletions

10
.editorconfig Normal file
View file

@ -0,0 +1,10 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
[*.txt]
insert_final_newline = false

0
.gitignore vendored Normal file
View file

18
README.md Normal file
View file

@ -0,0 +1,18 @@
# Advent of Code
This repository contains solutions to advent of code problems in JavaScript.
# Methodology
I have a few ideas I am following with these solutions:
- Don't use any 3rd-party libraries (don't `yarn add` anything, don't even make a `package.json`)
- Use as few node modules as makes sense (sure, use `crypto`, `child_process`, and `fs`, but don't use `assert`)
- Build a collection of helpers in the "lib/" folder that helps to solve the problems quickly and concisely
- Try, but not too hard, to make single-statement solutions
The most interesting thing written to service these goals is something called "Glib" (**G**enerator **lib**rary), which is similar to lodsh/lazy.js and built using generators to allow for lazy and intermediate-free operation (as much as possible). It also uses `BigInt`s throughout, because why not.
# License
This code is currently _not_ issued under any open source license and the author (Kegan Myers aka terribleplan) reserves all rights. Feel free to peruse the repo, but this is my OC, don't steal until I choose a license. It'll probably be BSD/ISC/MIT or similar at some point.

1
data/2015/1.txt Normal file

File diff suppressed because one or more lines are too long

1000
data/2015/2.txt Normal file

File diff suppressed because it is too large Load diff

1
data/2015/3.txt Normal file

File diff suppressed because one or more lines are too long

1
data/2015/4.txt Normal file
View file

@ -0,0 +1 @@
ckczppom

1000
data/2015/5.txt Normal file

File diff suppressed because it is too large Load diff

1
data/2016/1.txt Normal file
View file

@ -0,0 +1 @@
R3, L2, L2, R4, L1, R2, R3, R4, L2, R4, L2, L5, L1, R5, R2, R2, L1, R4, R1, L5, L3, R4, R3, R1, L1, L5, L4, L2, R5, L3, L4, R3, R1, L3, R1, L3, R3, L4, R2, R5, L190, R2, L3, R47, R4, L3, R78, L1, R3, R190, R4, L3, R4, R2, R5, R3, R4, R3, L1, L4, R3, L4, R1, L4, L5, R3, L3, L4, R1, R2, L4, L3, R3, R3, L2, L5, R1, L4, L1, R5, L5, R1, R5, L4, R2, L2, R1, L5, L4, R4, R4, R3, R2, R3, L1, R4, R5, L2, L5, L4, L1, R4, L4, R4, L4, R1, R5, L1, R1, L5, R5, R1, R1, L3, L1, R4, L1, L4, L4, L3, R1, R4, R1, R1, R2, L5, L2, R4, L1, R3, L5, L2, R5, L4, R5, L5, R3, R4, L3, L3, L2, R2, L5, L5, R3, R4, R3, R4, R3, R1

5
data/2016/2.txt Normal file
View file

@ -0,0 +1,5 @@
LUULRUULULLUDUDULDLUDDDLRURUDLRRDRDULRDDULLLRULLLURDDLRDLUUDDRURDDRDDDDRDULULLLLURDDLLRLUUDDDRLRRRDURLDDLRRLDUDRRRDLDLRRDLDLUURRLRULLULRUDRDLRUURLDRDLRLDULLLUDRDDRLURLUUDRLLLDRUUULLUULRUDDUDRDUURRRUDRLDDUURDUURUDRDDLULDDUDUDRRDDULUDULRDRULRLRLURURDULRUULLRDDDDRRUUDDDUUDRLLRUDRLRDLRRLULRLULRUDDULRLLLURLDDRLDDLRRLDRDDDRRLRUDRULUUDUURLDLRRULUDRDULDLLRRURRDDLRRRLULUDUUDDUDDLRDLRDRLRLDUDUDDUDLURRUURDRLRURLURRRLRLRRUDDUDDLUDRLUURUUDUUDDULRRLUUUDRLRLLUR
LDLLRRLDULDDRDDLULRRRDDUDUDRRLLRUUULRUDLLRRDDRRLDDURUUDLUDRRLDURDDRUDLUDUUDLDLLLDLLLDRLLDLRUULULLUUDULDUUULDDLRUDLLUDLUUULDRLUDRULUUDLDURDLDUULLRDUDRDLURULDLUUUDURLDDRLLDRLRDDDUDRUULLDLUDRRDDLDLUURUDDLDRURRLULUDDURLDRDRDUDDRRULRLDURULULRURDUURRUDRDDRDRLDRDUUDLRULRDDDULRURUDRUUULUUDDLRRDDDUDRLRUDRDLRRUDLUDRULDDUDLRLDDLDRLRDLULRDRULRLLRLUDUURULLLDDUULUUDDDUDRRULDDDULRUDRRLRLLLUDLULDUUULDDULDUUDLUULRDLDUDRUDLLDLDLLULDDDDLUDDUDRUDLRRRDDDDDLLRRDRUUDDDRRULRUDUUDRULLDLLLDDRDDUURLUUURUDRUDURLRUUUULUUURDRRRULDUULDLDDDRDDDDLLDRUDRDURLDDURDURULDDRLLRRLDUDRDURRLDRDLLULUUUD
LDDLRLRDDRLRUDDRDDUDRULUUULULDULRUULLRRDUULRDUUDDDRRULDDUDRLLLDULURDLDDRLLRURULULDLDULRDLDLRULUDLLDRUDLDURRDULDDRLRURDLLUDRDDDUDLUDULURULRDRLRULDLLRLDRRUDRDRUDRLDLRLUUURURRRLDDULLULLLRLRLULDLLRLDDRLDULURULRUURRUUURRUDRLRRURURDDDRULDULDLDLRRRLLDDRRURRULULULDRDULDRRULDUDRRLDULDRDURRDULLRRRLLLLRRLLRRRDRURDUULLURURURDDRRDRLLLULRRRDRLDRLDRDLLRUUDURRDRRDLLUDLDRLRLDLUDRDULRULRRLLRDLULDRLUDUUULLDRULDDLLRDUUUDRUUUUULUURDDLLDUURURRURLLURRDDUDUDRUUDDRDDRRLRLULRLRRRDRLLRRLLLDUULLUUDDLULLLDURRLLDRLDRDRLRRLRRULRRRRLRRRRRURUDULUULRDLLDRLRRDUURDRRUDRURRRDDRLDDLRLUDRDRDRRLDDDRDDRRRDUDULRURRDRDLLDRUD
UUUDLDDLRDLLLLRUUURDDLLURRUUURLUULLURUUDUDLDULULLRRRRLLLRDLLUDRUURDRURUDRURRLRLDRURLUDRLULRRURDDDURLLDULDLRRRDUUDDDRDLRUURRDRDRLRDLULRLDDRULRULDRDUDRUURLDLUDDULLLRURRLURLULDRRLUUURURLDLDDULLLRUUURDDDUURULULLUUUDUDRLLRRULUULDDDLLUDLURLLLRRULLURDRLUUDDLLDLLLUDULLRDRRRURDRUDUDUULUDURDLRUDLLRDDRURUDURLRULURDDURULLRDDRLRRDRLLULRDDDULRDLRULDDLRRDULDLUURRURUULRRDUURUDRRRRRLDULDLRURRULULDLRDDDRLLDURRULDUDUDRRRLUULRLUDURRRLRLDURRRRUULDRLUDDDUDURLURUDLLUDRDDDRLLURLRLDDURUUDDDUDUR
RURRRRURUDDRLURUDULRDUDDDUURULDRRRRURDLDRRLLDLUDLRRLRRUULLURULLRDLLRDDDDULLRLLDDLLRUDDULDUDLDURLRUULDDURURDURDLDRRULRURRRRRLRRLLUDURRURULRLRDLRLRRRLLURURDLLLDLDDULDLUDDLLLRUDDRDRLRUDRRLDDLRDLRLRLRLRRDUUURRUDRRLDLRRUULULLUDRRRUDLURDRUULDRDRRLUULULDDLURRLDULLURLDRLDULDRLLDLUUULLULRRDDRURRURLDLDRRLLLLLUDUURUULURLRDDDLRRRRLLLURUDLDDRDDRRUDURUULDRRULLLRRLRULLLRLDDLLRRLRURLRDRUDULLDDLDDDDDLDURURDLULRDDLRDLLRURLLRDLRUDDRDRRDURDURLUDRLDUDDDRRURRLUULURULLRLRDLRRLRURULLDDURLLRRRUDDRDLULURRRUUUULUULRRLLDLRUUURLLURLUURRLRL

1914
data/2016/3.txt Normal file

File diff suppressed because it is too large Load diff

991
data/2016/4.txt Normal file
View file

@ -0,0 +1,991 @@
aczupnetwp-dnlgpyrpc-sfye-dstaatyr-561[patyc]
jsehsyafy-vqw-ljsafafy-866[nymla]
tyepcyletzylw-ncjzrpytn-prr-opawzjxpye-743[cnrdl]
foadouwbu-qvcqczohs-obozmgwg-662[lamjh]
ckgvutofkj-pkrrehkgt-zkinturume-436[krtue]
pelbtravp-pnaql-ernpdhvfvgvba-481[szram]
yflexwxoalrp-ciltbo-tlohpelm-887[bmwep]
ipvohghykvbz-ihzrla-jbzavtly-zlycpjl-253[lzhvy]
cybyjqho-whqtu-rqiauj-fkhsxqiydw-322[syzwi]
tipfxvezt-sleep-tljkfdvi-jvimztv-425[tveif]
ktiaaqnqml-xtiabqk-oziaa-xczkpiaqvo-616[aiqko]
ckgvutofkj-xghhoz-gtgreyoy-306[nyhpz]
molgbzqfib-zovldbkfz-zxkav-lmboxqflkp-341[xlomg]
ikhcxvmbex-vtgwr-vhtmbgz-mxvaghehzr-111[hvgmx]
dpssptjwf-fhh-tfswjdft-805[fstdh]
oaddaeuhq-otaoaxmfq-qzsuzqqduzs-534[qadou]
dzczkrip-xiruv-sleep-drerxvdvek-685[erdvi]
jvsvymbs-yhiipa-vwlyhapvuz-149[zfyqn]
nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-853[sjnfy]
mbiyqoxsm-lsyrkjkbnyec-nio-wkbuodsxq-614[bkosy]
jchipqat-uadltg-hidgpvt-375[kcnop]
jqwpihizlwca-lgm-nqvivkqvo-980[ldeay]
xfbqpojafe-dipdpmbuf-tfswjdft-493[fdpbj]
kwvacumz-ozilm-kpwkwtibm-lmxtwgumvb-798[mwkbi]
eqttqukxg-ejqeqncvg-ocpcigogpv-648[sdtzl]
dsxxw-bwc-bcnjmwkclr-678[cwbxd]
jvuzbtly-nyhkl-ibuuf-thuhnltlua-175[ulhtb]
rdadguja-uadltg-bpgztixcv-401[adgtu]
atyzghrk-kmm-ktmotkkxotm-930[xzfpe]
uwtojhynqj-ojqqdgjfs-xjwanhjx-151[waqmk]
hwdtljsnh-uqfxynh-lwfxx-rfsfljrjsy-567[fhjls]
xst-wigvix-gspsvjyp-gerhc-erepcwmw-724[uplfw]
kzgwomvqk-jcvvg-zmamizkp-122[kmvzg]
sbejpbdujwf-dboez-dpbujoh-dvtupnfs-tfswjdf-623[uxrpz]
bxaxipgn-vgpst-rwdrdapit-prfjxhxixdc-609[xpdir]
avw-zljyla-zjhclunly-obua-ayhpupun-981[aluyh]
nuatmlmdpage-qss-fdmuzuzs-404[btopv]
oaddaeuhq-otaoaxmfq-dqoquhuzs-716[aoqdu]
myvybpev-cmkfoxqob-rexd-bomosfsxq-432[khwfc]
oxaflxzqfsb-zelzlixqb-jxohbqfkd-471[hxkwc]
fnjyxwrinm-snuuhknjw-anbnjalq-875[ztvnr]
qfmcusbwq-pibbm-fsqswjwbu-922[bqswf]
wihmogyl-aluxy-jfumncw-alumm-nluchcha-916[lmuac]
oxaflxzqfsb-avb-bkdfkbbofkd-757[trzjy]
ksodcbwnsr-qzoggwtwsr-gqojsbusf-vibh-fsgsofqv-818[gsdca]
rzvkjiduzy-xcjxjgvoz-gvwjmvojmt-161[zufvq]
nwlddtqtpo-mldvpe-dezclrp-639[zlnki]
vkppo-rqiauj-huqsgkyiyjyed-530[yijkp]
dfcxsqhwzs-qobrm-qcohwbu-fsoqeiwgwhwcb-688[wqbch]
vxupkizork-xghhoz-aykx-zkyzotm-462[kzoxh]
zotts-jfumncw-alumm-omyl-nymncha-396[bstha]
yaxsnlcrun-npp-cajrwrwp-355[nprac]
bkwzkqsxq-pvygob-nozkbdwoxd-822[bkodq]
frqvxphu-judgh-fdqgb-frdwlqj-hqjlqhhulqj-595[ezyxq]
hqtyeqsjylu-sqdto-sedjqydcudj-764[dqjsy]
fab-eqodqf-omzpk-fdmuzuzs-430[yxkbc]
gpewwmjmih-glsgspexi-xvemrmrk-204[cynzd]
kwtwznct-jcvvg-wxmzibqwva-694[cdaps]
guahyncw-wuhxs-zchuhwcha-396[xwnmj]
pybgmyargtc-zsllw-dglylagle-912[mcrsp]
kyelcrga-zyqicr-jyzmpyrmpw-782[yrcmp]
wsvsdkbi-qbkno-zvkcdsm-qbkcc-myxdksxwoxd-432[kdsbc]
ltpedcxots-rwdrdapit-advxhixrh-271[drtxa]
elrkdcdugrxv-sodvwlf-judvv-vklsslqj-465[vdlsj]
htwwtxnaj-hfsid-htfynsl-ywfnsnsl-281[ghfea]
nij-mywlyn-xsy-xymcah-682[kiasm]
zovldbkfz-yrkkv-abmilvjbkq-939[chetn]
esyfwlau-kusnwfywj-zmfl-ghwjslagfk-398[fwlsa]
lahxpnwrl-yujbcrl-pajbb-mnyuxhvnwc-147[tzcxk]
rwcnawjcrxwju-lqxlxujcn-lxwcjrwvnwc-381[hxsdl]
pbybeshy-pynffvsvrq-wryylorna-jbexfubc-143[ybfre]
lxaaxbren-kdwwh-bqryyrwp-407[sktqh]
pybgmyargtc-zyqicr-rpyglgle-106[vsdft]
jfifqxov-doxab-yxphbq-obxznrfpfqflk-939[nyvhm]
pualyuhapvuhs-jovjvshal-thuhnltlua-383[lrfob]
gvcskirmg-tpewxmg-kveww-pskmwxmgw-438[ujily]
lgh-kwujwl-tmffq-esfsywewfl-242[fwles]
jyddc-fewoix-hitevxqirx-412[ixdec]
uzfqdzmfuazmx-otaoaxmfq-ogefayqd-eqdhuoq-222[lbfru]
ryexqpqhteki-sxesebqju-tufbeocudj-348[tjzhb]
kfg-jvtivk-sleep-wzeretzex-477[ektvz]
kzgwomvqk-jcvvg-bmkpvwtwog-174[vgkwm]
odiih-kdwwh-uxprbcrlb-251[bdhir]
htqtwkzq-xhfajsljw-mzsy-yjhmstqtld-229[thjqs]
qjopwxha-xwogap-owhao-914[astye]
wrs-vhfuhw-edvnhw-hqjlqhhulqj-439[vufmz]
rdggdhxkt-xcitgcpixdcpa-rpcsn-rdpixcv-stktadebtci-609[cdtip]
eqttqukxg-fag-eqpvckpogpv-544[jmtpx]
kdijqrbu-sqdto-seqjydw-iuhlysui-946[bioht]
fydelmwp-awldetn-rcldd-cplnbftdtetzy-951[kpxim]
ubhatstkwhnl-unggr-nlxk-mxlmbgz-761[geyqm]
ocipgvke-gii-fgxgnqrogpv-726[giopv]
fab-eqodqf-otaoaxmfq-iadwetab-430[azmnb]
fab-eqodqf-otaoaxmfq-pqhqxabyqzf-456[qafob]
xekdwvwnzkqo-zua-naoawnyd-784[anwdk]
sbejpbdujwf-fhh-tbmft-285[mbfsn]
hwbba-eqpuwogt-itcfg-rncuvke-itcuu-ugtxkegu-648[ugtce]
hqcfqwydw-fbqijys-whqii-cqdqwucudj-452[ztesw]
dmpuamofuhq-nmewqf-emxqe-742[meqfu]
iqmbazulqp-pkq-iadwetab-976[kcxmz]
lahxpnwrl-ljwmh-lxjcrwp-bnaerlnb-927[lnrwa]
laffe-lruckx-vaxingyotm-306[aflxc]
forwcoqhwjs-qcffcgwjs-tzcksf-rsdzcmasbh-220[csfwh]
yflexwxoalrp-gbiivybxk-abpfdk-731[sjtrd]
foadouwbu-ibghopzs-pogysh-kcfygvcd-506[ogbcd]
rtqlgevkng-hnqygt-ugtxkegu-232[zdgob]
yrwxefpi-fyrrc-asvowlst-880[jmzfi]
tyepcyletzylw-nlyoj-nzletyr-fdpc-epdetyr-795[jfvnq]
rkpqxyib-yxphbq-lmboxqflkp-627[vzmla]
xjinphzm-bmvyz-hvbizodx-ytz-gjbdnodxn-967[jmuws]
ktfitzbgz-vtgwr-inkvatlbgz-813[tgzbi]
hqtyeqsjylu-sbqiiyvyut-fbqijys-whqii-vydqdsydw-634[yqisd]
hcd-gsqfsh-dzoghwq-ufogg-qcbhowbasbh-506[hgboq]
ryexqpqhteki-uww-qdqboiyi-140[qiewy]
bkzrrhehdc-qzaahs-cdoknxldms-625[czsmn]
sawlkjevaz-lhwopey-cnwoo-yqopkian-oanreya-966[znhlt]
xjgjmapg-hdgdovmt-bmvyz-zbb-yzkgjthzio-577[gzbjm]
myxcewob-qbkno-lexxi-wkbuodsxq-250[xboek]
nsyjwsfyntsfq-hfsid-htfynsl-wjfhvznxnynts-255[umtns]
kpvgtpcvkqpcn-ecpfa-ewuvqogt-ugtxkeg-596[ehsca]
vkrhzxgbv-cxeeruxtg-ftgtzxfxgm-579[ymast]
pbeebfvir-fpniratre-uhag-genvavat-663[smznt]
vehmsegxmzi-glsgspexi-hitpscqirx-802[jszht]
tyepcyletzylw-nlyoj-nzletyr-cpdplcns-223[lycen]
jxdkbqfz-oxaflxzqfsb-avb-lmboxqflkp-523[mzvny]
tcfkqcevkxg-tcddkv-uvqtcig-336[cdsln]
ide-htrgti-hrpktcvtg-wjci-ldgzhwde-947[tdghi]
ojk-nzxmzo-kgvnodx-bmvnn-ozxcijgjbt-213[nojxz]
avw-zljyla-msvdly-yljlpcpun-539[lyajp]
rdchjbtg-vgpst-rpcsn-rdpixcv-htgkxrth-661[rtcgh]
xlrypetn-dnlgpyrpc-sfye-dezclrp-353[pelry]
enqvbnpgvir-enoovg-erfrnepu-455[ftlpj]
xjinphzm-bmvyz-xviyt-xjvodib-pnzm-oznodib-291[mlybz]
rwcnawjcrxwju-kjbtnc-bqryyrwp-511[tkyns]
gokzyxsjon-pvygob-nofovyzwoxd-458[ndtfs]
bjfutsneji-hfsid-htfynsl-rfwpjynsl-489[fsjnh]
ydjuhdqjyedqb-rqiauj-qdqboiyi-452[qdijy]
enzcntvat-rtt-genvavat-351[lznyt]
rdadguja-qjccn-advxhixrh-791[yncim]
fmsledevhsyw-ikk-irkmriivmrk-646[nlxzm]
jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-471[oxpbf]
jqwpihizlwca-zijjqb-aitma-408[gzpmw]
pyknyegle-afmamjyrc-bcqgel-808[gynip]
zbytomdsvo-mkxni-bocokbmr-406[obmkc]
wfummczcyx-luvvcn-fuvilunils-526[bavmt]
hwdtljsnh-gfxpjy-rfsfljrjsy-541[gpszy]
lsyrkjkbnyec-oqq-gybucryz-848[ybckq]
oaddaeuhq-vqxxknqmz-xasuefuoe-378[rzmqe]
vhglnfxk-zktwx-fbebmtkr-zktwx-wrx-vhgmtbgfxgm-813[xepwt]
yrwxefpi-gerhc-hitevxqirx-594[eirxh]
mvydjvxodqz-xviyt-xjvodib-rjmfncjk-265[cqirj]
kdijqrbu-tou-kiuh-juijydw-140[uijdk]
ugjjgkanw-usfvq-vwkayf-970[rntsw]
froruixo-fdqgb-ilqdqflqj-569[cylni]
gpsxdprixkt-hrpktcvtg-wjci-gtprfjxhxixdc-999[xptcg]
kwvacumz-ozilm-akidmvomz-pcvb-nqvivkqvo-460[emnrk]
pejji-zvkcdsm-qbkcc-domrxyvyqi-484[cdijk]
rdadguja-xcitgcpixdcpa-qphzti-bpgztixcv-791[cipad]
rkpqxyib-zxkav-zlxqfkd-qoxfkfkd-965[qiftn]
bkzrrhehdc-bnmrtldq-fqzcd-atmmx-qdrdzqbg-937[dqrbm]
eqttqukxg-rtqlgevkng-dwppa-fgxgnqrogpv-570[gxetc]
zbytomdsvo-mkxni-myxdksxwoxd-510[xdmok]
ymszqfuo-rxaiqd-dqmocgueufuaz-274[umtwy]
pelbtravp-ovbunmneqbhf-qlr-znantrzrag-663[xlyio]
rdadguja-ytaanqtpc-gtprfjxhxixdc-141[krcaf]
etaqigpke-hnqygt-eqpvckpogpv-362[pegqk]
rtqlgevkng-etaqigpke-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-206[gxszf]
fubrjhqlf-fkrfrodwh-sxufkdvlqj-777[pozts]
wfintfhynaj-wfggny-xjwanhjx-957[nfjwa]
xcitgcpixdcpa-bpvctixr-qphzti-gthtpgrw-479[zjlmc]
gntmfefwitzx-hfsid-fsfqdxnx-697[oanif]
xgjougizobk-jek-jkvgxzsktz-384[kgjzo]
nzydfxpc-rclop-mldvpe-cpdplcns-925[pcdln]
ltpedcxots-qphzti-gtrtxkxcv-739[txcpd]
gvaaz-fhh-mphjtujdt-233[hajtd]
jchipqat-rpcsn-gtprfjxhxixdc-297[cpxhi]
gsvvswmzi-gerhc-tyvglewmrk-308[zbdcy]
dmybmsuzs-omzpk-oamfuzs-pqhqxabyqzf-508[mzqsa]
iruzfrtkzmv-treup-tfrkzex-jkfirxv-295[rfktz]
pdjqhwlf-mhoobehdq-vwrudjh-127[hdjoq]
rgndvtcxr-hrpktcvtg-wjci-apqdgpidgn-375[jdrhb]
sbqiiyvyut-isqludwuh-xkdj-efuhqjyedi-114[qjzpn]
lahxpnwrl-npp-nwprwnnarwp-459[ontmq]
zntargvp-onfxrg-fnyrf-871[fnrga]
molgbzqfib-avb-absbilmjbkq-601[bailm]
kpvgtpcvkqpcn-tcddkv-wugt-vguvkpi-492[vkpcg]
jfifqxov-doxab-zxkav-zlkqxfkjbkq-341[kxfqa]
qfmcusbwq-dzoghwq-ufogg-fsqswjwbu-220[zbjty]
xjinphzm-bmvyz-mvwwdo-yzkgjthzio-785[zmhij]
ejpanjwpekjwh-ydkykhwpa-owhao-186[hqlfd]
nzydfxpc-rclop-prr-cplnbftdtetzy-483[pcrtd]
kwtwznct-rmttgjmiv-amzdqkma-590[mtakw]
muqfedyput-fbqijys-whqii-iqbui-790[gjxky]
egdytrixat-rgndvtcxr-rpcsn-jhtg-ithixcv-115[trcgi]
fab-eqodqf-rxaiqd-mzmxkeue-404[eqadf]
zotts-xsy-guleyncha-708[ymnbi]
mbiyqoxsm-pvygob-gybucryz-536[zbyxv]
dmybmsuzs-bxmefuo-sdmee-pqhqxabyqzf-716[mbeqs]
qspkfdujmf-ezf-fohjoffsjoh-519[fjohs]
nwlddtqtpo-prr-xlcvpetyr-249[owkmz]
amlqskcp-epybc-aylbw-amyrgle-bctcjmnkclr-808[clabm]
qspkfdujmf-qmbtujd-hsbtt-eftjho-727[tigys]
pualyuhapvuhs-thnulapj-msvdly-ylzlhyjo-877[lhuya]
diozmivodjivg-zbb-nzmqdxzn-629[zdibm]
yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-qerekiqirx-126[erixk]
qlm-pbzobq-zxkav-zlxqfkd-zrpqljbo-pbosfzb-575[phqza]
irgyyolokj-lruckx-aykx-zkyzotm-904[ubkvy]
cebwrpgvyr-pnaql-pbngvat-bcrengvbaf-793[bagnp]
wlsiayhcw-wifilzof-wuhxs-mylpcwym-630[wilyc]
nglmtuex-ktuubm-nlxk-mxlmbgz-215[egtsz]
sbejpbdujwf-dboez-nbobhfnfou-883[jpkmo]
qzoggwtwsr-qobrm-gsfjwqsg-480[xkwvm]
nwzekwypera-oywrajcan-dqjp-wymqeoepekj-472[zeydw]
sawlkjevaz-ywjzu-yqopkian-oanreya-836[ayejk]
pybgmyargtc-afmamjyrc-rpyglgle-470[zgmsu]
nzwzcqfw-qwzhpc-cplnbftdtetzy-977[zctwf]
lhkhszqx-fqzcd-okzrshb-fqzrr-cdudknoldms-651[defrs]
ugfkmewj-yjsvw-owshgfarwv-tskcwl-wfyafwwjafy-294[wfajs]
gpbepvxcv-gpqqxi-stktadebtci-609[npyad]
pxtihgbsxw-vahvhetmx-hixktmbhgl-397[pvcfe]
guahyncw-vohhs-fiacmncwm-656[chamn]
wfruflnsl-uqfxynh-lwfxx-wjfhvznxnynts-463[fnxlw]
lzfmdshb-cxd-dmfhmddqhmf-703[dmfhb]
gzefmnxq-eomhqzsqd-tgzf-oazfmuzyqzf-118[zfqme]
udskkaxawv-usfvq-ugslafy-hmjuzskafy-658[asufk]
ugjjgkanw-vqw-ksdwk-112[kwgja]
enqvbnpgvir-cynfgvp-tenff-fuvccvat-975[vfnce]
fydelmwp-ojp-nfdezxpc-dpcgtnp-353[gziom]
fmsledevhsyw-gpewwmjmih-glsgspexi-tyvglewmrk-178[egmsw]
shmml-enoovg-freivprf-585[efmor]
bnqqnrhud-atmmx-qdrdzqbg-651[qdbmn]
pxtihgbsxw-vahvhetmx-nlxk-mxlmbgz-943[xhmbg]
xfbqpojafe-dipdpmbuf-tbmft-441[wuizc]
zsxyfgqj-uqfxynh-lwfxx-ijxnls-749[futrq]
oaddaeuhq-nmewqf-dqmocgueufuaz-508[mwlcv]
buzahisl-zjhclunly-obua-zavyhnl-201[kzylj]
yhwooebeaz-iwcjapey-oywrajcan-dqjp-zaoecj-524[aejoc]
bwx-amkzmb-qvbmzvibqwvit-lgm-zmikycqaqbqwv-772[dubva]
oxmeeuruqp-ngzzk-fqotzaxask-638[zaeko]
xfbqpojafe-qmbtujd-hsbtt-efwfmpqnfou-363[fbqte]
iehepwnu-cnwza-xqjju-nayaerejc-472[eajnc]
ytu-xjhwjy-jll-ijxnls-385[moyjn]
nvrgfezqvu-treup-tfrkzex-wzeretzex-997[fpvnt]
kwvacumz-ozilm-moo-camz-bmabqvo-434[sanvt]
lxaaxbren-ouxfna-bjunb-277[abnxu]
gpsxdprixkt-uadltg-tcvxcttgxcv-453[txcgd]
owshgfarwv-jsttal-hmjuzskafy-658[asfhj]
pbafhzre-tenqr-qlr-ynobengbel-403[ebnrl]
yaxsnlcrun-mhn-jlzdrbrcrxw-121[wngsc]
bgmxkgtmbhgte-vtgwr-vhtmbgz-tgterlbl-995[gtbme]
nvrgfezqvu-avccpsvre-tljkfdvi-jvimztv-269[vcefi]
apwmeclga-pyzzgr-dglylagle-158[auvsi]
qczcftiz-pogysh-rsgwub-350[kcdvs]
qlm-pbzobq-gbiivybxk-abpfdk-211[bikpq]
crwwv-rkpqxyib-yrkkv-cfkxkzfkd-419[krcfv]
sbnqbhjoh-cbtlfu-tupsbhf-285[bhfst]
qlm-pbzobq-avb-bkdfkbbofkd-159[golnc]
nchhg-jiasmb-lmaqov-902[dpmcw]
tagzsrsjvgmk-jsttal-umklgewj-kwjnauw-944[fsqml]
rkpqxyib-yxphbq-jxkxdbjbkq-601[npbtf]
ujqgywfau-tmffq-hmjuzskafy-736[zmnlk]
ujqgywfau-hdsklau-yjskk-umklgewj-kwjnauw-190[kujwa]
uqtqbizg-ozilm-jcvvg-lmxizbumvb-850[mhanw]
yhtwhnpun-ihzrla-klclsvwtlua-591[lkqzn]
sbqiiyvyut-sqdto-seqjydw-sedjqydcudj-738[warvn]
bwx-amkzmb-uqtqbizg-ozilm-moo-kwvbiqvumvb-746[wystg]
tipfxvezt-vxx-cfxzjkztj-555[xtzfj]
cjpibabsepvt-cvooz-sftfbsdi-571[myqsb]
ymszqfuo-fab-eqodqf-pkq-xmnadmfadk-274[tkbds]
wlqqp-treup-tfrkzex-jkfirxv-581[refkp]
lnkfaypeha-fahhuxawj-wjwhuoeo-550[ahwef]
lsyrkjkbnyec-oqq-ckvoc-874[azsyv]
gvcskirmg-fewoix-wlmttmrk-360[mgikr]
irdgrxzex-tipfxvezt-treup-tfrkzex-cfxzjkztj-607[txzer]
avw-zljyla-zjhclunly-obua-yljlpcpun-617[lajuy]
nwzekwypera-lhwopey-cnwoo-hkceopeyo-134[zulqp]
vkppo-sqdto-seqjydw-jhqydydw-114[dqyjo]
zixppfcfba-zxkav-zlkqxfkjbkq-679[txhzn]
sbnqbhjoh-dboez-sftfbsdi-623[bsdfh]
qjopwxha-bhksan-zalhkuiajp-316[ahjkp]
yhtwhnpun-thnulapj-ibuuf-klzpnu-773[unhpl]
uwtojhynqj-kqtbjw-wjfhvznxnynts-827[ntyqj]
jef-iushuj-rkddo-ijehqwu-504[biekf]
gspsvjyp-tpewxmg-kveww-gywxsqiv-wivzmgi-672[sryce]
rgllk-eomhqzsqd-tgzf-etubbuzs-118[zbegl]
shmml-pubpbyngr-ynobengbel-403[bnegl]
gsrwyqiv-kvehi-fewoix-wivzmgiw-256[rimyz]
iuxxuyobk-yigbktmkx-natz-xkykgxin-852[kxiyb]
excdklvo-oqq-vklybkdybi-744[utifh]
ojk-nzxmzo-agjrzm-xpnojhzm-nzmqdxz-915[zmjno]
qspkfdujmf-sbccju-eftjho-103[byjhc]
fodvvlilhg-mhoobehdq-whfkqrorjb-699[taskb]
aflwjfslagfsd-usfvq-ogjckzgh-814[emsnh]
sebehvkb-uww-tulubefcudj-712[ubewc]
egdytrixat-gpbepvxcv-hrpktcvtg-wjci-hidgpvt-531[vzdcg]
nsyjwsfyntsfq-zsxyfgqj-gzssd-wjxjfwhm-749[sgmhv]
ktfitzbgz-yehpxk-kxvxbobgz-761[ryzea]
tcrjjzwzvu-irsszk-rthlzjzkzfe-503[ocepg]
dfcxsqhwzs-pibbm-sbuwbssfwbu-558[tocys]
nwzekwypera-bhksan-odellejc-758[eakln]
qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-402[cpzsy]
cvabijtm-zijjqb-uizsmbqvo-434[btzma]
irdgrxzex-srjbvk-glityrjzex-867[rxegi]
rdadguja-tvv-gtrtxkxcv-609[tvadg]
wdjcvuvmyjpn-zbb-mznzvmxc-213[ndmaz]
vagreangvbany-sybjre-nanylfvf-507[bryme]
vjpwncrl-mhn-bqryyrwp-979[rnpwy]
jqwpihizlwca-ntwemz-abwziom-642[iyzsa]
jchipqat-rwdrdapit-detgpixdch-921[dipta]
vqr-ugetgv-tcddkv-eqpvckpogpv-440[vgpcd]
ajyqqgdgcb-aylbw-amyrgle-qyjcq-756[qyagb]
fbebmtkr-zktwx-utldxm-nlxk-mxlmbgz-553[onbvf]
hwdtljsnh-kqtbjw-ijajqturjsy-827[jthqs]
sedikcuh-whqtu-sxesebqju-udwyduuhydw-556[rvudf]
ipvohghykvbz-tpspahyf-nyhkl-yhiipa-huhsfzpz-123[hpyiz]
fubrjhqlf-mhoobehdq-oderudwrub-153[bdhor]
mbggf-zjhclunly-obua-dvyrzovw-695[bglou]
houngfgxjuay-igtje-aykx-zkyzotm-176[qcita]
lugjuacha-mwupyhayl-bohn-xyjulngyhn-318[gnftc]
rdggdhxkt-rpcsn-rdpixcv-itrwcdadvn-505[uancd]
yaxsnlcrun-ouxfna-jwjuhbrb-199[xnmwj]
yrwxefpi-tpewxmg-kveww-wlmttmrk-334[rfqkl]
ktwbhtvmbox-unggr-kxtvjnblbmbhg-215[bgthk]
amlqskcp-epybc-bwc-pcyaosgqgrgml-600[cgpab]
ujqgywfau-usfvq-ugslafy-jwuwanafy-606[uafwy]
nwzekwypera-lhwopey-cnwoo-lqnydwoejc-134[xithv]
nwzekwypera-acc-naoawnyd-160[itvch]
luxciuwncpy-ohmnuvfy-yaa-wihnuchgyhn-526[hnuyc]
ygcrqpkbgf-ejqeqncvg-tgegkxkpi-674[gekqc]
mtzslklcozfd-qwzhpc-nfdezxpc-dpcgtnp-223[ucwob]
tinnm-tzcksf-zcuwghwqg-948[nmktj]
rdchjbtg-vgpst-hrpktcvtg-wjci-itrwcdadvn-453[ngtzh]
yrwxefpi-nippcfier-hizipstqirx-932[ipref]
cvabijtm-xtiabqk-oziaa-kcabwumz-amzdqkm-590[mpqzo]
dpmpsgvm-dipdpmbuf-efqmpznfou-259[pmdfu]
ynukcajey-nwxxep-zarahkliajp-238[ytaej]
zbytomdsvo-mkxni-mykdsxq-nocsqx-770[mosxd]
tagzsrsjvgmk-xdgowj-jwuwanafy-814[efhpk]
xqvwdeoh-fdqgb-rshudwlrqv-127[jpkat]
kpvgtpcvkqpcn-fag-qrgtcvkqpu-596[pcgkq]
zlkprjbo-doxab-gbiivybxk-obpbxoze-393[boxik]
zbytomdsvo-mrymyvkdo-domrxyvyqi-744[ymodv]
jvuzbtly-nyhkl-qlssfilhu-klwhyatlua-695[lhuya]
nzydfxpc-rclop-nsznzwlep-xlylrpxpye-145[plnxy]
atyzghrk-xghhoz-rghuxgzuxe-748[ghxzr]
vhglnfxk-zktwx-ietlmbv-zktll-ftkdxmbgz-787[wbspa]
njmjubsz-hsbef-dipdpmbuf-vtfs-uftujoh-623[fubjs]
pyknyegle-aylbw-jmegqrgaq-756[egyal]
bgmxkgtmbhgte-lvtoxgzxk-angm-vhgmtbgfxgm-137[gmtxb]
ydjuhdqjyedqb-vbemuh-jusxdebewo-946[debju]
jxdkbqfz-zxkav-zlxqfkd-mrozexpfkd-263[kxzdf]
nbhofujd-dipdpmbuf-pqfsbujpot-597[pbdfu]
wrs-vhfuhw-fdqgb-vklsslqj-647[sfhlq]
vkrhzxgbv-vtgwr-ehzblmbvl-449[knuzb]
gsrwyqiv-kvehi-fyrrc-pefsvexsvc-750[versc]
hqcfqwydw-vbemuh-ixyffydw-270[fwydh]
vetllbybxw-vkrhzxgbv-lvtoxgzxk-angm-ybgtgvbgz-527[jxrwq]
bkzrrhehdc-eknvdq-cdrhfm-365[dhrce]
cybyjqho-whqtu-rkddo-qsgkyiyjyed-530[ydqhj]
ckgvutofkj-hatte-ynovvotm-332[tovka]
sawlkjevaz-zua-iwngapejc-758[jzwql]
mvhkvbdib-kgvnodx-bmvnn-gjbdnodxn-551[bmkyo]
enzcntvat-fpniratre-uhag-grpuabybtl-689[sqkoh]
bqvvu-acc-oanreyao-108[acovb]
tyepcyletzylw-nlyoj-nzletyr-nfdezxpc-dpcgtnp-275[yelnp]
fbebmtkr-zktwx-lvtoxgzxk-angm-kxlxtkva-839[kxtab]
ojk-nzxmzo-wvnfzo-vivgtndn-707[mlndw]
tpspahyf-nyhkl-qlssfilhu-klwsvftlua-487[iewds]
shoewudys-isqludwuh-xkdj-husuylydw-868[tlyhz]
qzoggwtwsr-qobrm-oqeiwgwhwcb-116[wgoqb]
zlkprjbo-doxab-yxphbq-pxibp-237[ocanz]
iruzfrtkzmv-avccpsvre-vexzevvizex-893[nyktl]
hqtyeqsjylu-hqrryj-tulubefcudj-894[ujqye]
zlkprjbo-doxab-fkqbokxqflkxi-mixpqfz-doxpp-xznrfpfqflk-523[fxkpo]
dpmpsgvm-sbccju-dvtupnfs-tfswjdf-129[neysa]
qcbgiasf-ufors-dzoghwq-ufogg-zopcfohcfm-246[yhmkz]
esyfwlau-ugjjgkanw-usfvq-kzahhafy-242[wnzhb]
mbiyqoxsm-lkcuod-nozkbdwoxd-432[odbkm]
usfvq-ugslafy-vwhdgqewfl-632[fglqs]
gokzyxsjon-zvkcdsm-qbkcc-oxqsxoobsxq-484[xrkfl]
hdgdovmt-bmvyz-wvnfzo-gjbdnodxn-395[bwicg]
sehheiylu-fhezusjybu-rkddo-udwyduuhydw-530[udhye]
glrcplyrgmlyj-aylbw-amyrgle-nspafyqgle-210[dmuny]
aflwjfslagfsd-jsttal-xafsfuafy-138[faslj]
yuxufmdk-sdmpq-iqmbazulqp-otaoaxmfq-pqbxakyqzf-586[qamfp]
jef-iushuj-sxesebqju-ixyffydw-270[iztnj]
zvyvgnel-tenqr-enzcntvat-ohaal-ratvarrevat-793[atven]
yuxufmdk-sdmpq-vqxxknqmz-ogefayqd-eqdhuoq-612[qdmux]
yhtwhnpun-kfl-ylhjxbpzpapvu-357[phlnu]
egdytrixat-qjccn-bpcpvtbtci-557[mtpgc]
wsvsdkbi-qbkno-mkxni-mykdsxq-ecob-docdsxq-120[dksbo]
xtwtelcj-rclop-ojp-dstaatyr-873[omnal]
wifilzof-jfumncw-alumm-xypyfijgyhn-318[evfso]
mvydjvxodqz-agjrzm-hvivbzhzio-655[vzdhi]
jsehsyafy-usfvq-ugslafy-jwuwanafy-840[afsyu]
myxcewob-qbkno-nio-bocokbmr-900[obckm]
ipvohghykvbz-wshzapj-nyhzz-vwlyhapvuz-539[hzvpy]
tbxmlkfwba-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-185[bkopz]
rdadguja-eaphixr-vgphh-itrwcdadvn-869[nfpxs]
lugjuacha-jfumncw-alumm-zchuhwcha-734[uachm]
jsehsyafy-jsttal-jwsuimakalagf-762[mnvlh]
zixppfcfba-yrkkv-absbilmjbkq-393[ihgyz]
bxaxipgn-vgpst-rdchjbtg-vgpst-rpcsn-rdpixcv-hpath-817[pgtch]
rtqlgevkng-ejqeqncvg-hkpcpekpi-154[xpgty]
laffe-hgyqkz-xkikobotm-488[kfoab]
jfifqxov-doxab-zxkav-zlxqfkd-qoxfkfkd-419[ubaro]
myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-952[boxce]
apuut-wvnfzo-rjmfncjk-447[fjnua]
lejkrscv-tfcfiwlc-avccpsvre-fgvirkzfej-113[cfver]
nglmtuex-cxeeruxtg-kxvxbobgz-215[xegbt]
sgmtkzoi-kmm-xkgiwaoyozout-748[qrkst]
amppmqgtc-djmucp-rcaflmjmew-912[bcvna]
xst-wigvix-fyrrc-wepiw-438[ygref]
dzczkrip-xiruv-jtrmvexvi-ylek-fgvirkzfej-295[irvek]
diozmivodjivg-xviyt-xjvodib-zibdizzmdib-265[zmrey]
rgndvtcxr-ytaanqtpc-stepgibtci-661[tcagi]
xgsvgmotm-hgyqkz-jkyomt-358[ajyhb]
zloolpfsb-yxphbq-ixyloxqlov-393[loxbp]
zilqwikbqdm-jiasmb-uizsmbqvo-668[ibmqs]
rtqlgevkng-rncuvke-itcuu-ucngu-206[ucgne]
dmybmsuzs-yuxufmdk-sdmpq-eomhqzsqd-tgzf-iadwetab-482[nkqyl]
vetllbybxw-ktuubm-hixktmbhgl-345[ikqop]
bwx-amkzmb-jcvvg-ikycqaqbqwv-954[symcn]
ubhatstkwhnl-ynssr-lvtoxgzxk-angm-kxlxtkva-163[ktxal]
zlilocri-yxphbq-pefmmfkd-471[filmp]
yflexwxoalrp-zlkprjbo-doxab-zxkav-zlxqfkd-qoxfkfkd-419[xkflo]
oxaflxzqfsb-zelzlixqb-xznrfpfqflk-393[flxzq]
ixccb-vfdyhqjhu-kxqw-ghyhorsphqw-101[pzgst]
pybgmyargtc-qaytclecp-fslr-sqcp-rcqrgle-860[crglp]
zbytomdsvo-mkxni-kmaescsdsyx-562[smdko]
hwbba-dwppa-ocpcigogpv-570[pabcg]
eza-dpncpe-nlyoj-nzletyr-wlmzclezcj-171[elzcn]
tbxmlkfwba-mixpqfz-doxpp-zlkqxfkjbkq-159[kxbfp]
vetllbybxw-yehpxk-ehzblmbvl-657[blehv]
zuv-ykixkz-jek-lotgtiotm-852[ktioz]
fnjyxwrinm-mhn-mnyjacvnwc-277[zgpnw]
odiih-ljwmh-lxjcrwp-mnenuxyvnwc-615[nwchi]
wfummczcyx-wuhxs-qilembij-838[mciuw]
sno-rdbqds-bgnbnkzsd-bnmszhmldms-859[sbdnm]
nvrgfezqvu-gcrjkzt-xirjj-ivjvrity-555[ylfxv]
encuukhkgf-uecxgpigt-jwpv-ujkrrkpi-622[kugpc]
lnkfaypeha-xqjju-qoan-paopejc-446[ajpen]
kmjezxodgz-ytz-gvwjmvojmt-109[jmzgo]
ygcrqpkbgf-hnqygt-octmgvkpi-128[gckpq]
jxdkbqfz-mixpqfz-doxpp-tlohpelm-107[pxdfl]
xjgjmapg-xviyt-xjvodib-adivixdib-759[ixdjv]
laffe-jek-sgtgmksktz-644[vuenb]
pbafhzre-tenqr-enoovg-ratvarrevat-975[ymshj]
lqwhuqdwlrqdo-vfdyhqjhu-kxqw-uhvhdufk-959[kzlvy]
rflsjynh-jll-zxjw-yjxynsl-697[jlyns]
wrs-vhfuhw-sodvwlf-judvv-ghvljq-361[vhwdf]
ynssr-unggr-tvjnblbmbhg-163[bgnrs]
jyfvnlupj-jvsvymbs-yhiipa-zopwwpun-903[nrdma]
kzeed-hfsid-uzwhmfxnsl-515[uoyvx]
ide-htrgti-uadltg-gtprfjxhxixdc-375[tdgix]
sorozgxe-mxgjk-hatte-vaxingyotm-358[fwxei]
ydjuhdqjyedqb-fbqijys-whqii-jusxdebewo-582[nuzsj]
yknnkoera-xwogap-paydjkhkcu-498[kanop]
nzydfxpc-rclop-upwwjmply-opdtry-691[pycdl]
dlhwvupglk-jhukf-jvhapun-zlycpjlz-409[lhjpu]
kwvacumz-ozilm-moo-bmkpvwtwog-694[mowkv]
kmjezxodgz-wpiit-mzxzdqdib-863[anvbu]
xlrypetn-nsznzwlep-xlylrpxpye-587[znfwt]
pybgmyargtc-qaytclecp-fslr-umpiqfmn-600[nzvej]
etyyx-qzaahs-lzqjdshmf-781[ahqsy]
ovbunmneqbhf-wryylorna-znantrzrag-221[pnazx]
gzefmnxq-bxmefuo-sdmee-ymzmsqyqzf-352[lgvpu]
ixeumktoi-jek-jkbkruvsktz-488[mzeun]
dzczkrip-xiruv-avccpsvre-glityrjzex-321[eflmp]
wfruflnsl-hfsid-fhvznxnynts-307[fnshl]
vkppo-rkddo-iqbui-218[dikop]
muqfedyput-zubboruqd-mehaixef-452[inbaj]
ftzgxmbv-cxeeruxtg-nlxk-mxlmbgz-683[xgmbe]
htsxzrjw-lwfij-uqfxynh-lwfxx-hzxytrjw-xjwanhj-827[xjwhf]
qekrixmg-wgezirkiv-lyrx-tyvglewmrk-282[regik]
ktiaaqnqml-jiasmb-apqxxqvo-226[asvyf]
lejkrscv-irdgrxzex-srjbvk-kvtyefcfxp-165[rekvx]
hvbizodx-nxvqzibzm-cpio-hvmfzodib-291[izbov]
ltpedcxots-tvv-rjhidbtg-htgkxrt-297[tdghr]
dlhwvupglk-mbggf-jovjvshal-zlycpjlz-565[lgjvh]
xfbqpojafe-tdbwfohfs-ivou-sfbdrvjtjujpo-779[fjobd]
kmjezxodgz-xviyt-gvwjmvojmt-577[flhas]
jshzzpmplk-jhukf-jvhapun-vwlyhapvuz-669[hpjuv]
tfejldvi-xiruv-gcrjkzt-xirjj-drerxvdvek-295[dpsef]
zotts-yaa-lymyulwb-968[skymd]
rmn-qcapcr-zyqicr-umpiqfmn-704[cmqri]
xfbqpojafe-cbtlfu-qvsdibtjoh-727[bfjoq]
ykhknbqh-nwxxep-oanreyao-732[naehk]
raphhxuxts-hrpktcvtg-wjci-hidgpvt-921[hmzng]
yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-hizipstqirx-932[mdsza]
xjgjmapg-xviyt-vivgtndn-603[utnks]
cxy-bnlanc-mhn-vjwjpnvnwc-745[mtsvn]
ujoon-gpbepvxcv-eaphixr-vgphh-uxcpcrxcv-687[pcvxh]
ykjoqian-cnwza-iwcjapey-lhwopey-cnwoo-opknwca-264[owacn]
lnkfaypeha-oywrajcan-dqjp-zalwnpiajp-108[apjnl]
ktwbhtvmbox-yehpxk-mktbgbgz-293[cndif]
hqcfqwydw-cqwdujys-rqiauj-qsgkyiyjyed-738[qydjw]
amlqskcp-epybc-zyqicr-kylyeckclr-600[sdrzj]
bnmrtldq-fqzcd-rbzudmfdq-gtms-zbpthrhshnm-443[dmbhq]
nwlddtqtpo-nlyoj-nzletyr-epnsyzwzrj-379[tyrzv]
cvabijtm-kpwkwtibm-lmxtwgumvb-980[mbtwi]
amlqskcp-epybc-afmamjyrc-jyzmpyrmpw-574[mpyac]
aflwjfslagfsd-vqw-dstgjslgjq-424[sfgjl]
willimcpy-zfiqyl-xymcah-110[ilycm]
kpvgtpcvkqpcn-lgnnadgcp-ujkrrkpi-128[knmqz]
wyvqljapsl-buzahisl-ibuuf-lunpullypun-409[wyhza]
amlqskcp-epybc-pyzzgr-pcacgtgle-210[cpgae]
xtwtelcj-rclop-mldvpe-dstaatyr-821[nkabu]
pdjqhwlf-gbh-sxufkdvlqj-751[cdmbz]
wkqxodsm-zvkcdsm-qbkcc-ecob-docdsxq-432[cdkoq]
xjmmjndqz-wpiit-gjbdnodxn-811[djnim]
zlkprjbo-doxab-zelzlixqb-absbilmjbkq-939[blzai]
htqtwkzq-xhfajsljw-mzsy-ywfnsnsl-619[lfsnu]
zhdsrqlchg-mhoobehdq-xvhu-whvwlqj-361[hqdlo]
tcfkqcevkxg-tcorcikpi-ejqeqncvg-uvqtcig-544[lsyzm]
kwtwznct-kivlg-zmamizkp-824[ixjen]
bkzrrhehdc-qzaahs-rghoohmf-287[hraoz]
lxuxaodu-mhn-cajrwrwp-303[aruwx]
tcorcikpi-dcumgv-octmgvkpi-700[vygzd]
crwwv-zlkprjbo-doxab-yxphbq-bkdfkbbofkd-809[bkdof]
xgvnndadzy-xcjxjgvoz-ncdkkdib-447[dnxcg]
elrkdcdugrxv-fkrfrodwh-xvhu-whvwlqj-179[eubfs]
odkasqzuo-rxaiqd-eqdhuoqe-430[nlyts]
vhglnfxk-zktwx-xzz-xgzbgxxkbgz-917[xzgkb]
jyfvnlupj-wyvqljapsl-jovjvshal-zlycpjlz-357[jlvpy]
gpbepvxcv-eaphixr-vgphh-gtrtxkxcv-687[pvxgh]
jrncbavmrq-zntargvp-qlr-qrirybczrag-741[dnzpg]
hqfxxnknji-hfsid-knsfshnsl-307[wtfhe]
aietsrmdih-nippcfier-stivexmsrw-750[iersm]
glrcplyrgmlyj-pyzzgr-pcqcypaf-912[nkoyv]
ugfkmewj-yjsvw-hdsklau-yjskk-sfsdqkak-216[ksjad]
mhi-lxvkxm-vtgwr-kxtvjnblbmbhg-917[bmvxg]
tipfxvezt-irsszk-kvtyefcfxp-451[fteik]
jxdkbqfz-mixpqfz-doxpp-qoxfkfkd-939[fxdkp]
dsxxw-pyzzgr-qrmpyec-288[prxyz]
ejpanjwpekjwh-fahhuxawj-ajcejaanejc-394[jaehw]
pinovwgz-xgvnndadzy-xviyt-vxlpdndodji-109[dnvix]
szfyrqriuflj-upv-rercpjzj-243[jprqg]
dmbttjgjfe-gmpxfs-efqbsunfou-701[fbegj]
sgmtkzoi-inuiurgzk-ykxboiky-436[qlcfs]
slqryzjc-djmucp-ylyjwqgq-158[jqycl]
aflwjfslagfsd-vqw-hmjuzskafy-398[fasjl]
slqryzjc-djmucp-pcacgtgle-886[cgjlp]
qjopwxha-ywjzu-ajcejaanejc-420[zoehr]
amjmpdsj-njyqrga-epyqq-kylyeckclr-756[yksln]
zlkprjbo-doxab-zxkav-zlxqfkd-abpfdk-445[kabdx]
lhkhszqx-fqzcd-bgnbnkzsd-nodqzshnmr-989[nzdhq]
dlhwvupglk-ibuuf-klwhyatlua-591[dzktb]
dpotvnfs-hsbef-cbtlfu-ufdiopmphz-623[homsd]
ajvyjprwp-npp-mnbrpw-875[pjnrw]
lxwbdvna-pajmn-snuuhknjw-mnyuxhvnwc-251[nuwah]
vetllbybxw-lvtoxgzxk-angm-xgzbgxxkbgz-865[mknli]
aflwjfslagfsd-jsehsyafy-usfvq-vwkayf-268[fsayj]
xjgjmapg-agjrzm-gvwjmvojmt-291[jgmav]
plolwdub-judgh-iorzhu-dqdobvlv-465[dloub]
htqtwkzq-wfggny-fsfqdxnx-645[wsznf]
fkqbokxqflkxi-zxkav-zlxqfkd-jxohbqfkd-341[kxfqb]
oxjmxdfkd-avb-tlohpelm-653[dlmox]
xtwtelcj-rclop-nsznzwlep-epnsyzwzrj-873[zelnp]
rtqlgevkng-gii-ceswkukvkqp-466[kgeiq]
molgbzqfib-yrkkv-ixyloxqlov-237[lobik]
zbytomdsvo-mrymyvkdo-nocsqx-848[pahef]
szfyrqriuflj-treup-tfrkzex-ivtvzmzex-867[xejut]
upq-tfdsfu-kfmmzcfbo-mphjtujdt-909[fmtud]
ykhknbqh-lhwopey-cnwoo-bejwjyejc-342[hwxgn]
qfkkj-nsznzwlep-nzyeltyxpye-327[vkmwy]
excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[cvoiz]
dszphfojd-dboez-dpbujoh-xpsltipq-623[zbxem]
udpsdjlqj-iorzhu-ghsorbphqw-517[hdjop]
xcitgcpixdcpa-ide-htrgti-gpqqxi-gthtpgrw-609[gitpc]
cybyjqho-whqtu-uww-tuiywd-348[styfx]
yuxufmdk-sdmpq-nmewqf-oazfmuzyqzf-924[hfsly]
tfejldvi-xiruv-avccpsvre-crsfirkfip-997[rxygp]
wsvsdkbi-qbkno-oqq-wkxkqowoxd-822[koqwb]
qcbgiasf-ufors-tzcksf-sbuwbssfwbu-610[ivjsc]
vkrhzxgbv-wrx-lmhktzx-839[xhkrv]
xmrrq-bwddqtwsf-vwnwdghewfl-242[fpmoq]
kmjezxodgz-nxvqzibzm-cpio-gjbdnodxn-577[isocd]
iutyaskx-mxgjk-kmm-jkyomt-436[kmjtx]
ide-htrgti-snt-rjhidbtg-htgkxrt-531[tghir]
vkppo-uww-bqrehqjeho-764[xmntl]
bdavqofuxq-pkq-ymzmsqyqzf-196[qfmyz]
diozmivodjivg-hvbizodx-zbb-ozxcijgjbt-915[zueag]
cybyjqho-whqtu-hqrryj-bqrehqjeho-374[hqjry]
vcibutulxiom-vohhs-lywycpcha-630[owyks]
chnylhuncihuf-wuhxs-fiacmncwm-786[chnuf]
xekdwvwnzkqo-ywjzu-ykwpejc-wymqeoepekj-264[dmbln]
etyyx-cxd-vnqjrgno-391[hntfq]
pwcvonofrcig-dfcxsqhwzs-qobrm-qighcasf-gsfjwqs-194[scfqg]
xgvnndadzy-ezggtwzvi-nojmvbz-837[vnsth]
dszphfojd-qmbtujd-hsbtt-usbjojoh-467[rskch]
npmhcargjc-aylbw-amyrgle-yaosgqgrgml-886[galmr]
qczcftiz-gqojsbusf-vibh-twbobqwbu-350[bnsiu]
kwvacumz-ozilm-kzgwomvqk-xtiabqk-oziaa-twoqabqka-980[akoqz]
dsxxw-zyqicr-cleglccpgle-418[clegx]
jrncbavmrq-cynfgvp-tenff-ynobengbel-611[nbefc]
hqtyeqsjylu-fbqijys-whqii-tuiywd-322[mitks]
rnqnyfwd-lwfij-wfggny-xmnuunsl-697[tseia]
fhezusjybu-rqiauj-udwyduuhydw-868[ngyzs]
pkl-oaynap-ywjzu-ykwpejc-opknwca-628[pakwy]
nuatmlmdpage-vqxxknqmz-geqd-fqefuzs-508[romxa]
awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-948[obchm]
dfcxsqhwzs-rms-fsgsofqv-766[sfqcd]
wlqqp-tyftfcrkv-rercpjzj-711[rcfjp]
clotzlnetgp-awldetn-rcldd-nzyeltyxpye-743[letdn]
lgh-kwujwl-hdsklau-yjskk-vwhsjlewfl-788[lkwhj]
uqtqbizg-ozilm-kivlg-kwibqvo-uizsmbqvo-512[iqbov]
vetllbybxw-lvtoxgzxk-angm-kxlxtkva-683[xlktv]
qyujihctyx-mwupyhayl-bohn-uwkocmcncih-760[chyui]
crwwv-zxkav-obzbfsfkd-237[bfkvw]
qczcftiz-pogysh-igsf-hsghwbu-610[tnjwm]
udpsdjlqj-gbh-hqjlqhhulqj-725[hjqld]
yuxufmdk-sdmpq-nmewqf-emxqe-326[meqdf]
molgbzqfib-ciltbo-ildfpqfzp-653[bfilo]
uwtojhynqj-gfxpjy-ywfnsnsl-151[jnyfs]
qvbmzvibqwvit-jiasmb-camz-bmabqvo-330[bmvai]
xmtjbzidx-xviyt-xjvodib-xpnojhzm-nzmqdxz-603[torgb]
ykjoqian-cnwza-fahhuxawj-qoan-paopejc-628[ajnoc]
gvcskirmg-veffmx-irkmriivmrk-906[imrkv]
njmjubsz-hsbef-dboez-dpbujoh-bdrvjtjujpo-649[astyb]
ovbunmneqbhf-pnaql-pbngvat-jbexfubc-845[yzqwm]
joufsobujpobm-kfmmzcfbo-usbjojoh-571[mkpnw]
lzfmdshb-cxd-lzmzfdldms-287[dlmzf]
froruixo-mhoobehdq-pdunhwlqj-439[ohdqr]
xcitgcpixdcpa-rpcsn-rdpixcv-bpcpvtbtci-193[cpitx]
dfcxsqhwzs-ksodcbwnsr-xszzmpsob-rsgwub-168[sbwzc]
iuruxlar-lruckx-sgtgmksktz-436[krugl]
nbhofujd-dboez-fohjoffsjoh-467[ofhjb]
pejji-tovvilokx-nozvyiwoxd-276[bzkve]
bxaxipgn-vgpst-rpcsn-rdpixcv-rjhidbtg-htgkxrt-583[upjyv]
bkzrrhehdc-bzmcx-bnzshmf-lzqjdshmf-443[hzbmc]
dpssptjwf-gmpxfs-mphjtujdt-571[pjstd]
pdjqhwlf-sodvwlf-judvv-orjlvwlfv-829[tuszv]
mfklstdw-tmffq-wfyafwwjafy-918[wmvan]
joufsobujpobm-ezf-gjobodjoh-779[xwadm]
hafgnoyr-gbc-frperg-rtt-grpuabybtl-481[jcgnd]
joufsobujpobm-fhh-tijqqjoh-233[johbf]
zuv-ykixkz-vrgyzoi-mxgyy-yzuxgmk-150[yzgkx]
ibghopzs-qvcqczohs-qighcasf-gsfjwqs-948[ubrmn]
qfmcusbwq-pwcvonofrcig-foppwh-fsgsofqv-584[focpq]
aczupnetwp-awldetn-rcldd-qtylyntyr-119[tdlny]
dpssptjwf-ezf-sfdfjwjoh-909[znfwy]
qxdwpopgsdjh-ytaanqtpc-pcpanhxh-297[pahcd]
ucynmlgxcb-aylbw-rpyglgle-626[lgybc]
oqnidbshkd-okzrshb-fqzrr-rdquhbdr-573[rdbhq]
frqvxphu-judgh-fdqgb-vhuylfhv-647[hfuvd]
vhehkyne-cxeeruxtg-hixktmbhgl-319[ehxgk]
gsrwyqiv-kvehi-gerhc-gsexmrk-vigimzmrk-412[girek]
ajmrxjlcren-yujbcrl-pajbb-bnaerlnb-719[lvzpq]
zixppfcfba-bdd-bkdfkbbofkd-393[hnmcz]
aflwjfslagfsd-hdsklau-yjskk-ugflsafewfl-918[flsak]
xtwtelcj-rclop-upwwjmply-nzyeltyxpye-847[lpyet]
oaddaeuhq-qss-dqmocgueufuaz-924[qzwti]
tvsnigxmpi-wgezirkiv-lyrx-hitpscqirx-568[irxgp]
ksodcbwnsr-qczcftiz-gqojsbusf-vibh-igsf-hsghwbu-272[sbcfg]
sgmtkzoi-jek-gtgreyoy-410[tqkns]
rzvkjiduzy-kgvnodx-bmvnn-omvdidib-109[fpsxk]
diozmivodjivg-rzvkjiduzy-zbb-adivixdib-447[nayqm]
froruixo-vfdyhqjhu-kxqw-rshudwlrqv-517[rhqud]
dmpuamofuhq-dmnnuf-ymzmsqyqzf-222[mwnak]
mybbycsfo-zvkcdsm-qbkcc-wkbuodsxq-380[bcksd]
tcrjjzwzvu-wcfnvi-vexzevvizex-633[vzeci]
qzoggwtwsr-gqojsbusf-vibh-hsqvbczcum-870[sbgqc]
enzcntvat-cynfgvp-tenff-phfgbzre-freivpr-845[xnfot]
gsvvswmzi-gerhc-gsexmrk-stivexmsrw-984[segmr]
fhezusjybu-vbemuh-iqbui-244[iektm]
oqnidbshkd-idkkxadzm-qdzbpthrhshnm-469[gekyh]
pybgmyargtc-cee-nspafyqgle-574[egyac]
jyddc-gerhc-gsexmrk-vigimzmrk-672[gmrcd]
tipfxvezt-gcrjkzt-xirjj-rercpjzj-399[ldquc]
bdavqofuxq-bxmefuo-sdmee-dqeqmdot-768[hwmck]
fbebmtkr-zktwx-vtgwr-hixktmbhgl-475[tbkgh]
irgyyolokj-igtje-iugzotm-rumoyzoiy-202[mpijw]
fbebmtkr-zktwx-xzz-kxlxtkva-865[yicwo]
tyepcyletzylw-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-145[badwi]
vrurcjah-pajmn-ljwmh-anbnjalq-849[ajnhl]
rtqlgevkng-ecpfa-fgukip-700[gefkp]
pdjqhwlf-froruixo-udeelw-wudlqlqj-907[kymab]
tinnm-xszzmpsob-qcbhowbasbh-688[nhcdm]
nij-mywlyn-wuhxs-lywycpcha-318[ywchl]
fnjyxwrinm-ouxfna-ldbcxvna-bnaerln-979[naxbf]
ajvyjprwp-bljenwpna-qdwc-anjlzdrbrcrxw-823[jrwan]
diozmivodjivg-wpiit-mzxzdqdib-551[kmhon]
nij-mywlyn-dyffsvyuh-xyjfisgyhn-656[yfnhi]
fhezusjybu-zubboruqd-vydqdsydw-504[dubyq]
ubhatstkwhnl-lvtoxgzxk-angm-kxvxbobgz-579[xbgkt]
xcitgcpixdcpa-rwdrdapit-htgkxrth-557[zastp]
wfintfhynaj-jll-hzxytrjw-xjwanhj-281[jhnwa]
irgyyolokj-vrgyzoi-mxgyy-rumoyzoiy-800[sptbo]
jvyyvzpcl-yhkpvhjapcl-ibuuf-aljouvsvnf-227[vjlpu]
iruzfrtkzmv-treup-kirzezex-841[rzeik]
cxy-bnlanc-ljwmh-ujkxajcxah-979[waqkz]
qzoggwtwsr-foppwh-difqvogwbu-948[wgofp]
qyujihctyx-dyffsvyuh-zchuhwcha-552[hycuf]
yknnkoera-lhwopey-cnwoo-pnwejejc-992[enowc]
zovldbkfz-zxkav-zlxqfkd-xkxivpfp-289[vtcos]
mrxivrexmsrep-glsgspexi-erepcwmw-750[btrnl]
udskkaxawv-kusnwfywj-zmfl-dgyaklauk-866[xeozd]
esyfwlau-tmffq-vwnwdghewfl-632[czoml]
hjgbwuladw-kusnwfywj-zmfl-esfsywewfl-294[xwfie]
hwbba-rncuvke-itcuu-ocpcigogpv-232[cubgi]
vhkkhlbox-vtgwr-xgzbgxxkbgz-631[typnq]
nvrgfezqvu-szfyrqriuflj-vxx-jkfirxv-139[krijl]
iuruxlar-zuv-ykixkz-lruckx-xkykgxin-826[kxuir]
yhwooebeaz-ywjzu-yqopkian-oanreya-966[ynwkb]
iuxxuyobk-pkrrehkgt-xkgiwaoyozout-176[sjwtp]
glrcplyrgmlyj-djmucp-qrmpyec-236[clmpr]
pejji-tovvilokx-bocokbmr-588[obijk]
hplazytkpo-upwwjmply-dpcgtnpd-119[pdltw]
nij-mywlyn-xsy-jolwbumcha-136[yjlmn]
pynffvsvrq-ohaal-fgbentr-923[fanrv]
lgh-kwujwl-kusnwfywj-zmfl-kwjnauwk-736[wkjlu]
dszphfojd-sbccju-mbcpsbupsz-727[sbcpd]
ixeumktoi-lruckx-zkinturume-800[ktsyl]
fmsledevhsyw-tvsnigxmpi-veffmx-viwievgl-412[veifm]
mrxivrexmsrep-fyrrc-qevoixmrk-880[wtmdx]
qmpmxevc-kvehi-wgezirkiv-lyrx-wlmttmrk-620[zyxjd]
zixppfcfba-oxyyfq-qbzeklildv-289[fbilp]
nwlddtqtpo-dnlgpyrpc-sfye-wlmzclezcj-431[jefsy]
tinnm-foppwh-oqeiwgwhwcb-688[fzyjx]
plolwdub-judgh-fdqgb-ghyhorsphqw-413[hystk]
bwx-amkzmb-zijjqb-bmkpvwtwog-460[bmwjk]
qcbgiasf-ufors-pibbm-ghcfous-896[bfscg]
ktwbhtvmbox-vetllbybxw-cxeeruxtg-tgterlbl-215[tmybs]
lqwhuqdwlrqdo-mhoobehdq-vwrudjh-387[dhqow]
lgh-kwujwl-tskcwl-vwhdgqewfl-684[afnbs]
yuxufmdk-sdmpq-rxaiqd-efadmsq-976[mczye]
ftzgxmbv-unggr-kxlxtkva-917[ezfmx]
rmn-qcapcr-aylbw-amyrgle-ylyjwqgq-158[prcqj]
fhezusjybu-rqiauj-husuylydw-582[uyhjs]
apuut-xviyt-xjvodib-yzkvmohzio-525[yomvc]
mybbycsfo-dyz-combod-zvkcdsm-qbkcc-oxqsxoobsxq-848[obcsd]
yhwooebeaz-lhwopey-cnwoo-zalhkuiajp-706[oaehw]
bqxnfdmhb-bzmcx-trdq-sdrshmf-469[zdyht]
dmpuamofuhq-vqxxknqmz-pqbmdfyqzf-924[qmfdp]
kmjezxodgz-ytz-mzvxlpdndodji-889[gefcn]
apuut-xviyt-xjvodib-mznzvmxc-369[vximt]
fodvvlilhg-surmhfwloh-hjj-hqjlqhhulqj-647[hljqf]
tipfxvezt-srjbvk-tljkfdvi-jvimztv-269[vtijf]
ikhcxvmbex-xzz-labiibgz-423[qnzsg]
qzchnzbshud-azrjds-lzmzfdldms-885[xubgy]
eadalsjq-yjsvw-vqw-esjcwlafy-398[ajswe]
oxmeeuruqp-bxmefuo-sdmee-etubbuzs-898[stupo]
frqvxphu-judgh-xqvwdeoh-fdqgb-frdwlqj-zrunvkrs-257[dqrfh]
ltpedcxots-gpbepvxcv-qphzti-igpxcxcv-349[jzdyi]
vhkkhlbox-vtgwr-phkdlahi-969[tmszy]
cvabijtm-jcvvg-lmdmtwxumvb-226[nvfca]
sedikcuh-whqtu-sqdto-qsgkyiyjyed-790[dqsye]
gzefmnxq-bdavqofuxq-rxaiqd-ymzmsqyqzf-690[zklij]
zntargvp-cynfgvp-tenff-qrcyblzrag-351[sqzyh]
xfbqpojafe-dboez-xpsltipq-857[ehgum]
uqtqbizg-ozilm-jcvvg-lmaqov-980[xzwsi]
xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-161[zgjmx]
muqfedyput-vbemuh-fkhsxqiydw-920[udefh]
kzeed-gfxpjy-ywfnsnsl-489[xeoyn]
pynffvsvrq-onfxrg-ynobengbel-741[nfbeg]
froruixo-iorzhu-rshudwlrqv-647[rouhi]
amjmpdsj-qaytclecp-fslr-qyjcq-938[cjqal]
otzkxtgzoutgr-jek-iayzuskx-ykxboik-826[kotxz]
tpspahyf-nyhkl-jhukf-zavyhnl-279[hyafk]
pualyuhapvuhs-ihzrla-ylhjxbpzpapvu-929[lbncu]
odiih-ajkkrc-mnbrpw-355[ikrab]
votubcmf-gmpxfs-bdrvjtjujpo-363[jbfmo]
zgmfyxypbmsq-rmn-qcapcr-bwc-pcacgtgle-704[ztspm]
uqtqbizg-ozilm-nchhg-jiasmb-ivitgaqa-382[snpaf]
willimcpy-jfumncw-alumm-lyuwkocmcncih-734[cmliu]
ibghopzs-qvcqczohs-hsqvbczcum-506[chqsz]
ugjjgkanw-tmffq-vwkayf-216[lfrby]
pynffvsvrq-pnaql-erprvivat-507[vpraf]
aczupnetwp-nlyoj-nzletyr-pyrtyppctyr-197[pytnr]
vkppo-sqdto-seqjydw-bewyijysi-686[sydei]
dpotvnfs-hsbef-ezf-qvsdibtjoh-337[fsbde]
wlqqp-avccpsvre-ivtvzmzex-425[vcepq]
jfifqxov-doxab-gbiivybxk-jxohbqfkd-549[skgzo]
rgndvtcxr-jchipqat-rpcsn-igpxcxcv-713[cprxg]
ykhknbqh-xqjju-wymqeoepekj-576[ejkqh]
pejji-mrymyvkdo-domrxyvyqi-536[ymdij]
wihmogyl-aluxy-xsy-womnigyl-mylpcwy-786[ylmwg]
jlidywncfy-zfiqyl-mbcjjcha-162[cjyfi]
pynffvsvrq-sybjre-grpuabybtl-455[byavk]
uqtqbizg-ozilm-uiovmbqk-akidmvomz-pcvb-bziqvqvo-694[xywnk]
lxaaxbren-ouxfna-ydalqjbrwp-225[mibtg]
joufsobujpobm-kfmmzcfbo-dvtupnfs-tfswjdf-675[ijokq]
crwwv-gbiivybxk-pqloxdb-913[rtmzn]
pkl-oaynap-nwxxep-bejwjyejc-576[jfmel]
wfummczcyx-gcfcnuls-aluxy-wuhxs-wihnuchgyhn-786[giqsn]
htsxzrjw-lwfij-ojqqdgjfs-ijajqturjsy-229[tjxbs]
qczcftiz-foppwh-rsgwub-246[exnyt]
lnkfaypeha-xwogap-naoawnyd-342[zynls]
thnulapj-zjhclunly-obua-thuhnltlua-201[luhan]
vkppo-fbqijys-whqii-bqrehqjeho-504[lkosn]
eqpuwogt-itcfg-ecpfa-qrgtcvkqpu-622[cgpqt]
odkasqzuo-oazegyqd-sdmpq-otaoaxmfq-efadmsq-222[aoqdm]
ide-htrgti-bxaxipgn-vgpst-qjccn-pcpanhxh-453[pcghi]
luxciuwncpy-jfumncw-alumm-xyjulngyhn-552[unclm]
plolwdub-judgh-hjj-zrunvkrs-777[yfulq]
pejji-lexxi-oxqsxoobsxq-458[xoeij]
uzfqdzmfuazmx-pkq-fdmuzuzs-170[npsqv]
bknsykmdsfo-zvkcdsm-qbkcc-cdybkqo-614[fastx]
qfkkj-upwwjmply-qtylyntyr-873[yjklp]
hqcfqwydw-zubboruqd-ijehqwu-218[djvhz]
kmjezxodgz-pinovwgz-zbb-ncdkkdib-473[vimty]
bknsykmdsfo-myvybpev-mkxni-mykdsxq-bocokbmr-562[sdwfr]
eqttqukxg-gii-hkpcpekpi-960[yljdr]
drxevkzt-wcfnvi-cfxzjkztj-607[twoxz]
vkppo-rkddo-ijehqwu-504[dkope]
rgllk-rxaiqd-dqmocgueufuaz-456[mxkzr]
ktiaaqnqml-moo-xczkpiaqvo-122[aoqik]
amjmpdsj-njyqrga-epyqq-pcqcypaf-600[pqajy]
rwcnawjcrxwju-npp-ujkxajcxah-199[jacwx]
fmsledevhsyw-gspsvjyp-gerhc-gsexmrk-ywiv-xiwxmrk-412[segmr]
ajmrxjlcren-kdwwh-anbnjalq-745[myzet]
aoubshwq-tinnm-suu-fsoqeiwgwhwcb-480[wsubh]
rdggdhxkt-rpcsn-hpath-531[tsamh]
pbafhzre-tenqr-pnaql-pbngvat-nanylfvf-715[upmid]
zbytomdsvo-cmkfoxqob-rexd-gybucryz-562[obycd]
bkwzkqsxq-mkxni-ecob-docdsxq-978[ksmtq]
oknkvcta-itcfg-ecpfa-ncdqtcvqta-414[lcwjp]
fydelmwp-clmmte-cpnptgtyr-405[jlgak]
tcorcikpi-ecpfa-gpikpggtkpi-804[picgk]
xtwtelcj-rclop-upwwjmply-hzcvdsza-327[clpwj]
tcfkqcevkxg-ecpfa-eqcvkpi-ncdqtcvqta-752[cqekt]
etaqigpke-tcddkv-uvqtcig-440[tcdeg]
raphhxuxts-qxdwpopgsdjh-rpcsn-rdpixcv-sthxvc-843[tvexn]
atyzghrk-xghhoz-ktmotkkxotm-748[kthog]
fmsledevhsyw-nippcfier-asvowlst-412[zksal]
oaxadrgx-eomhqzsqd-tgzf-eqdhuoqe-846[zfylm]
qcbgiasf-ufors-dzoghwq-ufogg-qcbhowbasbh-194[bgofh]
qvbmzvibqwvit-bwx-amkzmb-jiasmb-xczkpiaqvo-122[bimva]
qfkkj-prr-hzcvdsza-639[dqmts]
jvyyvzpcl-ibuuf-bzly-alzapun-981[mnakf]
dsxxw-cee-pcacgtgle-626[odsgr]
buzahisl-zjhclunly-obua-zlycpjlz-617[rsglh]
gpewwmjmih-tpewxmg-kveww-jmrergmrk-594[mwegr]
aietsrmdih-hci-stivexmsrw-516[hsvof]
ujoon-ytaanqtpc-stepgibtci-219[tacin]
kpvgtpcvkqpcn-fag-ceswkukvkqp-830[cijob]
etaqigpke-uecxgpigt-jwpv-ocpcigogpv-154[gpcei]
eqnqthwn-tcddkv-rwtejcukpi-674[tcdek]
mhi-lxvkxm-ktuubm-nlxk-mxlmbgz-241[mxklb]
avw-zljyla-wshzapj-nyhzz-ylzlhyjo-149[plqkx]
xekdwvwnzkqo-nwxxep-odellejc-862[xyzwn]
pkl-oaynap-bhksan-qoan-paopejc-498[ojduv]
xjinphzm-bmvyz-xjgjmapg-ezggtwzvi-zibdizzmdib-499[zigmb]
bdavqofuxq-rxaiqd-bgdotmeuzs-508[clbmv]
xzwrmkbqtm-jcvvg-ewzsapwx-902[wmvxz]
dmybmsuzs-rxaiqd-xmnadmfadk-846[dmasx]
surmhfwloh-exqqb-vwrudjh-127[hqruw]
gntmfefwitzx-ojqqdgjfs-xytwflj-827[xgtuv]
tbxmlkfwba-zxkav-zlxqfkd-ildfpqfzp-965[jncig]
sbnqbhjoh-tdbwfohfs-ivou-qvsdibtjoh-597[rftxz]
hqcfqwydw-fbqijys-whqii-iqbui-322[iqwbf]
forwcoqhwjs-xszzmpsob-gvwddwbu-324[ftyzu]
zlilocri-oxjmxdfkd-ciltbo-pbosfzbp-991[gjars]
kwzzwaqdm-rmttgjmiv-uizsmbqvo-434[mziqt]
willimcpy-gcfcnuls-aluxy-mwupyhayl-bohn-yhachyylcha-162[kcimx]
uqtqbizg-ozilm-kivlg-uizsmbqvo-954[pifvj]
ugdgjxmd-tskcwl-wfyafwwjafy-762[wfadg]
ajyqqgdgcb-bwc-qyjcq-262[qcbgj]
yknnkoera-oywrajcan-dqjp-wjwhuoeo-602[oajnw]
bqxnfdmhb-qzaahs-rzkdr-963[abdhq]
dwbcjkun-mhn-jwjuhbrb-693[niusd]
wlqqp-wcfnvi-crsfirkfip-373[nrtqs]
guahyncw-wbiwifuny-xymcah-240[wyach]
qfkkj-prr-opgpwzaxpye-613[pkrae]
cqwdujys-tou-tufbeocudj-322[ucdjo]
wfruflnsl-wfggny-ijuqtdrjsy-931[wjznm]
bnqqnrhud-okzrshb-fqzrr-cdrhfm-105[rhqbd]
yhtwhnpun-tpspahyf-nyhkl-jovjvshal-zlycpjlz-487[hlpyj]
iutyaskx-mxgjk-hatte-lotgtiotm-176[shzku]
gntmfefwitzx-kqtbjw-xfqjx-645[nmfsa]
jvsvymbs-jhukf-jbzavtly-zlycpjl-695[frnkz]
dlhwvupglk-zjhclunly-obua-jvuahputlua-825[ulahj]
wyvqljapsl-jhukf-jvhapun-ylzlhyjo-487[jlhya]
ghkmaihex-hucxvm-lmhktzx-267[hmxka]
irgyyolokj-vrgyzoi-mxgyy-xkikobotm-670[ryfvl]
kwzzwaqdm-zijjqb-amzdqkma-564[qzdtv]
rflsjynh-idj-xytwflj-541[jflyd]
emixwvqhml-ntwemz-zmkmqdqvo-200[zmbdq]
kzgwomvqk-rmttgjmiv-abwziom-330[mtnsk]
xjgjmapg-wpiit-vivgtndn-499[weiza]
cebwrpgvyr-pnaql-grpuabybtl-117[xqmjc]
egdytrixat-uadltg-uxcpcrxcv-297[ctxad]
gvaaz-ezf-tfswjdft-623[fatzd]
excdklvo-mkxni-mykdsxq-mecdywob-cobfsmo-692[mocdk]
ovbunmneqbhf-pnaql-bcrengvbaf-351[mtgcw]
nwlddtqtpo-clmmte-nzyeltyxpye-509[ydnsh]
froruixo-udeelw-vwrudjh-309[sxgvu]
hqcfqwydw-sxesebqju-cqhaujydw-660[fghtp]
bpvctixr-rwdrdapit-ldgzhwde-895[sfioq]
ajmrxjlcren-yaxsnlcrun-bljenwpna-qdwc-fxatbqxy-797[fnjis]
lugjuacha-zfiqyl-uhufsmcm-370[uacfh]
houngfgxjuay-pkrrehkgt-iayzuskx-ykxboik-852[kguxy]
gcfcnuls-aluxy-luxciuwncpy-jfumncw-alumm-uhufsmcm-214[zftvs]
oxmeeuruqp-otaoaxmfq-emxqe-794[drzyv]
nvrgfezqvu-upv-tfekrzedvek-867[evfkr]
uwtojhynqj-xhfajsljw-mzsy-zxjw-yjxynsl-801[jyswx]
zixppfcfba-yxphbq-jxohbqfkd-887[zgoyn]
qczcftiz-qvcqczohs-aobousasbh-402[coqsz]
lejkrscv-upv-tfekrzedvek-919[ekvrc]
chnylhuncihuf-zfiqyl-zchuhwcha-604[magtu]
vetllbybxw-lvtoxgzxk-angm-ybgtgvbgz-605[gbltv]
dmpuamofuhq-omzpk-qzsuzqqduzs-820[quzmd]
rdggdhxkt-gpqqxi-rdcipxcbtci-219[yrlha]
tfejldvi-xiruv-wcfnvi-jvimztvj-243[fqclr]
foadouwbu-dzoghwq-ufogg-gvwddwbu-324[dgouw]
tbxmlkfwba-pzxsbkdbo-erkq-bkdfkbbofkd-913[hgans]
gpbepvxcv-rpcsn-itrwcdadvn-453[sbuap]
szfyrqriuflj-srjbvk-ivrthlzjzkzfe-633[sqwil]
jqwpihizlwca-jiasmb-ivitgaqa-122[amzud]
bqvvu-ywjzu-qoan-paopejc-264[ajopq]
mvydjvxodqz-wpiit-gvwjmvojmt-525[oabkn]
ktiaaqnqml-moo-zmikycqaqbqwv-252[qamik]
dpmpsgvm-cbtlfu-sfdfjwjoh-909[pntzm]
nzcczdtgp-nsznzwlep-qtylyntyr-171[nztyc]
htqtwkzq-idj-rfwpjynsl-723[ndmel]
gzefmnxq-nmewqf-eqdhuoqe-300[eqfmn]
qzlozfhmf-cxd-lzqjdshmf-469[fzdhl]
pinovwgz-mvydjvxodqz-xviyt-xjvodib-yzndbi-447[pztyh]
gspsvjyp-gerhc-gsexmrk-vieguymwmxmsr-256[gmser]
ygcrqpkbgf-tcfkqcevkxg-hnqygt-vtckpkpi-102[puovq]
jsehsyafy-tmffq-vwhdgqewfl-112[rnach]
qmpmxevc-kvehi-hci-eguymwmxmsr-204[mechi]
tcfkqcevkxg-tcorcikpi-gii-gpikpggtkpi-544[wytzs]
pbafhzre-tenqr-enzcntvat-onfxrg-ratvarrevat-845[raten]
shoewudys-rqiauj-bqrehqjeho-270[ehqjo]
xjinphzm-bmvyz-ojk-nzxmzo-ezggtwzvi-zibdizzmdib-577[zimbd]
rkpqxyib-bdd-pbosfzbp-939[bpdfi]
vcibutulxiom-vumeyn-omyl-nymncha-786[ziwys]
nvrgfezqvu-upv-ivrthlzjzkzfe-321[vzefr]
krxqjijamxdb-yujbcrl-pajbb-dbna-cnbcrwp-303[bjacr]
zixppfcfba-mixpqfz-doxpp-qbzeklildv-653[zdxgu]
lsyrkjkbnyec-mkxni-gybucryz-640[ykbcn]
qspkfdujmf-kfmmzcfbo-dpoubjonfou-155[fomub]
sno-rdbqds-rbzudmfdq-gtms-cdozqsldms-755[yaubo]
houngfgxjuay-vrgyzoi-mxgyy-ygrky-462[ygoru]
gcfcnuls-aluxy-wifilzof-yaa-omyl-nymncha-266[alycf]
hwdtljsnh-gzssd-xfqjx-463[fajso]
htwwtxnaj-idj-hzxytrjw-xjwanhj-281[hzrnq]
sorozgxe-mxgjk-lruckx-xkgiwaoyozout-176[oxgkr]
ynssr-vtgwr-vhtmbgz-ftgtzxfxgm-475[gtfmr]
rtqlgevkng-lgnnadgcp-yqtmujqr-648[nelzc]
kwtwznct-rmttgjmiv-camz-bmabqvo-460[nmbls]
surmhfwloh-fdqgb-wudlqlqj-959[lqdfh]
iutyaskx-mxgjk-hgyqkz-rumoyzoiy-644[ykgim]
jqwpihizlwca-kivlg-kwibqvo-wxmzibqwva-434[iwqva]
amppmqgtc-djmucp-asqrmkcp-qcptgac-496[cpmaq]
apuut-xjmmjndqz-wpiit-vivgtndn-187[intdj]
ftzgxmbv-vtgwr-wxlbzg-267[gbtvw]
eza-dpncpe-mldvpe-wlmzclezcj-171[eclpz]
rnqnyfwd-lwfij-wfggny-ijuqtdrjsy-827[fjnwy]
aflwjfslagfsd-xdgowj-ghwjslagfk-684[fgajl]
lzfmdshb-eknvdq-rsnqzfd-859[ybjfz]
hqtyeqsjylu-uww-tufbeocudj-582[uejqt]
qfkkj-nsznzwlep-dstaatyr-223[aknst]
ubhatstkwhnl-xzz-kxvxbobgz-267[umogq]
xekdwvwnzkqo-oywrajcan-dqjp-ykjpwejiajp-238[mtbvo]
cebwrpgvyr-sybjre-qrfvta-195[rbevy]
hjgbwuladw-usfvq-esfsywewfl-710[mpiho]
lujbbrornm-kjbtnc-fxatbqxy-823[ywamx]
ugjjgkanw-uzgugdslw-hmjuzskafy-476[stfoh]
fmsledevhsyw-fewoix-pefsvexsvc-724[scznt]
zlkprjbo-doxab-bdd-obzbfsfkd-419[bdofk]
vcibutulxiom-wuhxs-nluchcha-864[uchil]
yhkpvhjapcl-ihzrla-dvyrzovw-305[qyhmr]
hmsdqmzshnmzk-qzlozfhmf-qzaahs-zmzkxrhr-287[zhmqs]
gzefmnxq-dmnnuf-etubbuzs-482[nubef]
ejpanjwpekjwh-ywjzu-ykwpejc-nayaerejc-550[jewap]
cxy-bnlanc-npp-mnyuxhvnwc-433[nvmyt]
jfifqxov-doxab-gbiivybxk-obzbfsfkd-601[epyzn]
pkl-oaynap-xqjju-wjwhuoeo-680[joapu]
jef-iushuj-hqtyeqsjylu-rqiauj-bewyijysi-842[hyzgu]
dfcxsqhwzs-tzcksf-aobousasbh-896[wkqxh]
lahxpnwrl-ljwmh-bjunb-693[jtoyp]
rnqnyfwd-lwfij-gfxpjy-wjhjnansl-931[jnfwl]
buzahisl-jvyyvzpcl-jhukf-jvhapun-klwhyatlua-617[ahluj]
jchipqat-eaphixr-vgphh-bpgztixcv-271[hpiac]
zlkprjbo-doxab-avb-absbilmjbkq-107[wbymr]
eqpuwogt-itcfg-dcumgv-fgxgnqrogpv-362[gcfop]
rdadguja-qjccn-gtrtxkxcv-791[cadgj]
etaqigpke-oknkvcta-itcfg-hnqygt-hkpcpekpi-674[mcoya]
gspsvjyp-hci-wxsveki-386[myuqs]
jef-iushuj-vbemuh-mehaixef-920[ehufi]
encuukhkgf-fag-tgceswkukvkqp-752[kguce]
npmhcargjc-njyqrga-epyqq-kypicrgle-444[cgpqr]
xtwtelcj-rclop-mldvpe-dpcgtnpd-379[pcdlt]
nchhg-kpwkwtibm-mvoqvmmzqvo-252[mvhko]
uqtqbizg-ozilm-jiasmb-uizsmbqvo-122[ktxvs]
nwlddtqtpo-mldvpe-fdpc-epdetyr-509[dpetl]
wfintfhynaj-idj-qfgtwfytwd-229[efudw]
yhwooebeaz-nwilwcejc-ydkykhwpa-owhao-160[skuyi]

1
data/2016/5.txt Normal file
View file

@ -0,0 +1 @@
wtnhxymk

546
data/2016/6.txt Normal file
View file

@ -0,0 +1,546 @@
bztzdacg
xyjtwqap
arsiwubu
cjwvfwtp
dpdymenf
kbedgnri
gsrrprxn
ojdxafjb
umujtcwg
fcpqbkti
hfhxzhdt
oradqnqo
pjfgpkgz
fagrqjrn
xjkujuks
iisbsyvl
narthccx
sjbnbbxp
ljaemgip
sdlenzfu
zhzlsmgw
sbdndyku
ekcktelc
vxgoapax
bhepszpx
hozlfbdm
fkjgygrj
keutuund
agzrwrzb
mgcucvkn
wiguuvtm
bnyviixq
ybsozbss
cxaqckwv
ulnksnjj
dsrvvmbs
azfnwcdk
hwtwbilm
lieglyxh
vpqfjxcv
sfwxiyqr
hqifjldw
icnsplkz
oxnqizfs
nzfwhwyu
ygaoadfd
dctauvvs
zmtgvtxg
wwzpvoym
cwhcqxvu
rmcvjkzu
yhpwofcb
nulkmdbi
kdppiqlw
awwysfhc
wutwcxvv
haivrowg
mfmsgbsl
fwmphkmm
mjzwenbv
fkvyebad
sprgbbet
mvndpyjx
azwiuvxc
jysrvsaa
dbdhmylh
bgtahasz
rxvnuzdh
abuhtxpr
sicbkalw
ivrdycpj
zhnmrmhl
wauhlrzq
qvdvzigy
exaihdzw
enmyjluj
pzbmvacm
kwiiicwu
caxviljd
fnpjelcd
sekexsoz
yjpdqfte
lbscrmze
hczfunor
hdvlprev
muyeuczq
eyfcvwhv
wnajxlxv
qovjvytl
nrbzwhsf
qgwbxlqh
djvueone
tjbxisce
fwrbhzrk
wesdwdmd
ssumqhxi
kkbxbgyg
ghlmwlkn
nwqprhnc
zothmtwq
xlxhmpvb
wlyckxvt
bmgdhtoc
zkysylxx
paoxzqpo
dpufpfkq
rehmrtqi
zpwyfvdk
kwdpimya
ipnjkoso
mxqxkokf
rsczwsfd
rqrpctlq
geozhplt
ajyatmjk
vkbycpap
pmoftkvg
tzjsvaiy
shoghugz
zbkifgyr
pbkpbmev
mlodbiog
ceemnpgc
rnhmanzi
mkbwwvbx
iwgnsett
utbnohwb
ddxtrdje
mcpjzqws
nrixbssl
tdwjqjgc
pyjyaost
ktslndcw
jseutzlp
aipejffr
iwcjyacs
lshhpbdq
gpenffaf
cukufmfp
ghwjsabp
tmxtxsmw
dhyfbhne
pngepnxe
pojchoea
gtgiogrp
xydkeazh
vqwnnjvx
azjcxxbj
iteaqkgn
nnfhcbhc
oqrlizro
nexqvoak
rglnpjny
ygzhhlqc
mikoaotl
jrhixpef
eikwdvag
wjinncla
ldkfliro
vkmadbkm
loxctpok
iicuxdes
utkriebm
mohvgmkt
fgsaycsy
xmvkgduq
rqhboixq
pgvrtlnh
ztahypot
vmiwyimf
jcgwncls
yiyusdvo
ucqjaxze
bxjgpahy
uginqzlk
nlaxigbi
fpgrsfym
bnanuhpw
uapzqpix
ntebfqhr
defunben
ructvovh
aqhymxge
gdzxxnvd
xauqzcfd
fhrqlybl
erlyajtu
xsqdriep
tjkoykqt
osjeelqi
clofyxny
lhwssjlj
fhaqhrki
cxgocyms
dbfqhwbk
fqpxxtdc
drxiflgp
athtumkv
wpdjptpu
ofqtdaja
fapibvfg
icohxeds
jgmgzzsd
vogagqfx
qelzldjl
qrdlgaqb
woncwuof
sdltdgrl
hwwvgjoz
itrqkyhw
slmehuaw
uxhtcxyc
lsrgmwcr
ligjqlcx
unzkbdhh
vmssbxos
plkfxaqr
zmmeokxo
rgupyiig
psqalimc
zkpdxmny
ctkzxvob
eumydwul
zmzfsjwx
vsdqjfwn
xywlcgzx
yfxinykj
xzfmavcq
uotgqrnu
mhgclvyn
qqetjpeo
bjvmylzy
iruxfcrz
jvldgohm
qvevmjjb
gbobtgrq
iwesuoas
wqkdnzpt
iqhlvjyk
gyqyoolp
wvacvumq
caqzoruh
ftpxpkpr
wvcztqyk
qfqjtgey
croanejb
cbqjdcyz
kxewlwwi
fqarbziw
pepzgqha
cqaeejem
rzezjxhr
ouzyjmdj
sxkmzmqg
txdyoycu
shuzdzke
tyblgetz
troqvtbc
vtkjnqzf
qkzksiui
yvitrrnb
orustrih
dckmcabj
rzkgzwwa
stqdalzw
qlfrvdfx
tbbywjpk
rgmptpyt
oywgrgnf
mczqsszo
bqcllnsw
ryungzti
hsdhzcsq
qlwwnjao
gebhrhss
auelxsel
ooibpinr
hvbwkafc
wyxniwnp
yuniddtp
lkfmtxet
uzvwegaf
mooyfrwz
zbzziowo
udyxjlih
husurpur
oufjezde
dhhqhhvu
ggpiyvdj
pnwosfne
dydoaomg
jigdybwi
jrezqnyp
uqhjltum
mqtfqsez
yebfabmm
vvvvbrta
uvppafsf
sllgpeix
ulgeznra
ifpvbsql
mzdrgkrt
xolsjkcy
azusnhor
hyfnelhw
becqefpj
epyokhod
tqojzdgz
ckjqztth
aweeqxmd
fehhuhve
bjrgsmrc
zmqofcvf
zfjfaomq
bssvmrde
xfdblalt
qhywbzba
mtgsvemd
wvberfyb
mjxkmqul
aytkyusz
sabuotpk
uacviqis
jolhhusp
xbjvogig
gatwogxo
taxbkfxi
fhvejhkr
mlmbhjis
zuezkkhq
cdwcwuvv
jmlprdmv
ydwyooiu
exqatqjs
eunwnucj
hkrnsana
tmfeymay
tcnogxpv
lnlrpnzt
vavbgplk
kjymlakj
tmlseyul
zfowvrum
yzvwvrmw
qntgqett
vwwqkqdt
xlfedyzg
ehxpxwjn
wmijbqgj
idftxkgo
mymigedt
bmouaruq
bxnbmvxz
jqmgqwta
idawdbub
opxennsn
jeotjdhx
sojzqnpa
xouarvap
yjuoninr
vqjogzjl
khzkueji
ndoiuxtm
wifnoizv
afzkeddd
pfyyvihg
pcsrligt
xnsxcyrz
gzququlr
vihfqqdo
lsbsitur
kqrkamdr
peludmha
dfvkfbyu
zscdzqua
lumijqbx
hzkwiitz
yatolkoh
ikbbpwdh
emamjtmc
eqioawcx
bfkrcrfp
ksntxvee
bnslkpji
tblktbpn
gvqfksyi
caplwhtr
jtcllupx
ployzvxi
gygpdyfb
twdijfma
yrzmyoza
gymlehrc
bppycuib
uftzoycx
uxokapsw
jpiwwboy
eciicuyo
hgyuxrfj
hjdhthqg
cexcqher
vsjolhue
odqcfrkk
gkypgguj
xuthrpos
nkzpsbqv
erofbehb
pnxcwqyk
gcwhkxjo
npbnukjp
qmshmgej
txrcdgeo
xttdifgz
vkqihmqf
rlaqduzu
hcjjkhxu
qctdznju
yvekncrn
cajupqki
nccbcgcq
byxxgvjk
zidpfckc
bzeawgwe
omyegefy
ythcjpbj
kcxohucy
wkigkolb
ntvrrpqn
qxcxwtuc
idxsnspd
nvivszfy
tkqlznph
vxnsojrk
kralcfwl
hfkgjwds
wuzgluwn
jwltajll
vpcbpboa
bnrrdjry
uurpkisf
qbjniyrw
einiyjjk
gwmmewnm
erxoycqf
uwdvnnwd
rjqfozcv
nvnjlmum
kuirunnm
moguesgh
luiabxha
xeuaetvy
zcijrciq
dxyawjfe
bxxaytah
firlwpxz
akepeyho
xneohwpu
wrhemsyg
gbafuemn
kzrlkkdd
xsgupnkf
xbqaoosg
dlkuzeqc
hidzsgot
emftjwln
tvwbrngp
habctvij
idzmgcue
flyyevlb
orhdasvb
qwgsvokg
rgpcvtee
jvwyfziw
lzikmdqh
dsyvnfaj
inrlcdst
ehzxjtin
pdnhilac
cvfbcuyz
vtcmfsbh
lnmgmfzw
vovbxstv
opvfvcnx
zlyaoifj
ziumzwqh
phtmspff
jijqudod
jtistrvr
oucmojll
lfjckzhn
fkaodyev
qgspkigk
ypstmrav
kxmxsxrg
egmkleby
ogralaup
klguxwmz
sdpqwdcl
pctkiaws
tvsrfgix
myyrujrq
lzluftpg
rbvscsuk
jfjfdstb
lexiumav
nyvrxexy
jioktbzf
arubkmmm
fnvimawa
dwncnkfi
hyfpywbn
wootqtvb
ktlnzuyh
qpbackvb
reaqetoi
edmnonic
nlpdmqfu
osfsybtk
asnfzlnn
lzsspajo
qanbwzel
lblvbkof
uvurrekd
kshqoiqw
oosxudql
orakdrgn
yotzryse
rpuhmeau
cqchkvbo
ajcaluhy
sabvtxiq
sctoapgf
ihhznfmd
yenlgcmo
dihxrbos
tfusfxad
sdmdfhxa
kodcikxm
cfvvcfum
ynnrmqiw
rbsepvwv
npmdblpf
jgltfwgq
guitdsvy
nfyzuhgv
dgjghspu

1
data/2017/1.txt Normal file
View file

@ -0,0 +1 @@
818275977931166178424892653779931342156567268946849597948944469863818248114327524824136924486891794739281668741616818614613222585132742386168687517939432911753846817997473555693821316918473474459788714917665794336753628836231159578734813485687247273288926216976992516314415836985611354682821892793983922755395577592859959966574329787693934242233159947846757279523939217844194346599494858459582798326799512571365294673978955928416955127211624234143497546729348687844317864243859238665326784414349618985832259224761857371389133635711819476969854584123589566163491796442167815899539788237118339218699137497532932492226948892362554937381497389469981346971998271644362944839883953967698665427314592438958181697639594631142991156327257413186621923369632466918836951277519421695264986942261781256412377711245825379412978876134267384793694756732246799739464721215446477972737883445615664755923441441781128933369585655925615257548499628878242122434979197969569971961379367756499884537433839217835728263798431874654317137955175565253555735968376115749641527957935691487965161211853476747758982854811367422656321836839326818976668191525884763294465366151349347633968321457954152621175837754723675485348339261288195865348545793575843874731785852718281311481217515834822185477982342271937155479432673815629144664144538221768992733498856934255518875381672342521819499939835919827166318715849161715775427981485233467222586764392783699273452228728667175488552924399518855743923659815483988899924199449721321589476864161778841352853573584489497263216627369841455165476954483715112127465311353411346132671561568444626828453687183385215975319858714144975174516356117245993696521941589168394574287785233685284294357548156487538175462176268162852746996633977948755296869616778577327951858348313582783675149343562362974553976147259225311183729415381527435926224781181987111454447371894645359797229493458443522549386769845742557644349554641538488252581267341635761715674381775778868374988451463624332123361576518411234438681171864923916896987836734129295354684962897616358722633724198278552339794629939574841672355699222747886785616814449297817352118452284785694551841431869545321438468118

16
data/2017/2.txt Normal file
View file

@ -0,0 +1,16 @@
116 1259 1045 679 1334 157 277 1217 218 641 1089 136 247 1195 239 834
269 1751 732 3016 260 6440 5773 4677 306 230 6928 7182 231 2942 2738 3617
644 128 89 361 530 97 35 604 535 297 599 121 567 106 114 480
105 408 120 363 430 102 137 283 123 258 19 101 181 477 463 279
873 116 840 105 285 238 540 22 117 125 699 953 920 106 113 259
3695 161 186 2188 3611 2802 157 2154 3394 145 2725 1327 3741 2493 3607 4041
140 1401 110 119 112 1586 125 937 1469 1015 879 1798 122 1151 100 926
2401 191 219 607 267 2362 932 2283 889 2567 2171 2409 1078 2247 2441 245
928 1142 957 1155 922 1039 452 285 467 305 506 221 281 59 667 232
3882 1698 170 5796 2557 173 1228 4630 174 3508 5629 4395 180 5100 2814 2247
396 311 223 227 340 313 355 469 229 162 107 76 363 132 453 161
627 1331 1143 1572 966 388 198 2068 201 239 176 1805 1506 1890 1980 1887
3390 5336 1730 4072 5342 216 3823 85 5408 5774 247 5308 232 256 5214 787
176 1694 1787 1586 3798 4243 157 4224 3603 2121 3733 851 2493 4136 148 153
2432 4030 3397 4032 3952 2727 157 3284 3450 3229 4169 3471 4255 155 127 186
919 615 335 816 138 97 881 790 855 89 451 789 423 108 95 116

1
data/2017/3.txt Normal file
View file

@ -0,0 +1 @@
265149

512
data/2017/4.txt Normal file
View file

@ -0,0 +1,512 @@
sayndz zfxlkl attjtww cti sokkmty brx fhh suelqbp
xmuf znkhaes pggrlp zia znkhaes znkhaes
nti rxr bogebb zdwrin
sryookh unrudn zrkz jxhrdo gctlyz
bssqn wbmdc rigc zketu ketichh enkixg bmdwc stnsdf jnz mqovwg ixgken
flawt cpott xth ucwgg xce jcubx wvl qsysa nlg
qovcqn zxcz vojsno nqoqvc hnf gqewlkd uevax vuna fxjkbll vfge
qrzf phwuf ligf xgen vkig elptd njdm gvqiu epfzsvk urbltg dqg
sfpku viwihi fje umdkwvi ejzhzj qrbl sfpku sad nawnow ksnku
nzhj mfudick ueaa jnhz kpy pzk
euiin xvl elaoelu wbdd xlv jtm nohtq gfdbgdg gdfggdb edtym
xfmkn wyww woe hwysuh gjw dtk utryasc dela eluk vmmun
nmag qfwe cwslmgd nlhf hpf
ifs sszo iod isf jna
pjptwg wreera leyb hmlbpf qcrbma ylgue
rwlpo jhla rprxvgs quguh pyybwgl qqvcb
rxtcpdy wmpci mpcwi vwvdzdn nfpnj rcsxinl itatg ycy hrctg ron wveju
zmkfn wip pyiz pyiz tnyg dvftf elks ezhotbj wip
sgmtfdd xdl sch sch yaxzh wphgksh knzrixp yaxzh etm czqbaa jldta
gnbr rnpd upe eeb sbq sbq oxc rwvugoj
cshk thcc emfxx emfxx pbtcf jpim vltkqar czy iudkac jhpcc nqs
uzbvx fkiuyk izxdiu yutntvn dixuzi hkyfnud oyz ynutntv
ewl mfns idy fphu yqccb pte unukirt unukirt fdx
lzn tin fgena qbql qycbdw gbtn lctlysx adhjfq blu aiv
ites ites pbxzunl vljzh lqgerta pbxzunl
vmk wjfzvhn pqkidze qfwh
tqprmc exypl caf kwikh mdyyljc pbo hhxxo skna
sqxgejb ejc fvup hpesvs luz fcxqwhr ypxof fxlcp pxyk xiczjri
vjg qcw fsyqaoj mxf jha feclqqr vzdqnk verw mvmvm pvdqtcd xsfu
fwwn ktvdh aecfv acfve yjozxwo cnujw bcgde lphnk knlph bqwlqju
uwwapm dlln uwwapm uwwapm
huupab ewetcte huupab ewetcte
wjs zipivpd klwafr ipcczg wbv uujstsw hykn
mgojdyh hlm xruta lbmaxit pabqrnp vkyigd ptpzr glin gfau pbo
tbwx baqxq vtz jwex tvz tzv
efopwx wfknzb ogaxln tqzrh jne zugd zpxikma
rdjsa arjds hqdldw fjrtl midt qjv jfrlt
dggqohj bidaaty iah lgmug wwmlbc lggmu laonaoq erkqrb tqolnns iygv qnonlst
msc glwn xjfnij itt pka irrafjd euazydj silo
zsyut znsht ldky zsyut dzcdft znsht
iit cyteu pib fgvrs iux ffctql pib zuzp zsbb ieoi
xxtwlu kqfxjhq isj xqjhfkq dohrs haovzc cgfwfrt munqon vuyexz nouqnm
eptpqgi uiflvd acj livzq ejtt bniud cjdh jkrcken lspfy tpxri zibj
zxme dpo fumup gly bkdcwxn lsly eglhe
uoshw ijoyiql rcskaa vjbqv roiinzi fppqdu
xuw vdbxie oypcx khxq xebjt oypcx uitqep vdbxie hoz
lrjv tdksk uebo wktebvx nlapmp udhhxh uliqbm cklyyf jlzw xrmdlvx
fosspck fosspck fosspck qyidyur hxnxmb dkpj
rmrvlms susvos idw hzy idw tjgxbc lhgqxr tjgxbc uuq
etjmbdr hwqe lnfwzni lnfwzni good eisci etjmbdr
yqde bmlcc yuel vpyplss vyvhho kslgiu lllhc jtkijdj uclz hfbqsf
tlohlvv tlohlvv bdqahw tlohlvv qavcqrn penia saafy
lvtzyt qffe eaikhv eaikhv wbnl mdkg mdkg utfrm
luowwk magp luowwk oyao oyao hsb yms
gnxply vsdqum nprf jik axdp ariqjpc hjqcc
izbo nkqkb xpqg pgxq qpxg gpm jxbkvu resj
hsgyxar hvsl ner zzmcn lcpdvqn ern
rfjlhu xkyh hafs cvvk drg vjsk mymc iab ycmlubx kpwemiw
wlci qhhpr vhpr oyrili cnynh sivdso ldjya wilc ioiyrl
cdfwd mbtk sienxui jsmxzo yxbeyl bybtc covxaq yuxn ktbvztl ktbvztl rcekjhk
ptenhqv tzdt phetqvn mfkdz
hmezeak pqvqld amsih jxqacc uferfyh nfqjsz rtuqdzz pohcx qia cpxho hgpqs
iygny dluc uxqz nlujm xkdtlm xbdgepg jwn ohl wpfll
lnqf pcxy cpit enp zpj lqfn oowgw yoxdff ohvcfcf fuvz qkpmb
oydu jlscilm pzxen nmtdngu tslcupx ntdgmun uztpx nlhh jqn llsv
euyx epn gyvg cwtoe ruyap yaurp uryap obbl ovo
pgo irm ksrxe qotuygd afwh qfhzfsr wafh dqjbwce dzfo hew skrxe
dpvel dpvel ipljjxs vrrsob iakey uheuu swxu qmnmn mpjkb jqrwfmv jozj
sempz plzxqe qvyg sempz fejux
cqgqvg zhqir rqzih vyu fmb mfb
uejl kjh ayz dzimg yzafvg dem vlogg
htfkd htfkd hwykmm htfkd
oxvgq wtai rkyyxya ldkecdv
lvlrsu rsullv pptnrwi slvulr vxrk dpzti
gde ixwoz nnsx nhc nzi
dsadkj qtgya wco psyondq jayad crc lswwm purrad pof
nocibgs hxqdejv nlqxdpu dvzd
jfaws aiwnjm tqjpgs fuiobz gwnemv hjevs xkbbgiq sakgv zmwpkuq grjllw
xrr jwhtchs boaqkg wjhdr xrr
vyapct tgw juzgwkz odddvof juzgwkz
unuu kubdd dxr drwg
qpefzz iemo fwa vhdcxx
hseqy copss gytzub lxi mrxtwc hxqqdfx ijt kcy tafjs jit
uevse rrq zmwyjfe xljx lhgnyzt rngvwqd
gfvpyhq xpdhind eocgpiz ebs pcmsgjy swni iwns thspnh yvbzxz fgb
hxr ehw ekfd ncxcs gxjmd oqszdjp fgu gwuoafw zumenf qltbw whzuxov
wfc pawqo pim jxgt dtiwzil hdptivc slkazm htafjih hzheez rkk amy
mgoatiy pkec ddvwyni zuya aqrcjes ubkaeus nuhhad upe qfem bpcc
rmyeg qfq bia lzk fusqfb ltvgry vggr xaxi avwdkbg zhlzt
zkjoeee dyi sxdwfqa irqljmw gek dgdb mrakr ddaznn zlh ajzzacf juv
kmqcy pohbej hujdgao rsxfkn vlu
scnpa hvl cybql lvh lbcyq msw deqqb yjpsndq
ndhjooo dpf ziey jtjlc eesag ldhgoif
tysbae wkpst kjz stpkw sil yetsba
ghvlfq flhvgq tgkjie gqlvfh
oimn vlmsljl ocala vokhrs odyv msn dzly wcky
cfjwmh rpsdor bttnkg jxenm mwdk mer jgsusdz cslf
ialvxk bvc qjfikr caw puhmmfl xpmsx
tyoey egcf dijg vywd enued uxkshz nav bdrn hjugffi iobqwiy
eykhxck shpfjhk vlqg alkenz kuj okxs oeth mqbr nfvqvkv xfvyi mboo
zbw curcajm mel jxqcw mpdscxq rhadty zrddeh wmedc wkcwt yvwm
iee hzeofmh pqlkkb azlam fpj hzeofmh ripi
sawaqek oyoiwtb npq pisadk nnd bzgo wiqme lxnvn
obqx ffiegn obxq for xobq
zwway wwazy aqxg gaxq
ebssilw nuscati mofyc sogyacc yujmdwu ehxsx qcaf udvoo nlcfaz eov
vnbe wtzzjn bczyxt crmvas zujy kukq zujy kukq
gvltk kgltv kglvt zflikic
hby pium gut fjqn sksoqyq kcliapa
tbonrr prf vga jqgw ulze ukfig
zafixw hia omgwoi noeiox fqbket iviidgp bebune kwcuotp slvy wcx
fjq cyecn fhxvj byv kojvj iaqd aaxva rkogp
vqbbt sjmr mxu mxu rlfj yqhtzv cuar yde yrs sjmr
iyxiyp auepgw dtpbyvu thuoai fpsfkpn bemgbsk lni ozy jogp xldyvvx fpsfkpn
jtha ibn ahbkh xzxkei tql mycvmyh ioyw
mpsc pvdiuu wqixxlo cqwmlrw cttoz lad
srl xxlnofu dqf snxd zjlp htxzd
fkv berlbyh kyna wkme qjzgh thpw frup
irhreaj udkpbza qmgp ormlipa lbyuc
empizc apcb ossmtj awk ttsgi bfoymzd ftx jkicph qqjv tywp fwzfe
zaqkd ysn zaluvs rljdk ast fjp amjqr uabrya ufswzjg vcldkxt hzsmrbl
qvy tqgnwj akibr tfjevhv vav
mhe sxg hacoa emh kasf hid jklfy ijk dih
qvwbenk akdctm jztmsx aqvpodu vmknns nck letcrk poba
lhve kkvff iiixid vtsun uvgte mmlxk pgd
gktphd aaoqwz lrvsuw ofcyvmi suvwrl dpqiol wjgj uqigjx
tbp xoc lmz dyzlvp bjleh pxj xjp xbil
gpzgvj tctszm tctszm pnp upqtmm rribg tctszm sllsbr
hpm qvjnd lyqg bybpwn etz pwfigbg uqgrvpg cvniubo
tpowus bdncyxg gmm ebfg zwoue izgkwtx gmtfeg xvudp xgmjp atrvn aqgl
wlrxvo wvonohi owxlvr owhnvoi
knyo aiixyi sjtqb kukhgv qkj qiuefb syhfc aoana okmot tdsmnoj eyzqjn
szhto szhto szhto fxpsavu dtcz hnwqdvk iza
poykme rboczge tuyiw sxr
lpgbp bpmf aiqy exzqt gxdoow yjp fxwdmt eoklc jnps zbnbiwr ppvl
huecy jjhyz pwcea ffofmj tts
ahbmkw brz xdenmw mwexnd ncdxgf gcxnfd
yhfnra vqljz bkyxzt vhtsyde ysaxt qbw
gqhiej rofhmp soeebdp rcuiblb rcuiblb rrnh nses
pxrwe suil iihzf lhcgmfm mqasxh ttpp kqitdyf cuabaa
cxl cwsp qyseogj dimvv igsoxu ncrexla ubrvpp oum usluv
rkmo jqqcdjb mobqcta pbcmoi afjlh mork
nmohoeq fezpxh fezpxh yec
yxlncrt ivi dajo tjpim tjpim
hzhy rcjs uhyvwz tdpxlqw itoiyf
ded apfmhe stfk ugyujv drwks zagqnw mbbzmvc aoupemq
iezre wivdwif xzytxe xwytd vpnol pljx aot phln ztncw
ozblu asda tkxh xqe pvijnl qwwh uvp bdhtgjt uynwtav cdz uqmvp
eukgtsy kdfb bdfk tnv dfkb ewdemb
rsf cxnk cid qsa zwk oetnggn
fpq oim zetbmlk fpq oim xgv cbaj cjrqm
phgldt fhmkc efkztj qidri vsv bvjf lfwfgm wfuoln toamg wfuoln idrs
iuc rrdnk rrdnk asqhnz qxkigmo eeoim mmdtgif akk
rfvsyy kopfhmd tnv ibo demeqm gxrxw hwk ukorln bep
ialo eogif sxlj xfegx nanch egoif eymwt
kttrpjq gbnyiat kptg oarewx vkmt gbnyiat szyokf
tjll xviodi tjll efc rliugl wfbbpq wsqvdli jur tjll bguqyu
uecm yzjhn vqf labnc xyaksj
hjtef zzq ellr wtrodcg drwqo ernt uzx sqiokam
izmh ddutl bdzft jvfthh
ecr xqrp qlxstu kgprd gqvtwni mkughf bulabe bvoxkx
jwsna vjwq swkycg cpp dvmyal xotxviy qkiva ffa eakwp fww yirri
ufnl lpuxw rjki nggh ajdkpvo oeuaemy bjisma vsjzc
ctxu aavlw rap fzxtcp msufn fzxtcp sdlaom vgvdvpc
rftw cyf twyxi orifavd
ogiht ertz wcw jnqdup phvp lbw
tplpyq jeh aobamqe bvaim qptac gssi mkjbaj
nmklyg iitx iczojzr vjspqb uooky uooky hjk
ggnekbb bnebggk sepzjd fvqfgr
wnfwrn yaiogv mbusuy cpbcgs thjea
atndjc dbjgdz guedeay rasa kfhame pusuu dbjgdz
xivzyml xivzyml eqsykxo bshvz xivzyml
nfe ayx gscy ylyp oqyl isatnpx poaelm zsrw dpd eyrdjpq yllk
feqktz mlm jhi yxigeu xzqa qwv yquxw emken jgqsp rojfcu
ruvfcud poubal xswer hfhpyp guf pzgzoq pzgzoq jwgxafi guf kqzzlu apg
rxwcsdc rxwcsdc ywu rxwcsdc
dmgsey xrtx wldwyxz avi
yxnqv ewlx fvif ozfcbxb zqapa yudqksk wlxe mjpvgz
ozoa ozoa hwkbp ozoa
qcv drtqn uqv kcsavgn ybzs tkw
njmloq wapa srm srm ifurca
ezm ccj rub yuaww xhee liikjee kcabgic sbgqx vrpyo pzmesdp ksvv
hycyne raaksm nylsc lcpgn akasrm vxwoaum
zhugs pqquitv bae lyozb fhij pcdcc bae rygsgm pqquitv pizz
oxx bzk grpis qiqljwh svkn
qcq qqc fzgn sqg
lclad motw ukz zghp
glr okzfs zgv ygsvv sauuog glr amxr vvmwmu khy eyh
ukpxpy rgnqyaw ncm coeblf
qdbr ortzo spvnrnq uomtj vffbeva
miwar bidfxp eibo qyee
yldec ghwj mxlemvi imac klkvmg fekxhp kevlzfr fcgnoq fncgqo
hlm vlol qdic rltij nlzxfys rzpoh
krpwspb yrosr hioqla dbpgzgu dvkvvc vvdckv lcjzb qbsbr acbi rtnk
iqtvk jcldzuv smly whmnte mdwlse mkxw mfnkv mkxw kes owkfh
iwcjmkt rnb bjcdjl furhzuu exs
kjwu iuaj ixkujoa jzeau whpn
tvj zrdy fwsbagh zrdy czuzum lxotprx wbohaai
crsyzod jouf osxntw iwzzie bodu scze gjxn vgxvqo gjxn mmthykb
dabjfb vjqz cvr gsymwoe qzpusj twvwhw gyvlqd kdrdkzm bdljp cvr
vmswdz lgjsvxz yjkgqkg tzmjkfp uzbmwxe kuqa dzomt hep jjlibs oxvpvq cix
iqgd btwdjd ncdrovj ltxqc orwhdlo orwhdlo
nxro uxj ovgha elvzl xmlzssr wonimvb urecfx dbfn kope
tbes cgyh fypswue fgxjqtd dxdrfm pzhnaeu kugspa
eouzw qrpokyb fyhpb bcvfvze brdwey gpaa fpqutw pbqkroy axtc egamku gxk
xdrovpt peeww wkcin suir gvrbix
hgsjks juvod jtii iijt
yaw hzifa wpagkd tgvmc iru yyeuy mgcvt fhiza
lsk lks kls edypaxo
tjz qjs mgoyd gomyd ztjbex nprwk vvw rtjsq quvf vuziqtb oygdm
kftodz xua lyxt zfadf fgdwt zfadf xua ehwykd wniahd mqoarg
qgiapb xptk iscyf zfspn qvrpva egufqte zfspn hksw xwxrs dkdruku vegfs
wqifs wfsevg iwnjjpi oajju tkvhpl lemuw
rzbmhso pbvb lfgpq fzjwxxh pqlgf rbhsomz
ufi aiyd gxozgx hygjp dtma uughdc ojumcf yuadt
caami tqzkvor tqzkvor tqzkvor
vhtnvyx myxdywi mwpwq hjxadd qkcj vvytxnh dmbea
jvjtcjg mbiwyad cup xkrfk puz uxpmutf rjxyxyn mfchc
ocrak zprfbgu pjjzl zoehfkm xqn qki uxq tcv emknqjp wvmkas
nxg myr myr vnfzpoy
gwu ezt kbmeouj sxue cxax gcquz ieegnal xecusia vxf
xermi xermi qporwc mzemns ticltnz ddpsstr ddpsstr slgbn
xnujwtw bvzv xjwntuw unxwtjw
tipo akp fkmcls wglmjq fnrtsv
fan dfbya qrp lcvxqqu ldpm gucmeky mrzy fixaph rygneb ocm pjh
ovtrqs ujmbnal geihpe mijhy eewuic toaxbp ipy tvb evlmrtd lbujmna
lsmbwwd hvurk ihbuek hvoyq erzomhn gue lpq dihon dgzvst
fuoshq hfrzeu zfrhue ufqohs
icgwnbi gmhogxu gmguohx toixb hfwj haxlav hbe jdpxeyi xtgfi
vfakk ioil hddqu sdztx hduqd bmiuyr vmas
mcvjjhf sfgt sfgt lambvp dnqc pfecquk
xgr omy bmoadg afbna mar nicpazd iveku zdioyo
rpipon dwg wgd pironp
fkyx wjefuy mfesst ztlf gnnceb rsbvuk ckilt kliqnm iuifcvu
lmgzx oknwr wmttry luipa vcttj nuqdmy
iota efrxkk daqzm certtoi nnvqrwz qrqgza tllwp efrxkk
alde wqmdjy erh txrtqm zuljg hspbnrd pvsnebh bkue pvsnebh txrtqm txtthn
hgggm rswwfpj uctzrv bylqeen dpbnw ostsjwn jtjiyuh ofxu mmmqlg ayhza opbgdrv
qmhkh orbeokv agosach lhujcju jzpp wmxtcy jcxglu iuwmzrv xwkgz sxlzld
dzcdm lwal xpujjm xpujjm lpfojz lqqcon qmqrg
gmwugq ceslt rxcogaq jwkraq
joxr brdy yixlou brdy lnr lnr
wbut pxlsclt igigapq zeacg jxiezn hvws wwz ujpbl fdjtfjw opod kea
tsodswf pufo zqrt zvcpu
nyy mrqmg zkt tslzsf zkt
hxywv lbmogd hhv npyzgjy whfvv mlfqjr ggjz owijo zmesslo gtvizw
xzz dvpzxbd wxwlp cye rcqpgrr gynzo nhy gzpk fpfmb
nhaakbv iazpdc yadqbe kmqm dffq lidnh cegjosw kgd hwivd wijj
cwmdyf huoy awihev qav cwmdyf rdwck hahj pesfyk uoju zrirjdu
qabl vwcwbb phnd xnp huuzwxl rukbp kod sfu ngcvgrt buncnfw
regyd gjzfwf hpuv zmm vphu gwffjz
rdf emo crsoeo bksetj aqfzm pphny
opbmboi iakvj ymjwm vxoq qvox yafk zkch adlusz
qhm jul zasv xhu qnhjwzx
mjmyvd mezfuls upbdpzw awc qxta bzrx tjpjmj dxfyewc zorm
bko kfokm htcpoqc liuvj xhmpcu ccqphot dthvo pfj dtxpmu xoocm cmxoo
kxv eenns qhpfsvo gqoyv jzjho aoscl fetug agxmfea aygpt
javmegf jlmt epdwy egfs hwv uszcqvn foixpz iukh dbuhqgs zgb
zrex zrex xtx ydan maomp hqdhh mfvan broh wvwhqbu
phatsot joipm pmniq arqzmbe vurl bgy iwbwk oyhngcv vnzbzgm bgy
xprufgn vhca nrs abuh zwsxmhk mqrj tyslsij ojkdzom wepxg koodzv ypvyy
vop nnpz mcod mlli ntyhz laqztb kauqkla gmrfte pcuhaci
vrenj lypors prknc djbdkzv amofdx
lgig lojnrw obusoc fkwe ggnv pydcraq bvdivl vev mrojjs rxa
qeg tap jocwlsm vqxa lmjscow
gptlrgq vdasm erdc oparmw
rgbsa nacqhvm pczf anupcp upudwgp
jbnobi ifhzrd ihrkkf osw wos lrnwv
aiuntpl fcxpmz fplacs fplacs tipm gfotkx
fsbnd qoc ozmbi rqv fmbxh tuso kfoxvjn ocja zzs jwplx
muaklvq ghozoxh nwxbh mgoou ufptl ouhh reyuf jougckd dgprag
gwbnqwv dtrd mkzxinl erxl zmfa skuu crxmp wwao wwvdpk nxbn lglzy
qeejk wvnypc yfzyfcr eeqkj
nmcp fmkgfyi grfthau azw
kkallxz rjke ukbt ixkhfb bktu jkre
pxj mnwe djrjde gpsc enqz pdbydx cktfs jjeddr
mgplj yyunujc vis odee ccesa yyg yjcnuyu doo utse
flyy juvxomm vcdcyva lfyy ozxnuzw bmgns
kmsypi zpbyiv rrycnb qos sslwyeo jgbyv njltzt fuwk nwfb ozcf xqnf
sdcvgmy sdcvgmy hzv uyq sdcvgmy
fyox vmgxahj ywaxbmm ugy ruwc mys yrjwr ozsxb vaq
gjpyc sgdn kgm fbvq cziui nzy bwu ezjkkus jrag
kxcr tgjxss xkcr bembjv rbbiw bwbri
dcz rrhvdc zbonfzy ubjt
rvq yjnzswt vatkopb xlj dwxig dqlt qts iva
lylclc jptz rbidu lbt byxk
lwre vwriwh afixsi vwriwh
kmvbflr nfptw fbglxh pyas dxmn hemf segaz zrs
dvbey zmj xfoi bma udtxhb
yryng geiwgz bbrvjp ala
olzicp olzicp qhhslry olzicp
exf xdmwh xdwhm nhjsssn rmlkdb excguia fex
xkwgeso htys sjdk jizciy gjjl phgqdjh wzdb izew zcrumu llxfp
frkohf oifsm aisebkt ijsfkot ukk
koqf xvoior tpe erfpnp npnx
sneysk nsxki wpmhd mdor akrpvgz moicncj sbsj owfhj exw
oqqbvk xztx gtxlms icmo
lfy ltq dlzqlvi ovbrsa gzm nhcjq umbtgm nhcjq
iuopdzq cqaeuu xuzngq kxlx laml slvvr frtml tvioiez vyoomw xickbqh
ckahov mepeku gtaf gtaf
tlto cnnz kzsbkjo kzsbkjo
kqf comkf dvrkyl jdsqi rnwvb vxvd pok
hncq xcx yuykfs egrruvw yqh smcou
tywyq xeq cix yywqt jhzptci hybcoe
zsw zsgot wnu sumd azmuos qawjaz rpf zkxgwdu iom igh
vmxmelt gll ysbbt yboqoyz ykdglk cnypf otn owsz ipn epfeka bkmy
wxjpce etzyavi whb sxzft bfu dgwnbgc nfw sxcteis qqpk
kofv dgoyme vlza oxhbo lrqt uic tvfqiyy iaqm afnk
nsmpg wkibdcz dxbw tlxzm zgwe nqwjji eacbhn blk
shlgws eencr rtufah kjyvqw transt ecsq otbf
obs xsjceex ffqj sob djpq jcda zlskve
rfqtle klarp mtzrx rasr eisqovk rpt vymibt zwrif ilsnd
ldu ffd ldu tizfexr fwpmyan
flxso tzec pzn flxso kzdouon tkvkj
tvd arh qywql uev btvnpm
wtwx kzafvk ybyzmhv mdbrphy vamlvr gbxhod tyulba krcqj ikotmla qfhpa
bnfin ebngj agfdfzu rhjtj aaqzh fsyp nilar uwurjnu hhmso hhmso
uanmesj vshh syosjdt xkormf syosjdt ifvytwl qnw vshh jkg
epyzcn pgdxgye lecnx nebg jzdhvge hfy imiyft
zonbcnv vuvg sxtuty zdhmiow lmud cuegzg
bxgft mxhzrh unqd pqpsnce khykn qlb oujdxpq pxrd jzxjuxr tij
qss mqirowz ijjswjm jjer utwn kuedqxx bxshuok qkfag dmfwcr
jgln zdohd xitfbge xbokj xxeuv wqhvhjo erg cua fhc mhwy
euo ousht ipxt tpzq vnbmlo wvbjpb yjg bwpjbv nzvsea aerhsqv
axhmi bcf zdx vplso xhmai qsk psolv
ydnpmyo pfba zmo nat ykwxvm ydnpmyo rtd uuvqqr hcfccbd rtd
ytp guw ydmyf rww oucmpf gemhpj labc
edpbefn awgg qzpe aat cupig
mmi ghdaoh ibx fbyj gge vmmssen nplt mmqcra omcvm uwa fxypxfc
kjaw mtijne cfmsigd zwcjjd ajxjlqr tbp bnilc
fse ele vcsyiv bfe udny vznrao mgrjfgw
hadl nikvvpf gmdg bkmgt ugj
xkis qmr cgz nresp gms zrii coxkke vfsqiil
wmicbf bkk wcwklfg vpcbeg kfmjab vabc dax tnao tnao fvvzeyq fqm
bct tvj tra soo stqao kqua ikupoy wulcu nauxkkb pvqxy bfu
wpz txdduxq gaehfki kxo lvjzpxu iqon swr eyihl nbbec
fuphnbj bdtz huwu zdtb ilgzpa uyaut vpy viff tuuya
cvusbh bgy apsao qsupha
jtzlbd ljfvh wkjrw xsah sef jygb pqym zbcwok zdmug qpym
hbibuax iorqc dqjrs daeb iorqc qiw sagyt rkc sagyt khbr
shz mgn pqrdbm jvace gfhnq ann zosq wdwzmuf kswsg dzt brlavyo
qiw cdvwds dckpruy pybjra lfvgfn cwj bajtud pojehb rzrzvwe
txfyk zkgeeu zkgeeu zkgeeu wskcv nccoz
eettnxq gbgr uiqonyz wqtgs ozfjbn gbgr
svd thmmr rbbtxn sxkq isxlnhf tamdlbe bqrgvu nmpvlkc spko
qmn rspbjme ikjddkq kdb ugpegi egipgu
ufffijo revqpep zfw kwd pnya blqo rnntzx anpy
piaeyf vbeye uuqd vbeye
hamd hap ekk lgla twto
isniinr crz sjpmfxn uskwj
lzeofk tavbq ijcglqy lvy jliqcyg lwlip
uhyyyw itlrf tdc iabeocv jzwnjh vqxll nefze pyrxmx eispxnm hzlksce
ucuh mlam bhyej rgzkew ctbo iswqnvg
ytmb toppqgp ytmb gqgpr gqgpr vps ebv
eavn atkqltv bjvojs kaskr vqltakt uiktr xglc eyb rkkas fhnf eaorqm
jmfipc ujggeh hdxpfa xtab ydkibi ycxn ujggeh icheh vpznael oprbf
xazqxg khlemu awh uwz vhnixk vdcty hkk
gcl kayi hfozask grpseyn zviy tzoum qywnr wqkhq
ctrrcpw wqfbylp wqfbylp wqfbylp
gtk lqohf hqeaku mdj zrfkmxn bcqgf msing
luhpel kexokpx vojap ldaexs bbbtz
oimnqb esg zyjmbfh dfyhcf khpo zjtgm yelztbs ugj zjtgm mxro xyfxpk
dgtsu vvk wwfugbx aai zlxab beyxcg bpx chc bnxui
irrwbo orwibr lqt qtl tqknh
ihjsg ihjsg powwy pycyqo ihjsg
xdcu outh fnqrc eihkss bdylm sjunib eihkss
jpnw ycimse rffu ismyce uhxl feai
yyodnh dvwshkx vulh pvxj ydhyno hyodny
vuuweg pfguvyu orhei orhei wrm amkr xecja lmnveth
wriwe xgtnvj tdmxf gadtqh bezjvz lifu
euft tchbm xmtlwji tchbm
cfi zudn zludl pwiu axe psed
dbtfwf ajxcudj uaxdjcj dxuajjc zouyy
fmycmej bqhe jyfecmm kkrv kcdvjoy
grtb uzs rkxzt hivhic brtg hwyc lsl iivhch qbcp
ymn xfpka hqm sldz dblvsoe
qrcapma hntgmy difrkpk difrkpk xlsph
flvqh akcw boxrz ywhq boxrz esnxzv boxrz
zrvh jskaw mfs fkj
abveb qxfnlfq abveb kbwiyvd abveb
pgarl nbfrenx rnxgx bdlkix liltdm dzcokeg fubupcg iwp xfayp obfaz nevfw
nuhvaci blyv fcsp adlanka sjy syj ysxl
avwakn dkoya yzuszuk lqrr oqfyd dmgbhd lqrr
pxa mcvtoug nlweso yffqc dtuagcd ovvrkz ggfhw wnlseo bpqbn ohxzs rxzo
djkcl kbgyfir ogquot uoqotg jtmyd ohudvle xrnbt yvsln wykqt hntc xlrhqrb
ykt tkxfmd exas kty
zebstke msbbndq itmli ubexmht vekvd xbmb iajbj wac sta
ptdg oftwo goiulah tfmsrqs jffxvnv ozaluj qlhqjy wyffa
xeq ezmlpw xgno xorvfo yzq vwif wsi
hdove hqbzhu pjrxlj uafuh rizlb advmkca
jzk ddoisdh tfjh yuvikps ixpkf hnu
kixa djx uksr ogxty dxj clda ukrs
xgiy diwbvn vphdbg qnelyz tqptqig lenyzq ecsswj
alx awj fpasmmg zukuh qaanvb too nvskuk too gnria
suo suo brw nazq suo dqv
tan uxiz oqa xyezcd lsaicjr bosiak rmmh
bidpomf dimcj qekero wbrc lewt kmgmlao
bciacj eye lxfpef cbdshd dhdsbc qwnhil iuokc
zduefht lrgfjn nclksm wpjpjr hkeqd oprsjcw
chhdr bram swdfjr yikqra xkzsloc otptp agec hhdrc uofljf toppt wpbyrwo
bwlpb nishr knnrysj bvr ftnb iedskch weo
czo hsfp wblh cru kzalun intt
jvob rppz rkwv hgyhrqg
sgo hued jnygge izf ztan kjgpcn fagff jsi ijcxzoi tgqjjp tgqjjp
ltjq zidjy rfmy yevuaa nlhfyg xytdtle wsqvzzx wfflboo nawhv golhf xhsti
bmtzlml xcbsquq vnfsux voep lkss ioim
ntfffh gcncwu mmymn wkwlswa gcncwu iaeyumz
kcgdm rbaau cwsoya pznnnn xzz zbbdlhw zxuelq xzz pjeq
xrmnuct kwvykx khxr ioua xnmtrcu xrnctum ujq imnt ecee
xjsgx fby fby fby ggtpgdm jqvuj qshewki tkml ymsazcq
sdbyhwg kewtrte novhdcp wbuaoh dtytgtx zez whygbds hpg
tjvaqo yrycda yrycda ldbp yrycda
kloi tmsocmx dza sqtxc wgevs zlevs vtm
ftnx drvdm ryjfdgw nerynh cwfjpa mddvr
wsqjyn svg ncw aesn hvuq vybajti aesn bql atxhp ipu
eye romgxj gumuke jwi jrf dtt kcj wmg waw
ptltud oymklv fgnmbc ete apanovb vpt vyospi
clkguhu rbxs lxtnmy ferdx qbmrpg pvojnj zbcffbp
itngp dvtlq fzxp cxrf gbxxqp aafls pfe bpxgxq
nmikrui ddsq srfilr gnuvghu mwnacz nlbdm zcjm uylgev umzu mftz nmikrui
bow jmnxyen bow hvz
lksibxk lefzh lksibxk nkxsi nkxsi pldvhk
osjlzns pihvr zpeu zxjgjb xplykfk xplykfk
hajmfss cardd kaddjw uicfde taue
rgwdjra sgifh ggt mpzx usghkos oob fvzx ghnyxr sblcif
dtu gnihpry kjdpiny xvax itmluk fxvgaap bei xuq wzcy rhb hailtgo
wwob ueldq ueldq glxc umimwv onu dxhmhis ebottoa lnysfiu
zfbyi eyq etaj idpbkf
qshcfjb ozzqigv raztm ymcv sgivwoc kightf dcaglk udah fdm
jmxr jrcnck enffwfl jycc jmxr cylnigo enffwfl
bkslhv tykqw tykqw mbeqrbt tykqw
vogf nhqltpt nhqltpt vogf kpc
ryayz ddktu rfhkmx xok xninjcm ijcrw fxu
cmezfj zaamjrs whlcuoo mug lcaqhkb ymkdci qexa onhgk pgy
hcrcok qri fki wbiog ptj pmgtdt
xsl mpfxwbz bmzxpwf hrysu bmfxwzp xfja
gybzho ktokndy rzkbr jcnp ahicq weccg pgrodkt che vaglyn omhmpo
vdv bngjox srs faymg xrmf enseu aygfm gvsd
nuzi xodkbag eevovl bfjuv nuzi xmejqn
kcswegw bpa dgil insf insf
stg tklrut poi knurfpf
pcs dgirfie yep lvkfk ype hntt athvad clfybsq ofjhegj epy qwawns
wjtpgd wjtpgd vxnapp mwyfsm vxnapp rvcswcs jksa
ckzslrg wdzeimw cqhp nfgk zgukvd yyt tra erkx wdzeimw
hsww avl vkmzej hsww
mum oczj jfew rag zjoc wjfe yqynjqt cbkcsgo mri
vjhfqdi vjhfqdi npfa pzdmy utlyw bwvbfm nqdv iiap ygpky bwvbfm eocya
ewkqi ckb yviuro mqz vtrdam yzkqzv ppbj lhmj blkafo juxvwke lvewc
ljrewgx sutnb hfsavbu jofr ltml mjzkzz nmjii sutnb eonegt
cxzv nepyrb wmejdo vwqi aeqys
sbx fmne obzdz rdnfb gmb sbx ykcae hbzom ncwju rhpiao obzdz
lsgfun cbmfjwk fya ktzxbwt
ica bpsk bwjwkp obloxdx uwoqdo bnnhjuc tlsx qtaacp bdooxxl jamy ade
psus wmtkg ikvfx fkvesj upqlhfs ueje nyt abxvo
adlbl hzskbrp ooht nps
wtcgnvy nvqtvx tvgnycw ntvcygw kkxcp zyjmpbh
xfxww xsddqe ewvmgw qxqwy wpabtz ppe zuiw zubcc onaqii
kkaeec xhcakul wrrvi dtlqfy ahqdilw bnt gwimw espaivx nam yfv
lxz jtc nkwgz nbgsao olsck emtltf xidwcvm lcjxq
eav dzh hnbp hnbp yeg
egaq yvat kavsige csar zsi sptai
pofijc ibdnoe caoazp azlnjk dqp chik lowll iby gpvjv ohm
ors lexk zcneaj rmesx jman uqkb kvkq zfufmn
qgsyzxd hlm juerg ortfzw hxjzg
fxwy lcoc fyxw pzhynp yfn zdzrz
datmws ckwghgr gbtyf lqrpfgl mbgpd dyjilr fgybt hxpg
mxw facxdnu wxm urltwtf qfo wtpwrj
esa srypq jauwv dpm wdgqq hrke icvudq bdmubb ellhfjh ttpjjd gxmg
gvwvqwj cbzzuvj eckube adqinpa djutlue wcpw vrt ucqwu ekruwsn
fhj fst zmtb yhwk dxlbozs fcb vjvuxin dxlbozs rixdvu
egfoep cvq icd prwj icyg
aojaa ezmcuf udreyi bja cyrtpl wjl
gjeka bsbufp tbqqq vbmnqg sfqtgac odhq xzsxt
yse gujdr ugjdr sye
tax hntqw phf eixjwfh qkylnu nkyuql ugsuj
wyh egum zizhfc jrq htbyug lop dsu
exh vfdoosj ajrna jbiaz lqsgvks xklqgjv abtmdud
juqc ormfa sab tucsfln detqfo feg kifsion juqc ovhra
hvcrh oddhme omzmu vmy she xulvfa fecmgi
ayo gspge nkmy yblsj lrsre nkmy pwocjz gdexqqx ovovm
acy sqcz ijl htt yjsi rly vea bck
bniafe yore xnh rkcfd hxfuzw xlr nkzmmcs ekwggiu kgoboi wfuzxh hwfxuz
weq crkeq cccphe dtozviy kzkkdr yku cephcc ctq zbau dewpi
vfla rzpl bnmx uvggon foivrb fval
ziaove lawkpdn ddwl sxj krroj rqmffxv babb
bdw dsifr kuueet hugddwt piz dwb sjixveg kmsoknq
czl feyxf soyvbj tnmpjn kklwi akx nqepntc
nrmhc tkkn jrxgc jrxgc tkkn
ufzn mrhiapi qrme kjlf qrme xpp qrme loyzizz xqm coli
qvaoye mysv ydfxr iixrw
dql tqarux fxqfn haoinu lyati xml
kyve obatly dgfjt fjz sqrz xlbst lgwlt zovih aepy otrpl oifid
ymawam afgye lcnpkmv feilfws vonseh rxrdco
tqij kuawg dmova slds imdtb sjsafo ffkzzl pxxenva wuakg efbgx
yrwoaos vpw ijjpua jnbxl sev yvgdxzr mpqa vpe lboh sev
krwdtd uglxtcz mljcgdk lqj fgpfle nuui cqk exr nuu oyn
dwd nwt idhclm vgkh rpubq wybhapp
hskhgpy gzvz jztbr jwv vcx vdjmnjr jrsp
ikml ceuhcng biu zoo gra bnnforx abzan hwsmd lmki tsl yvogo
kqfc younaz azvgfz gesajr tmwxvyb vmcdu dclwh rfjwhic slfym
pbrhjml rsacryg jga qvgks neh fcq qmi mwb juezk mjteeg alkb
pcj ujstl fkrqm eeczrle hbkcvm upbo mrb qrspjt
jbq rrk xjl rgokbnx hor ogg szxqu hysy vqj piorq wtrtrdk
bnq ntvhcrf vrm puer kde xaxkja sfxgjf
pgcicus hqeqkkx xqekqhk qqkxhke
puquxi hmeaehh oxe tasipw qzyg hyvy wcmpwe
hvs fxq wvfy zjepsl dvrfxnc xnvg
xle crcuc qkhnv crcuc oedez bjw pmwq
xzzpiy cjwss jwscs apb bpa
ydjhhf yeltadb lwi cjdcb ovaox xrdm vkxub
zax xza admbc lvpzfeh auxn rwasj
kebx eild nrskdr meja jxczomh gcne

1092
data/2017/5.txt Normal file

File diff suppressed because it is too large Load diff

994
data/2018/1.txt Normal file
View file

@ -0,0 +1,994 @@
+5
-11
-1
-16
+12
+9
-15
+20
+4
+17
-4
-14
+6
-17
+6
-19
-12
+17
-6
-18
+1
+15
-14
+10
-4
-2
+5
+6
+8
+3
+17
-9
+18
-1
+17
-15
+7
-6
-17
-17
+19
+19
-13
+18
-15
+16
+7
-10
-5
+22
+8
-13
+4
+3
+19
+17
-19
-1
-11
+2
+1
-13
+1
+3
-14
+16
-9
+19
+13
-20
+6
+22
+10
+6
+15
-13
-13
-8
+16
+20
-5
+1
+7
+11
-13
+5
-16
-2
-4
+25
-5
-10
-12
-9
+16
-2
-19
-3
-12
+5
+17
+16
+11
+16
+10
+4
+3
+11
-12
+19
+3
+17
+15
-6
-6
-4
+3
+10
+8
+15
-7
+13
+3
+6
+2
+16
+20
+3
-11
+3
-11
+12
+6
+3
+11
+5
+2
+12
-4
-2
+4
+3
-4
+20
+1
+19
+14
+5
-16
-15
-16
-4
-10
-13
-10
-18
+10
-6
-7
-3
-2
-14
+12
-2
-6
-11
-5
-6
+20
-11
-1
+9
-1
+5
+6
+11
-19
-9
-14
-4
-6
-1
+2
-6
-12
+20
-12
-13
-9
-3
-7
-17
+14
-9
+20
-4
-8
-1
-6
+16
+6
-18
-12
+6
-22
-15
+10
+6
+20
-16
+1
-18
+4
+19
+9
-17
+1
+13
+21
+23
-4
+7
-16
+3
-4
-3
-17
-20
-10
-20
+16
+3
+14
-11
+3
-29
-1
+7
-18
+5
-7
-16
+6
-7
-15
+9
+22
-2
-21
-18
+1
+10
+13
+13
-24
-6
-22
-10
+9
+4
-8
-16
+3
-5
-19
-6
-11
+3
-8
-16
-14
-16
-15
-6
+3
+13
+8
-19
-18
-8
+9
-15
-14
-2
+18
-17
+2
+18
-6
-3
-19
+16
-4
+6
+21
-6
+7
+17
-8
-4
+6
+19
-2
+5
+20
-3
-6
+5
+5
-17
-18
+16
+4
+7
+6
+8
+6
-1
+10
-13
-4
-10
+8
-14
+17
+9
+2
-7
-22
-16
+20
-13
+8
-17
+1
+19
+14
+19
+11
-6
+25
+18
+19
+5
+20
+17
+4
-10
+47
+4
-1
+23
+24
-8
-10
+31
+19
-11
-17
+8
-24
+9
+32
+18
-1
+4
-13
+4
+17
-2
+11
+11
+4
-3
-3
+22
+19
+14
-21
+13
+9
-14
-16
+20
+16
-14
+5
-15
+12
-11
+1
+3
-24
-9
-9
-22
-12
-10
-7
-3
+12
+13
+17
-11
+35
+12
-9
+16
+22
-18
-18
+19
-8
+23
+19
+3
+8
+15
-2
+11
+14
+10
+15
+8
-1
+13
+1
+18
-11
+4
+4
+11
+9
-18
-9
+13
-18
+10
+3
-6
-5
-10
-11
-14
-2
-9
+3
-4
-6
+13
-2
-17
-4
+7
+6
-12
-7
+14
-6
-18
+19
-18
-2
-13
+6
-15
+14
+7
+9
-14
+9
-19
+1
+13
-2
-10
-11
+13
-6
-6
+19
+10
+17
-8
-7
+19
+16
-1
+7
+16
-15
-17
+12
+16
-2
+14
-3
-16
-17
-5
+16
+29
-3
-2
+13
-18
+15
-4
-14
-12
-16
-19
+39
-9
+19
+3
-11
+10
+12
+19
-4
+12
+13
+19
+3
-19
+9
-16
+10
+18
+12
-6
-2
-11
+20
+15
+15
+4
+12
-38
+9
+33
+24
+6
+4
-36
-47
-15
-13
-3
+1
+12
+14
+9
-32
+7
-16
-5
-29
+12
-2
+15
-12
-11
-39
-40
+3
-34
-5
+78
+4
+52
+1
+90
+112
+152
-80
+81800
-18
+15
-9
+11
+2
-5
+16
-5
+15
-1
+2
-14
-7
+12
-10
-9
+20
+14
-9
+12
+9
+13
+3
+11
+14
-3
+10
+8
+12
+5
+10
+1
+14
-5
+1
-4
-13
+9
+18
+17
+16
+9
-1
-10
+13
+13
+11
-18
+15
-9
-13
+3
+1
+11
-3
-10
+19
-11
+13
+12
-8
-10
-6
+13
+5
-13
-7
-1
+18
+7
+14
-2
+5
+1
+16
-7
+18
+13
-6
+18
-1
+12
-4
-10
+7
-15
-9
-7
-7
-6
+11
-16
+7
-4
+11
-4
-6
-14
+1
+6
-3
+2
+21
+12
-16
+18
-5
+17
+4
+19
+6
-13
+17
-3
-2
-17
+7
-3
-7
+14
+17
+8
+7
-17
+18
-15
-4
+7
+2
+1
-14
-1
-6
+9
-10
-4
+15
-14
-18
-14
-9
-11
+9
+3
+12
+1
+3
-10
-15
+7
+6
+13
+9
+7
-4
+9
-14
+21
-9
+24
+10
+6
+6
-19
+22
-10
-18
+10
+14
-4
+3
+7
+14
+11
+16
-10
+11
-9
-5
-6
-2
-15
+3
-16
+19
+8
+2
-17
+3
+5
+14
-16
-4
-5
+1
-3
+4
+6
+18
+16
+4
-18
+6
+10
-6
+1
+6
+9
+17
-8
-15
-12
+1
-6
+4
+12
+2
+17
-9
-7
+10
+12
+17
+8
+15
+7
-18
-1
+4
+13
-3
+16
+4
+2
-8
-5
+14
+10
+18
-15
+19
-11
-4
-16
+13
+16
-15
+10
-20
-7
-15
-10
-2
-6
+19
-3
-9
-18
+12
-8
+3
+13
+20
+18
-16
+15
+12
+1
-18
+10
-14
-17
-7
-9
-20
+8
-9
+7
-11
-19
+7
-14
+6
+4
+14
+8
-11
+2
-1
-19
+16
+9
-10
+20
+12
+11
+13
-3
-2
+3
-20
+6
-17
+3
-9
-6
-16
+7
+7
-23
-6
+14
-3
-31
-18
-19
-12
-26
+23
+9
-7
-10
+22
+17
+17
-7
-8
+9
+28
+5
+24
-28
+36
+37
+7
+12
+19
+15
-3
-20
+17
+18
+4
-8
+9
-4
-2
-19
+11
-1
+3
-7
+8
+9
-8
+19
+9
+12
-11
-5
-13
+9
-6
+7
+17
-13
+16
+10
-5
+20
+6
-1
+17
-14
+10
+18
-1
+3
-10
-4
-10
-10
-16
-2
+7
+16
-12
+6
+8
+22
+7
-6
-13
-14
+10
-1
-21
-1
+8
-15
+9
-17
-2
-21
+4
-19
-13
-8
+26
+4
-27
-8
+2
+30
-11
-82484

250
data/2018/2.txt Normal file
View file

@ -0,0 +1,250 @@
qysdgimlcaghpfozuwejmhrbvx
qysdtiklcagnpfhzuwbjmhrtvx
qysdtiflcsgnpfozuwejmhruvx
qkshtiklnagnpfozuwejmhrbvx
qysdtnklcagnpmozuwejmhrrvx
qysdttkecagnpfozuwijmhrbvx
qyedtiklcagnvfozuweymhrbvx
qyzdtikzcagnpfozuwejmhqbvx
qysdtiklcagnpfozlwedmhqbvx
qjsdtiklcagnpfozubejmhrbvq
qysdtiklcagnpfozvvejmhrbex
qdsdziklcagnpfouuwejmhrbvx
qysttikqccgnpfozuwejmhrbvx
qysdtiklcagnpbozwwecmhrbvx
qysdtiklcagnpfozuwexmmrjvx
nysdtiklcqgjpfozuwejmhrbvx
cysdoiqlcagnpfozuwejmhrbvx
qysdthxlcagnpfozuwejmcrbvx
qyswtiklcrgnpfozuwejmhrbvf
qysdtiklcagnpfozurejmhvpvx
qysdtiklcegnpfdzuwejghrbvx
qysdtjkluagnpfozuwenmhrbvx
qysdtimlcagnpjwzuwejmhrbvx
qyrdtiklcegnpeozuwejmhrbvx
qysdmiklcagnpfokswejmhrbvx
qysdtizlcagnpiozuwecmhrbvx
qysdtiklcignafxzuwejmhrbvx
qycdjiklcagnpzozuwejmhrbvx
qysdtiklcagnpjozuwepihrbvx
qyedtiklcrgnpfozuvejmhrbvx
mysdtikrcagnpfozwwejmhrbvx
qysdtiklcagnpfozuhcjmhrbsx
qmsdtiklcagnpfozuwehmhrevx
qgsdtiklcagnpfozuwejvhrbvp
lysdtikleagnpfozuwejmhrnvx
qxsdtivlzagnpfozuwejmhrbvx
qysdtiklcoggpfozuwebmhrbvx
wysdtiklcagnpfozuwejmornvx
jysdtiklvagntfozuwejmhrbvx
qmsdtiklcagnpfozuwejmrrbax
qysdttklcagnpfoiuwejmhrbvh
qysdtnklcaenpfozupejmhrbvx
qysdtoklcagnpfozuwexmhrbvq
qysdtiklcagnpuoeuwejmhrjvx
iysdtitncagnpfozuwejmhrbvx
qysdtixrcagnprozuwejmhrbvx
qyfdtiplcagnpfouuwejmhrbvx
qysdtmklcagnpfowuwejmhrbox
qysdtiklcagnxiozuwejphrbvx
fysdtiklcagnptozuwejmhrbvo
qysdqiklcagnplozuwejmhmbvx
qysdtwkacagnpfosuwejmhrbvx
qysdtitlcagnpfozufajmhrbvx
qysdtcklcagopfdzuwejmhrbvx
qmfdtdklcagnpfozuwejmhrbvx
qysztiklcaonpfozuwejmhrbfx
qygdtiklcggnpfozuwejmhrhvx
qysdiiklcagnpfozukejmcrbvx
qysdtrkloagnpfozuwujmhrbvx
qycdtiklcagnpfozywejmhrlvx
qgsdtikdcagnpfozgwejmhrbvx
qyudtikleagvpfozuwejmhrbvx
pysdtiqlcagnpfozuwejmarbvx
qysdtiklcaenpfozuwehahrbvx
qhsttiklcagnpfovuwejmhrbvx
zysdtikqmagnpfozuwejmhrbvx
rysdtikacagnpfozuwevmhrbvx
zysntikllagnpfozuwejmhrbvx
qysttimlcagndfozuwejmhrbvx
qysdtiklcaxopfqzuwejmhrbvx
qysdtislcagnpfozuwejmtrbnx
qysdviklcagnpfozswejmhibvx
qmsdtiklrygnpfozuwejmhrbvx
qysztiklcagnpfozuwejmorbrx
xysdtiklcagnzwozuwejmhrbvx
qysjthklcagnpfozowejmhrbvx
qysdtiklcagnpfofxwemmhrbvx
jysdtiklcagnpfozfwehmhrbvx
qysdtgklaagnpfozhwejmhrbvx
qqsdtiklcaenpfozuwejmhrvvx
qysdtikloajppfozuwejmhrbvx
qysdtiklcagnpwozuwejmhrhsx
qpsdtiklcapnprozuwejmhrbvx
qyzdtiklcagnpcozuwejmhrbvc
qusdhiklcagnpfozuwejmhrbxx
qysdtiklcagnpfozqwejthrvvx
qysvtiklcagnpfoiuwedmhrbvx
qgsdtiklcagvpfozuwejmhrbvf
qysdtikxcawnpfozuwejmarbvx
qyvctiklcaynpfozuwejmhrbvx
qyyltiklnagnpfozuwejmhrbvx
oysdtillcagnpfozuwejmnrbvx
qysdtiklcagnpfozuvmjmhrbzx
qykdtikocagnpfhzuwejmhrbvx
qysdtvkloagnpfozuwejmkrbvx
qysetiklcagnpfozuwejmhrxvh
qysdtiklcavnpfuzuwejmhrbvh
qmndtiklcagnpfojuwejmhrbvx
qysdtialcagnpfozuwejmdrqvx
qysdtiklcagnpfozuwejtzrbvv
qysdtiklxagnpyozufejmhrbvx
qysdtiklcagnpfgzewejahrbvx
qysdtiklcagppsozuwejmhrdvx
qykdtiklcainpfozuwejqhrbvx
qysdtiklcagnpfszxwejmhubvx
qyrdtiklcagkptozuwejmhrbvx
qysdsiklcagnpfozsvejmhrbvx
qypdtiklcagypfozuwejmhrlvx
qssdtiklcagnpfozuwqjmirbvx
qyshtiklcagnpfrzuwyjmhrbvx
qysdtiklcagnpfqzuwenmgrbvx
qysdtiklcagnpfonuwejmhkwvx
qysdhiklcagnpfokuwejmhrfvx
jysrtiklcaenpfozuwejmhrbvx
qysdtiilcagnpfozuwejmhcbvl
qysdtiklcagnheozuwejmhrbvn
qysdtikucagwpfojuwejmhrbvx
qysdtinlctgnpfozuwujmhrbvx
qysdtiklcagnpiozuwejmtrbjx
qysktiklcagqpfozuwcjmhrbvx
qysddiklcagnpfozpwejmhrbvh
wysdtiplcagnpfozuwejyhrbvx
qysdtiklcagnpfjzlwejmhrcvx
qysdtikleagopbozuwejmhrbvx
qysdtqklcwgnpfozuwejmirbvx
qysdtiklcugnpmozuwejmhrbvp
qysdtiklcagnpfozpwejmnrbvz
qysdtiklcagnpcozuwejmhbbmx
uysitiklcagnpfozewejmhrbvx
qykdtiklcasnpfozuwejdhrbvx
qyjdtiklcagnpqozuzejmhrbvx
qysdtiklcagaifozuwejmhrbvh
qysdtiklcagnhfozuwyjrhrbvx
qysetiklcaanpfozuwyjmhrbvx
qyfdtiklcagnphozulejmhrbvx
qysdtikkcrgnpfozuwejmhpbvx
qysdtiklcarnpfdzuwejmhrbvq
qysdtiklcfyrpfozuwejmhrbvx
rysdtitlcagnpfoznwejmhrbvx
qysdtiilcagnffozugejmhrbvx
qysdyifloagnpfozuwejmhrbvx
qysdtiklcegnpfozuwejmlrcvx
qysdtiklcagnpfozuwajmhbbqx
qysptrklcarnpfozuwejmhrbvx
qysdtiklcagnldozuwejmhwbvx
qysdtiklczgqpfozuwejmhobvx
qyxdtiklcagcpfoiuwejmhrbvx
qysatiklczgnpfozawejmhrbvx
qysduiklcagnpfoziwejyhrbvx
qysdtgklqagnpfozujejmhrbvx
qysdtiqlcagnpfozzdejmhrbvx
qysdtiklcngnpfofuwejmzrbvx
qysdtiklcagnyfozuwejrnrbvx
qysdtiplcagnpfozowmjmhrbvx
qyswtiklcagnplozuwedmhrbvx
qyseiiklcagnpfozuwejmhibvx
qysdtiklcagnpfozutusmhrbvx
qysdtimlcagnpfozccejmhrbvx
qnsdniklcagnpfobuwejmhrbvx
qysrtiklcagnpfofuwejmhrbyx
qyzdtiklcagnpfoizwejmhrbvx
qysdtjslcdgnpfozuwejmhrbvx
qysdtiklcagnpxoyuwejmrrbvx
qysdtikllagnpfmzuwbjmhrbvx
qysdtitlcagnkfozuwejwhrbvx
qymdtiklcggnpfozuwejmzrbvx
qysdtiklclfnpfozuhejmhrbvx
qysdtyklcagnpfozuwejmhhbix
qysetiklcagnpfozuwejmhrspx
qysdipklcagnpfozuwejmhrbex
uysgtiklcagnpmozuwejmhrbvx
qysdtiklmagnpfozuwqlmhrbvx
qysdtiklcagnyfozxwejmhrmvx
qysutillcagnpfozuwejmhrbbx
casdtiklcagnpfopuwejmhrbvx
qesdtiklctgnpfmzuwejmhrbvx
qysdtiklcagopfozjwejmdrbvx
jzsdtiklcagnpfozuwejmurbvx
qysdtiklcjgnpfonuwejrhrbvx
qysdtiklcrgnpnozuwejmhqbvx
oyhdtiklcagnpfozuwekmhrbvx
qysstiklcagjpfozuwejmhrbnx
qyudtiklsagnpsozuwejmhrbvx
qysdtiilcagnpfozusejmhrbva
qysdtiklcaknpfozmwejmhgbvx
qysdbiklcpgnpfozuwejmrrbvx
qybdtiklcagvpfokuwejmhrbvx
qysatiklcagnpwofuwejmhrbvx
qysdtiklcadnpfonuwejmcrbvx
qysdtijfcagnpfozuvejmhrbvx
qysdtiklcagnpfhluuejmhrbvx
qysdtiklcagnpfoguwejqhrwvx
qlsdtiklcagnpfojuwehmhrbvx
qyhdtiolcagnpfozuwejmhrzvx
qmsdtiklcagnppozuwpjmhrbvx
qysdtiklvvgnpfvzuwejmhrbvx
qysdtiklcagnpfszuwajmhrcvx
qysdtiklcagnpfmzuwekmhrbyx
qysdtiklcagwpfozumevmhrbvx
qysdtaklcagnpfozuwejvhzbvx
qysotiklcagntffzuwejmhrbvx
qysdtiklcagnpfowuweqmhrivx
qysdtrkloagnxfozuwujmhrbvx
qasdiiklcagnpfozuwegmhrbvx
qysbtiklcagnpfozuwejthrbhx
hysdtikllagnpfozuwejmhrbbx
qyqdtiklcagnpsozuwejmcrbvx
qysdtiklcagnpiqzuwejmhrbux
qnsdtiklcagnpfozdwejmhbbvx
qysjbiklcagzpfozuwejmhrbvx
qysdtiklcagnpfifuwejmhrbvg
qysdtiklcaggpkozunejmhrbvx
qxsdtiklcavnpfozuwfjmhrbvx
qysdtikycabnpfkzuwejmhrbvx
qyswtzklcagnpfozuwejmhrlvx
qysdtikqcagnpfozuwejrhnbvx
qysdtiplaagnpfozuwejmhruvx
qjcdtiklcagnpfozujejmhrbvx
nysdtyklcagnpfozutejmhrbvx
qysrtiklcagnpfnzuwejmhrbdx
zysdtielcagnpfozuwezmhrbvx
qysdtikpvagnpfozuzejmhrbvx
qysdwiklcagnpfozueejmhrlvx
dysdmiklcagnpfozuwejzhrbvx
qysdtiklcjgnpfozuweimhmbvx
qysdtiklciynpyozuwejmhrbvx
qksdtiklcagnpbozubejmhrbvx
qysdtiklkagnpfozuwejmhrjvb
yyxdtiklcagnpfomuwejmhrbvx
qysdtiklcagnfnozuwejmhrbvv
qysdtzklcagnpfozuwejmhrmvb
qysduiklclgnpfozuwejmhrbvn
qyndtmklcavnpfozuwejmhrbvx
qisdkiklcagnpfozuwqjmhrbvx
qysdtrkycagypfozuwejmhrbvx
qhsdtiklcwgnmfozuwejmhrbvx
qysdaiklcannpfozupejmhrbvx
zysdtiklcagnpjozuwejmhrbwx
qysdtikxcagnpfozuwejmcrxvx
qysdtzklcagnpfozewejmhrbvk
qysdwtklcagnhfozuwejmhrbvx
qysdtqklcaenpfozuwejmdrbvx
qysdtiklcagnpfozuoeemhqbvx
nysdtikocagnpfozuwejmhwbvx
qysxtiklcagnpfozqwejmhrbax
qysdtielcasnpfozuwejmhsbvx
qysdtiklcaknpfozuwejcwrbvx
qysytiklcagnpfozdfejmhrbvx
qysdtiklcagmpfozuwejmgrbox
qysdtielcagnpfpzuwejhhrbvx

1409
data/2018/3.txt Normal file

File diff suppressed because it is too large Load diff

905
data/2018/4.txt Normal file
View file

@ -0,0 +1,905 @@
[1518-09-16 23:57] Guard #1889 begins shift
[1518-04-16 00:03] Guard #2897 begins shift
[1518-04-29 23:57] Guard #1663 begins shift
[1518-05-27 00:47] wakes up
[1518-04-27 23:50] Guard #661 begins shift
[1518-08-29 00:58] wakes up
[1518-09-26 00:48] falls asleep
[1518-07-16 00:43] wakes up
[1518-08-17 00:26] falls asleep
[1518-08-17 00:53] wakes up
[1518-09-02 00:55] falls asleep
[1518-10-25 00:02] Guard #661 begins shift
[1518-08-07 00:00] Guard #61 begins shift
[1518-11-06 00:52] wakes up
[1518-08-24 00:33] falls asleep
[1518-09-12 00:32] wakes up
[1518-08-29 00:46] wakes up
[1518-09-01 00:45] wakes up
[1518-09-16 00:01] Guard #1291 begins shift
[1518-06-13 23:46] Guard #3307 begins shift
[1518-05-01 00:49] wakes up
[1518-09-29 00:05] falls asleep
[1518-11-04 23:54] Guard #1433 begins shift
[1518-09-19 00:03] falls asleep
[1518-10-31 23:54] Guard #409 begins shift
[1518-08-02 00:53] wakes up
[1518-05-23 00:08] falls asleep
[1518-10-04 00:43] falls asleep
[1518-08-26 00:43] falls asleep
[1518-04-14 00:31] wakes up
[1518-04-11 23:58] Guard #1471 begins shift
[1518-05-11 00:04] falls asleep
[1518-06-14 00:04] falls asleep
[1518-07-24 00:54] falls asleep
[1518-08-23 00:04] falls asleep
[1518-09-02 00:01] Guard #1433 begins shift
[1518-04-10 00:49] wakes up
[1518-08-09 00:20] wakes up
[1518-05-28 00:41] wakes up
[1518-05-24 00:02] Guard #2633 begins shift
[1518-09-14 00:00] Guard #3121 begins shift
[1518-08-11 00:17] falls asleep
[1518-05-12 00:47] falls asleep
[1518-06-27 00:47] wakes up
[1518-11-13 00:20] falls asleep
[1518-06-24 23:59] Guard #3121 begins shift
[1518-09-14 00:56] wakes up
[1518-11-19 00:58] wakes up
[1518-11-21 00:38] falls asleep
[1518-06-15 00:02] Guard #409 begins shift
[1518-11-17 00:31] falls asleep
[1518-04-06 00:40] wakes up
[1518-09-06 00:42] falls asleep
[1518-11-11 00:37] falls asleep
[1518-06-19 23:49] Guard #2819 begins shift
[1518-07-12 23:53] Guard #3037 begins shift
[1518-10-11 00:50] wakes up
[1518-11-13 00:40] wakes up
[1518-10-15 00:52] wakes up
[1518-06-14 00:07] wakes up
[1518-10-25 00:54] falls asleep
[1518-05-25 00:59] wakes up
[1518-05-17 00:33] falls asleep
[1518-08-03 23:54] Guard #2459 begins shift
[1518-10-03 00:17] falls asleep
[1518-09-22 00:34] falls asleep
[1518-05-23 00:29] falls asleep
[1518-05-08 00:14] falls asleep
[1518-07-15 00:19] falls asleep
[1518-06-26 00:48] wakes up
[1518-09-12 00:30] falls asleep
[1518-07-11 00:38] wakes up
[1518-10-11 00:43] falls asleep
[1518-09-30 00:07] falls asleep
[1518-10-15 00:20] falls asleep
[1518-10-27 00:50] falls asleep
[1518-08-11 00:02] Guard #1931 begins shift
[1518-06-25 00:58] wakes up
[1518-11-13 00:02] Guard #2447 begins shift
[1518-10-27 00:41] wakes up
[1518-04-24 00:05] falls asleep
[1518-06-30 00:00] falls asleep
[1518-04-23 00:58] wakes up
[1518-11-19 00:42] falls asleep
[1518-07-18 00:52] wakes up
[1518-08-22 23:46] Guard #61 begins shift
[1518-07-05 23:50] Guard #1889 begins shift
[1518-05-20 00:04] falls asleep
[1518-07-12 00:30] wakes up
[1518-10-21 00:10] falls asleep
[1518-10-12 00:02] Guard #947 begins shift
[1518-06-28 00:35] falls asleep
[1518-11-09 00:33] wakes up
[1518-11-17 00:00] Guard #409 begins shift
[1518-11-07 00:12] falls asleep
[1518-06-04 00:59] wakes up
[1518-06-30 00:33] falls asleep
[1518-09-02 00:22] falls asleep
[1518-11-06 23:59] Guard #2459 begins shift
[1518-09-27 23:52] Guard #947 begins shift
[1518-10-27 00:35] falls asleep
[1518-07-22 00:00] Guard #1889 begins shift
[1518-06-21 00:53] wakes up
[1518-05-06 00:50] wakes up
[1518-06-11 23:58] Guard #1931 begins shift
[1518-10-08 00:00] Guard #1433 begins shift
[1518-09-09 00:25] wakes up
[1518-04-23 23:47] Guard #1291 begins shift
[1518-04-09 23:59] Guard #61 begins shift
[1518-10-02 00:38] wakes up
[1518-06-30 00:14] wakes up
[1518-06-14 00:44] falls asleep
[1518-07-19 00:04] Guard #1283 begins shift
[1518-09-08 00:02] Guard #467 begins shift
[1518-06-19 00:56] falls asleep
[1518-08-08 00:10] falls asleep
[1518-11-19 00:36] wakes up
[1518-11-02 00:42] falls asleep
[1518-05-24 00:40] wakes up
[1518-06-08 00:43] wakes up
[1518-04-23 00:57] falls asleep
[1518-08-26 00:33] falls asleep
[1518-10-06 00:36] falls asleep
[1518-05-02 00:59] wakes up
[1518-07-29 00:49] wakes up
[1518-08-24 00:39] wakes up
[1518-05-07 00:02] Guard #947 begins shift
[1518-11-11 00:12] falls asleep
[1518-11-17 00:32] wakes up
[1518-10-09 00:19] falls asleep
[1518-08-13 00:48] wakes up
[1518-09-02 23:56] Guard #947 begins shift
[1518-09-20 00:02] Guard #3121 begins shift
[1518-10-12 00:47] falls asleep
[1518-08-01 00:10] falls asleep
[1518-10-01 00:47] wakes up
[1518-05-11 00:05] wakes up
[1518-09-13 00:16] wakes up
[1518-08-24 00:59] wakes up
[1518-08-26 00:47] wakes up
[1518-08-29 00:30] falls asleep
[1518-08-15 00:04] Guard #2447 begins shift
[1518-05-04 00:56] wakes up
[1518-09-07 00:55] wakes up
[1518-07-11 23:53] Guard #409 begins shift
[1518-11-20 00:31] falls asleep
[1518-05-07 00:18] falls asleep
[1518-05-04 00:30] wakes up
[1518-09-24 00:42] wakes up
[1518-05-18 00:21] falls asleep
[1518-07-18 00:02] Guard #1663 begins shift
[1518-04-16 00:35] wakes up
[1518-10-19 00:46] falls asleep
[1518-06-21 00:05] falls asleep
[1518-08-30 00:34] falls asleep
[1518-09-23 00:45] falls asleep
[1518-06-04 00:53] falls asleep
[1518-11-07 00:34] wakes up
[1518-09-07 00:45] wakes up
[1518-07-01 00:48] falls asleep
[1518-10-10 00:47] wakes up
[1518-05-02 00:46] wakes up
[1518-06-14 00:52] wakes up
[1518-07-17 00:31] falls asleep
[1518-05-19 23:53] Guard #3307 begins shift
[1518-09-13 00:03] falls asleep
[1518-07-02 00:54] wakes up
[1518-05-22 00:29] falls asleep
[1518-10-19 23:56] Guard #2447 begins shift
[1518-09-26 00:56] wakes up
[1518-04-10 00:11] falls asleep
[1518-09-28 23:52] Guard #2819 begins shift
[1518-08-08 23:48] Guard #1663 begins shift
[1518-05-04 00:37] falls asleep
[1518-10-21 23:58] Guard #3491 begins shift
[1518-09-15 00:42] falls asleep
[1518-06-24 00:40] falls asleep
[1518-09-22 00:53] wakes up
[1518-04-08 00:01] falls asleep
[1518-06-01 00:36] wakes up
[1518-05-15 00:04] Guard #2633 begins shift
[1518-07-03 00:11] falls asleep
[1518-07-20 00:30] falls asleep
[1518-09-09 00:53] wakes up
[1518-04-12 00:57] falls asleep
[1518-10-19 00:00] Guard #2633 begins shift
[1518-11-05 00:53] wakes up
[1518-10-26 00:19] falls asleep
[1518-07-07 00:04] falls asleep
[1518-05-25 00:39] falls asleep
[1518-04-11 00:59] wakes up
[1518-07-27 00:04] Guard #2459 begins shift
[1518-08-17 00:40] wakes up
[1518-09-04 00:32] falls asleep
[1518-04-25 00:00] Guard #1889 begins shift
[1518-11-02 00:51] wakes up
[1518-05-22 00:30] wakes up
[1518-04-19 00:56] wakes up
[1518-09-16 00:39] falls asleep
[1518-09-03 00:44] falls asleep
[1518-07-08 23:56] Guard #661 begins shift
[1518-10-02 00:58] wakes up
[1518-04-12 23:59] Guard #2633 begins shift
[1518-09-26 23:56] Guard #2633 begins shift
[1518-08-26 00:40] wakes up
[1518-08-21 00:01] falls asleep
[1518-10-27 00:56] wakes up
[1518-06-22 00:01] Guard #467 begins shift
[1518-06-17 00:59] wakes up
[1518-09-17 00:36] falls asleep
[1518-04-24 00:21] wakes up
[1518-09-04 00:45] wakes up
[1518-06-07 00:48] wakes up
[1518-10-16 00:57] wakes up
[1518-06-09 00:11] falls asleep
[1518-05-06 00:03] Guard #1283 begins shift
[1518-09-11 23:58] Guard #409 begins shift
[1518-09-10 00:04] falls asleep
[1518-10-02 00:50] falls asleep
[1518-05-23 00:54] wakes up
[1518-08-21 00:54] wakes up
[1518-10-12 23:56] Guard #61 begins shift
[1518-07-13 00:42] wakes up
[1518-06-08 23:59] Guard #2633 begins shift
[1518-08-03 00:25] wakes up
[1518-04-26 00:32] falls asleep
[1518-04-09 00:39] wakes up
[1518-07-11 00:20] falls asleep
[1518-07-01 00:21] falls asleep
[1518-07-17 00:04] Guard #3121 begins shift
[1518-05-10 23:51] Guard #2459 begins shift
[1518-11-17 00:55] wakes up
[1518-05-23 00:25] wakes up
[1518-09-12 00:23] wakes up
[1518-06-26 00:00] Guard #2897 begins shift
[1518-08-26 00:03] Guard #1433 begins shift
[1518-10-07 00:32] wakes up
[1518-11-22 00:37] falls asleep
[1518-06-08 00:15] falls asleep
[1518-04-26 23:58] Guard #1291 begins shift
[1518-05-24 00:50] wakes up
[1518-10-19 00:56] falls asleep
[1518-08-19 00:26] falls asleep
[1518-04-30 23:56] Guard #1471 begins shift
[1518-06-16 00:07] falls asleep
[1518-06-04 00:00] Guard #3307 begins shift
[1518-04-21 00:00] Guard #1283 begins shift
[1518-10-29 00:14] falls asleep
[1518-07-05 00:06] falls asleep
[1518-07-09 00:28] wakes up
[1518-06-20 23:50] Guard #3307 begins shift
[1518-04-19 00:04] Guard #2897 begins shift
[1518-07-08 00:26] wakes up
[1518-07-23 00:24] falls asleep
[1518-05-16 00:55] wakes up
[1518-07-19 00:51] wakes up
[1518-10-13 23:49] Guard #61 begins shift
[1518-06-28 00:29] falls asleep
[1518-11-12 00:17] wakes up
[1518-07-03 00:43] wakes up
[1518-05-17 00:05] falls asleep
[1518-09-10 00:48] falls asleep
[1518-06-11 00:18] falls asleep
[1518-04-09 00:01] falls asleep
[1518-09-12 00:13] falls asleep
[1518-06-11 00:01] Guard #1471 begins shift
[1518-06-17 00:00] Guard #3307 begins shift
[1518-06-19 00:40] falls asleep
[1518-10-01 00:43] falls asleep
[1518-04-30 00:19] falls asleep
[1518-04-22 00:53] wakes up
[1518-11-15 00:03] Guard #419 begins shift
[1518-08-07 00:54] falls asleep
[1518-06-13 00:53] falls asleep
[1518-11-08 00:34] falls asleep
[1518-06-13 00:58] wakes up
[1518-10-26 00:47] wakes up
[1518-04-20 00:33] wakes up
[1518-07-24 00:01] Guard #1291 begins shift
[1518-04-12 00:50] wakes up
[1518-11-02 00:23] falls asleep
[1518-09-25 00:50] falls asleep
[1518-09-24 00:46] falls asleep
[1518-05-04 23:58] Guard #661 begins shift
[1518-05-27 00:07] falls asleep
[1518-09-17 00:23] wakes up
[1518-10-11 00:55] wakes up
[1518-09-15 00:27] falls asleep
[1518-10-30 23:52] Guard #1291 begins shift
[1518-10-23 00:39] wakes up
[1518-09-20 00:48] wakes up
[1518-04-07 00:04] falls asleep
[1518-05-03 00:39] falls asleep
[1518-07-26 00:57] wakes up
[1518-06-23 00:00] Guard #947 begins shift
[1518-06-18 00:33] falls asleep
[1518-08-29 23:58] Guard #2633 begins shift
[1518-06-08 00:33] falls asleep
[1518-05-25 00:57] falls asleep
[1518-05-09 00:37] wakes up
[1518-11-21 00:40] wakes up
[1518-09-30 00:56] falls asleep
[1518-08-01 00:00] Guard #61 begins shift
[1518-06-05 00:54] falls asleep
[1518-09-28 00:03] falls asleep
[1518-05-09 00:09] falls asleep
[1518-05-24 00:21] falls asleep
[1518-06-07 00:04] falls asleep
[1518-07-25 00:07] wakes up
[1518-06-26 00:25] falls asleep
[1518-11-17 00:47] falls asleep
[1518-09-25 00:40] wakes up
[1518-05-21 00:35] falls asleep
[1518-07-28 00:34] falls asleep
[1518-09-04 00:01] Guard #2633 begins shift
[1518-06-12 23:56] Guard #2897 begins shift
[1518-11-11 00:45] wakes up
[1518-09-02 00:56] wakes up
[1518-06-14 00:18] wakes up
[1518-11-13 23:57] Guard #2459 begins shift
[1518-06-21 00:47] falls asleep
[1518-05-25 23:48] Guard #2633 begins shift
[1518-07-01 00:56] wakes up
[1518-04-06 00:18] falls asleep
[1518-07-08 00:12] falls asleep
[1518-08-04 23:56] Guard #947 begins shift
[1518-07-06 23:49] Guard #1663 begins shift
[1518-09-08 23:51] Guard #3307 begins shift
[1518-07-13 00:01] falls asleep
[1518-07-24 00:30] wakes up
[1518-05-10 00:38] wakes up
[1518-04-06 23:54] Guard #3121 begins shift
[1518-10-05 00:01] Guard #3121 begins shift
[1518-06-01 00:04] Guard #3307 begins shift
[1518-10-02 00:12] falls asleep
[1518-09-01 00:40] falls asleep
[1518-05-01 00:31] falls asleep
[1518-10-10 00:55] falls asleep
[1518-09-11 00:02] Guard #2819 begins shift
[1518-04-28 00:16] wakes up
[1518-11-20 00:48] wakes up
[1518-05-14 00:45] falls asleep
[1518-04-11 00:15] falls asleep
[1518-10-06 00:49] wakes up
[1518-04-15 00:46] wakes up
[1518-07-08 00:03] Guard #2633 begins shift
[1518-05-03 00:56] wakes up
[1518-08-28 23:57] Guard #1433 begins shift
[1518-10-23 00:42] falls asleep
[1518-05-30 23:48] Guard #409 begins shift
[1518-06-04 00:31] falls asleep
[1518-11-08 00:04] Guard #61 begins shift
[1518-04-26 00:42] wakes up
[1518-06-15 00:47] falls asleep
[1518-09-01 00:24] falls asleep
[1518-10-06 00:26] wakes up
[1518-05-23 00:58] wakes up
[1518-08-12 00:07] falls asleep
[1518-04-29 00:19] falls asleep
[1518-09-26 00:04] Guard #409 begins shift
[1518-09-05 00:22] falls asleep
[1518-10-02 00:02] Guard #3037 begins shift
[1518-07-30 00:38] falls asleep
[1518-05-19 00:19] falls asleep
[1518-06-02 00:49] wakes up
[1518-07-01 00:42] wakes up
[1518-07-05 00:50] falls asleep
[1518-06-12 00:23] falls asleep
[1518-05-20 23:57] Guard #2897 begins shift
[1518-06-17 23:59] Guard #1931 begins shift
[1518-05-27 00:20] wakes up
[1518-06-28 00:00] Guard #1889 begins shift
[1518-09-21 00:02] falls asleep
[1518-10-06 23:57] Guard #3037 begins shift
[1518-08-25 00:41] wakes up
[1518-04-19 00:55] falls asleep
[1518-08-16 00:21] falls asleep
[1518-08-09 00:01] falls asleep
[1518-10-21 00:00] Guard #3307 begins shift
[1518-08-24 00:56] falls asleep
[1518-05-27 00:03] Guard #61 begins shift
[1518-05-21 00:13] falls asleep
[1518-09-30 00:02] Guard #1291 begins shift
[1518-11-10 00:28] wakes up
[1518-06-02 23:57] Guard #2819 begins shift
[1518-05-29 00:57] wakes up
[1518-10-19 00:39] wakes up
[1518-04-21 00:43] wakes up
[1518-08-31 00:02] Guard #3037 begins shift
[1518-05-05 00:58] wakes up
[1518-04-25 00:40] wakes up
[1518-11-20 00:59] wakes up
[1518-09-02 00:52] wakes up
[1518-05-17 00:47] wakes up
[1518-09-22 23:56] Guard #1283 begins shift
[1518-07-01 23:53] Guard #467 begins shift
[1518-05-02 00:41] falls asleep
[1518-08-01 23:59] Guard #1433 begins shift
[1518-10-27 23:50] Guard #3121 begins shift
[1518-07-29 00:00] Guard #2447 begins shift
[1518-05-21 00:52] wakes up
[1518-04-15 00:00] Guard #467 begins shift
[1518-09-17 00:41] wakes up
[1518-10-13 00:14] falls asleep
[1518-09-08 00:53] falls asleep
[1518-04-17 00:28] falls asleep
[1518-11-06 00:02] Guard #3307 begins shift
[1518-09-07 00:49] falls asleep
[1518-05-15 00:24] falls asleep
[1518-05-13 00:23] falls asleep
[1518-10-04 00:24] wakes up
[1518-06-30 23:58] Guard #1291 begins shift
[1518-07-10 23:51] Guard #1889 begins shift
[1518-04-13 00:23] falls asleep
[1518-08-25 00:01] Guard #467 begins shift
[1518-04-16 00:59] wakes up
[1518-10-24 00:04] Guard #167 begins shift
[1518-06-22 00:09] falls asleep
[1518-11-12 00:51] wakes up
[1518-08-01 00:42] wakes up
[1518-06-04 00:32] wakes up
[1518-10-06 00:00] Guard #3037 begins shift
[1518-11-06 00:22] falls asleep
[1518-08-17 00:44] wakes up
[1518-10-13 00:44] wakes up
[1518-05-31 00:56] wakes up
[1518-10-06 00:13] falls asleep
[1518-08-16 00:58] wakes up
[1518-05-12 00:49] wakes up
[1518-06-18 00:52] falls asleep
[1518-11-02 00:35] wakes up
[1518-05-28 00:38] falls asleep
[1518-06-29 23:54] Guard #1283 begins shift
[1518-05-28 00:45] falls asleep
[1518-04-22 00:27] wakes up
[1518-10-30 00:44] wakes up
[1518-06-12 00:58] wakes up
[1518-07-05 00:28] wakes up
[1518-09-01 00:03] Guard #1471 begins shift
[1518-04-18 00:34] wakes up
[1518-09-08 00:45] wakes up
[1518-08-25 00:39] falls asleep
[1518-04-12 00:24] falls asleep
[1518-07-25 23:50] Guard #1291 begins shift
[1518-07-24 23:57] Guard #3121 begins shift
[1518-06-05 00:21] wakes up
[1518-08-21 00:30] falls asleep
[1518-06-04 00:54] wakes up
[1518-11-10 00:02] Guard #2897 begins shift
[1518-04-30 00:55] wakes up
[1518-09-14 00:31] wakes up
[1518-05-26 00:00] falls asleep
[1518-09-25 00:57] wakes up
[1518-05-14 00:53] wakes up
[1518-07-21 00:29] falls asleep
[1518-07-16 00:38] falls asleep
[1518-07-04 00:37] falls asleep
[1518-04-21 00:28] wakes up
[1518-04-08 00:13] wakes up
[1518-04-22 00:01] Guard #947 begins shift
[1518-09-24 23:50] Guard #1931 begins shift
[1518-09-22 00:09] falls asleep
[1518-10-17 00:52] wakes up
[1518-10-26 23:58] Guard #2897 begins shift
[1518-06-03 00:55] wakes up
[1518-04-25 23:46] Guard #409 begins shift
[1518-04-20 00:01] Guard #2459 begins shift
[1518-10-01 00:17] falls asleep
[1518-07-21 00:12] falls asleep
[1518-06-19 00:03] Guard #3121 begins shift
[1518-09-15 00:01] Guard #2447 begins shift
[1518-09-29 00:30] wakes up
[1518-07-15 00:01] Guard #947 begins shift
[1518-08-03 00:04] Guard #1433 begins shift
[1518-06-05 00:17] falls asleep
[1518-08-24 00:04] Guard #1291 begins shift
[1518-05-18 00:03] Guard #409 begins shift
[1518-08-05 00:45] wakes up
[1518-08-08 00:39] wakes up
[1518-09-16 00:54] wakes up
[1518-08-31 00:39] wakes up
[1518-08-13 00:00] Guard #947 begins shift
[1518-07-08 00:57] falls asleep
[1518-05-29 00:33] wakes up
[1518-08-06 00:42] falls asleep
[1518-08-31 00:24] falls asleep
[1518-07-06 00:04] falls asleep
[1518-07-29 00:26] falls asleep
[1518-04-05 00:02] Guard #2459 begins shift
[1518-05-18 23:56] Guard #2633 begins shift
[1518-04-05 00:26] falls asleep
[1518-09-22 00:02] Guard #1663 begins shift
[1518-09-13 00:48] wakes up
[1518-06-05 00:57] wakes up
[1518-04-29 00:49] wakes up
[1518-11-19 00:53] falls asleep
[1518-10-23 00:57] wakes up
[1518-08-07 00:29] falls asleep
[1518-10-11 00:24] wakes up
[1518-08-28 00:27] wakes up
[1518-05-07 00:41] falls asleep
[1518-05-03 23:59] Guard #2633 begins shift
[1518-08-15 23:59] Guard #2459 begins shift
[1518-09-06 00:49] wakes up
[1518-10-23 00:34] falls asleep
[1518-05-12 00:00] Guard #2819 begins shift
[1518-08-04 00:52] wakes up
[1518-11-18 23:56] Guard #3121 begins shift
[1518-08-14 00:43] wakes up
[1518-07-30 00:01] Guard #3307 begins shift
[1518-10-31 00:11] wakes up
[1518-10-04 00:03] Guard #947 begins shift
[1518-09-27 00:56] wakes up
[1518-07-05 00:20] wakes up
[1518-05-16 00:00] Guard #1931 begins shift
[1518-05-28 23:58] Guard #947 begins shift
[1518-08-04 00:02] falls asleep
[1518-05-08 23:57] Guard #2633 begins shift
[1518-08-02 00:40] falls asleep
[1518-08-07 00:59] wakes up
[1518-10-09 00:56] wakes up
[1518-05-24 00:31] wakes up
[1518-09-06 00:36] wakes up
[1518-04-10 23:58] Guard #1931 begins shift
[1518-08-07 00:12] falls asleep
[1518-08-20 00:57] wakes up
[1518-11-11 23:58] Guard #2819 begins shift
[1518-08-07 00:17] wakes up
[1518-08-11 23:58] Guard #661 begins shift
[1518-11-03 00:53] falls asleep
[1518-08-18 23:57] Guard #467 begins shift
[1518-04-13 00:35] wakes up
[1518-09-20 23:53] Guard #2447 begins shift
[1518-07-27 00:10] falls asleep
[1518-08-19 00:38] wakes up
[1518-08-27 00:01] Guard #947 begins shift
[1518-10-16 23:56] Guard #3307 begins shift
[1518-06-23 00:50] wakes up
[1518-10-19 00:47] wakes up
[1518-09-21 00:52] wakes up
[1518-06-06 00:46] wakes up
[1518-06-20 00:44] wakes up
[1518-08-06 00:02] Guard #947 begins shift
[1518-08-28 00:21] falls asleep
[1518-08-27 00:25] wakes up
[1518-10-18 00:54] wakes up
[1518-06-22 00:45] wakes up
[1518-06-13 00:47] wakes up
[1518-05-09 00:47] wakes up
[1518-06-09 23:57] Guard #2633 begins shift
[1518-11-21 23:58] Guard #467 begins shift
[1518-05-08 00:02] Guard #2447 begins shift
[1518-05-22 00:01] Guard #409 begins shift
[1518-09-09 23:48] Guard #1931 begins shift
[1518-05-28 00:01] Guard #1291 begins shift
[1518-08-27 00:15] falls asleep
[1518-07-07 00:26] falls asleep
[1518-11-10 00:39] falls asleep
[1518-10-19 00:08] falls asleep
[1518-06-20 00:01] falls asleep
[1518-09-24 00:31] falls asleep
[1518-11-10 00:47] wakes up
[1518-10-23 00:11] falls asleep
[1518-07-04 00:04] Guard #1889 begins shift
[1518-09-05 00:41] wakes up
[1518-06-01 00:11] falls asleep
[1518-05-20 00:44] wakes up
[1518-10-31 00:00] falls asleep
[1518-09-05 00:04] Guard #409 begins shift
[1518-05-22 00:19] falls asleep
[1518-07-12 00:00] falls asleep
[1518-10-25 00:55] wakes up
[1518-09-08 00:57] wakes up
[1518-08-07 00:41] wakes up
[1518-07-22 00:11] falls asleep
[1518-06-28 23:58] Guard #419 begins shift
[1518-09-07 00:03] Guard #409 begins shift
[1518-04-29 00:01] Guard #661 begins shift
[1518-10-01 00:33] wakes up
[1518-10-05 00:35] wakes up
[1518-06-06 00:04] Guard #1663 begins shift
[1518-10-17 00:35] falls asleep
[1518-04-27 00:15] falls asleep
[1518-06-16 00:54] wakes up
[1518-08-17 00:04] Guard #1283 begins shift
[1518-07-23 00:57] wakes up
[1518-05-03 00:26] falls asleep
[1518-06-23 00:28] falls asleep
[1518-08-16 00:48] falls asleep
[1518-07-27 00:56] wakes up
[1518-05-25 00:28] wakes up
[1518-09-05 23:59] Guard #1283 begins shift
[1518-05-24 23:58] Guard #661 begins shift
[1518-10-09 00:38] wakes up
[1518-11-12 00:11] falls asleep
[1518-11-20 00:54] falls asleep
[1518-11-16 00:00] Guard #1663 begins shift
[1518-05-28 00:34] wakes up
[1518-10-28 00:04] falls asleep
[1518-07-14 00:59] wakes up
[1518-05-16 00:51] falls asleep
[1518-10-20 00:42] wakes up
[1518-04-07 00:27] falls asleep
[1518-07-08 00:38] falls asleep
[1518-07-07 00:10] wakes up
[1518-10-15 00:00] Guard #947 begins shift
[1518-07-21 00:49] falls asleep
[1518-08-03 00:06] falls asleep
[1518-09-18 00:31] falls asleep
[1518-10-05 00:17] falls asleep
[1518-08-28 00:45] wakes up
[1518-11-14 00:58] wakes up
[1518-11-05 00:03] falls asleep
[1518-05-22 00:22] wakes up
[1518-06-10 00:29] falls asleep
[1518-08-16 00:38] wakes up
[1518-05-02 00:49] falls asleep
[1518-08-28 00:37] falls asleep
[1518-05-31 00:05] falls asleep
[1518-08-06 00:49] wakes up
[1518-04-05 23:56] Guard #2633 begins shift
[1518-08-20 00:03] falls asleep
[1518-05-29 00:47] falls asleep
[1518-05-09 00:57] wakes up
[1518-05-17 00:58] wakes up
[1518-09-18 00:04] Guard #2459 begins shift
[1518-08-14 00:29] falls asleep
[1518-05-23 00:48] falls asleep
[1518-07-24 00:08] falls asleep
[1518-04-20 00:30] falls asleep
[1518-07-30 00:54] wakes up
[1518-10-28 00:53] wakes up
[1518-07-02 00:00] falls asleep
[1518-08-21 00:13] wakes up
[1518-05-26 00:56] wakes up
[1518-11-16 00:19] falls asleep
[1518-08-15 00:41] falls asleep
[1518-11-01 00:01] falls asleep
[1518-08-07 00:51] wakes up
[1518-10-08 00:48] falls asleep
[1518-09-09 00:03] falls asleep
[1518-05-25 00:41] wakes up
[1518-07-19 00:40] wakes up
[1518-05-17 00:57] falls asleep
[1518-05-23 00:44] wakes up
[1518-11-01 00:48] wakes up
[1518-05-16 23:54] Guard #1471 begins shift
[1518-06-02 00:03] Guard #1931 begins shift
[1518-05-10 00:35] falls asleep
[1518-05-13 00:04] Guard #2633 begins shift
[1518-04-25 00:38] falls asleep
[1518-04-22 00:44] falls asleep
[1518-05-24 00:36] falls asleep
[1518-07-25 00:06] falls asleep
[1518-05-31 00:50] falls asleep
[1518-10-21 00:44] wakes up
[1518-05-23 00:57] falls asleep
[1518-10-01 00:03] Guard #61 begins shift
[1518-09-22 00:10] wakes up
[1518-10-29 00:33] wakes up
[1518-06-19 00:58] wakes up
[1518-06-30 00:57] wakes up
[1518-05-21 00:48] falls asleep
[1518-06-06 23:47] Guard #3307 begins shift
[1518-08-09 00:39] falls asleep
[1518-07-14 00:11] falls asleep
[1518-07-28 00:57] wakes up
[1518-07-05 00:53] wakes up
[1518-09-13 00:25] falls asleep
[1518-11-11 00:24] wakes up
[1518-09-20 00:08] falls asleep
[1518-09-15 00:35] wakes up
[1518-11-03 00:57] wakes up
[1518-06-08 00:48] falls asleep
[1518-11-19 00:49] wakes up
[1518-10-08 00:50] wakes up
[1518-07-15 00:52] wakes up
[1518-07-24 00:55] wakes up
[1518-08-17 00:50] falls asleep
[1518-07-14 00:00] Guard #1889 begins shift
[1518-10-12 00:53] wakes up
[1518-10-14 00:54] wakes up
[1518-09-18 00:46] wakes up
[1518-08-05 00:40] falls asleep
[1518-05-30 00:57] wakes up
[1518-07-20 00:00] Guard #467 begins shift
[1518-11-08 23:58] Guard #3121 begins shift
[1518-05-30 00:24] falls asleep
[1518-06-15 00:51] wakes up
[1518-04-11 00:57] falls asleep
[1518-05-08 00:40] wakes up
[1518-04-07 00:06] wakes up
[1518-04-26 00:03] falls asleep
[1518-05-07 00:47] wakes up
[1518-05-26 00:40] wakes up
[1518-06-13 00:31] falls asleep
[1518-06-08 00:28] wakes up
[1518-05-27 00:37] falls asleep
[1518-06-28 00:58] wakes up
[1518-09-10 00:58] wakes up
[1518-09-19 00:56] wakes up
[1518-11-18 00:04] Guard #467 begins shift
[1518-11-22 00:50] wakes up
[1518-07-11 00:07] wakes up
[1518-05-26 00:44] falls asleep
[1518-09-06 00:15] falls asleep
[1518-07-08 00:43] wakes up
[1518-07-10 00:03] Guard #3491 begins shift
[1518-05-07 00:29] wakes up
[1518-11-03 00:49] wakes up
[1518-06-11 00:44] wakes up
[1518-10-11 00:04] Guard #661 begins shift
[1518-06-15 23:56] Guard #61 begins shift
[1518-07-06 00:22] wakes up
[1518-11-08 00:43] wakes up
[1518-10-11 00:19] falls asleep
[1518-10-10 00:02] Guard #3037 begins shift
[1518-06-17 00:37] falls asleep
[1518-08-13 00:43] falls asleep
[1518-09-24 00:47] wakes up
[1518-10-23 00:01] Guard #409 begins shift
[1518-05-30 00:04] Guard #3307 begins shift
[1518-05-21 00:18] wakes up
[1518-09-15 00:55] wakes up
[1518-06-14 00:13] falls asleep
[1518-05-13 00:41] wakes up
[1518-06-02 00:20] falls asleep
[1518-04-16 00:48] falls asleep
[1518-08-24 00:20] falls asleep
[1518-07-31 00:03] Guard #3491 begins shift
[1518-06-27 00:42] falls asleep
[1518-09-28 00:44] falls asleep
[1518-10-09 00:01] Guard #2897 begins shift
[1518-10-16 00:13] falls asleep
[1518-04-22 23:56] Guard #409 begins shift
[1518-10-30 00:10] falls asleep
[1518-11-11 00:04] Guard #2819 begins shift
[1518-04-12 00:58] wakes up
[1518-05-03 00:33] wakes up
[1518-11-03 00:44] falls asleep
[1518-11-03 23:48] Guard #1433 begins shift
[1518-05-23 00:04] Guard #661 begins shift
[1518-05-24 00:49] falls asleep
[1518-06-04 23:58] Guard #467 begins shift
[1518-11-23 00:19] falls asleep
[1518-06-27 00:04] Guard #947 begins shift
[1518-08-29 00:51] falls asleep
[1518-10-04 00:09] falls asleep
[1518-05-18 00:48] wakes up
[1518-05-25 00:08] falls asleep
[1518-11-23 00:56] wakes up
[1518-08-23 00:26] wakes up
[1518-11-16 00:46] wakes up
[1518-07-20 00:40] wakes up
[1518-06-06 00:41] falls asleep
[1518-05-28 00:47] wakes up
[1518-06-25 00:31] falls asleep
[1518-04-11 00:54] wakes up
[1518-10-11 00:53] falls asleep
[1518-11-19 23:58] Guard #1471 begins shift
[1518-08-07 00:50] falls asleep
[1518-07-21 00:55] wakes up
[1518-08-17 00:43] falls asleep
[1518-08-07 23:56] Guard #1283 begins shift
[1518-04-21 00:13] falls asleep
[1518-08-18 00:01] Guard #419 begins shift
[1518-07-21 00:24] wakes up
[1518-05-04 00:21] falls asleep
[1518-10-03 00:31] wakes up
[1518-08-09 00:42] wakes up
[1518-07-27 23:59] Guard #947 begins shift
[1518-09-10 00:20] wakes up
[1518-04-26 00:22] wakes up
[1518-04-13 23:58] Guard #661 begins shift
[1518-09-30 00:52] wakes up
[1518-06-10 00:59] wakes up
[1518-10-14 00:00] falls asleep
[1518-09-14 00:21] falls asleep
[1518-10-04 00:46] wakes up
[1518-05-31 00:37] wakes up
[1518-10-20 00:14] falls asleep
[1518-11-09 00:29] falls asleep
[1518-06-18 00:55] wakes up
[1518-09-18 23:51] Guard #2819 begins shift
[1518-08-30 00:56] wakes up
[1518-06-21 00:36] wakes up
[1518-10-10 00:32] falls asleep
[1518-08-20 23:51] Guard #409 begins shift
[1518-04-05 00:33] wakes up
[1518-10-29 00:00] Guard #3121 begins shift
[1518-11-23 00:04] Guard #1663 begins shift
[1518-05-15 00:43] wakes up
[1518-09-03 00:50] wakes up
[1518-05-09 00:46] falls asleep
[1518-07-19 00:09] falls asleep
[1518-05-10 00:02] Guard #409 begins shift
[1518-07-04 23:56] Guard #1931 begins shift
[1518-08-24 00:23] wakes up
[1518-09-25 00:01] falls asleep
[1518-09-27 00:17] falls asleep
[1518-07-02 23:58] Guard #1931 begins shift
[1518-09-23 00:53] wakes up
[1518-07-04 00:46] wakes up
[1518-05-17 00:17] wakes up
[1518-05-09 00:50] falls asleep
[1518-10-19 00:59] wakes up
[1518-10-18 00:36] falls asleep
[1518-11-04 00:05] falls asleep
[1518-07-18 00:16] falls asleep
[1518-08-12 00:27] wakes up
[1518-08-28 00:03] Guard #3121 begins shift
[1518-06-24 00:03] Guard #1291 begins shift
[1518-06-08 00:50] wakes up
[1518-08-22 00:00] Guard #3491 begins shift
[1518-07-07 00:45] wakes up
[1518-04-17 00:04] Guard #947 begins shift
[1518-07-26 00:00] falls asleep
[1518-08-19 23:46] Guard #3307 begins shift
[1518-11-13 00:58] wakes up
[1518-08-10 00:02] Guard #1663 begins shift
[1518-05-21 00:36] wakes up
[1518-11-18 00:44] falls asleep
[1518-11-08 00:10] wakes up
[1518-10-15 23:56] Guard #2447 begins shift
[1518-04-07 23:50] Guard #2897 begins shift
[1518-11-04 00:16] wakes up
[1518-11-14 00:28] falls asleep
[1518-09-11 00:36] wakes up
[1518-06-28 00:31] wakes up
[1518-11-10 00:10] falls asleep
[1518-04-15 00:31] falls asleep
[1518-05-29 00:11] falls asleep
[1518-06-24 00:44] wakes up
[1518-07-21 00:44] wakes up
[1518-09-14 00:38] falls asleep
[1518-04-05 00:40] falls asleep
[1518-08-10 00:49] wakes up
[1518-07-16 00:02] Guard #2447 begins shift
[1518-10-02 23:58] Guard #409 begins shift
[1518-07-17 00:53] wakes up
[1518-06-07 23:59] Guard #61 begins shift
[1518-08-15 00:56] wakes up
[1518-04-18 00:02] Guard #3037 begins shift
[1518-06-04 00:57] falls asleep
[1518-06-19 00:44] wakes up
[1518-05-14 00:04] Guard #1433 begins shift
[1518-04-22 00:18] falls asleep
[1518-10-07 00:09] falls asleep
[1518-10-23 00:16] wakes up
[1518-05-06 00:37] falls asleep
[1518-06-09 00:34] wakes up
[1518-04-27 00:47] wakes up
[1518-04-08 23:47] Guard #1291 begins shift
[1518-04-05 00:41] wakes up
[1518-07-11 00:04] falls asleep
[1518-11-12 00:22] falls asleep
[1518-08-11 00:44] wakes up
[1518-09-09 00:35] falls asleep
[1518-06-03 00:48] falls asleep
[1518-10-18 00:01] Guard #947 begins shift
[1518-04-21 00:41] falls asleep
[1518-05-19 00:34] wakes up
[1518-10-09 00:47] falls asleep
[1518-09-28 00:52] wakes up
[1518-07-08 00:59] wakes up
[1518-09-12 23:49] Guard #61 begins shift
[1518-10-10 00:56] wakes up
[1518-08-10 00:33] falls asleep
[1518-09-07 00:09] falls asleep
[1518-10-26 00:02] Guard #61 begins shift
[1518-09-08 00:14] falls asleep
[1518-05-01 23:58] Guard #947 begins shift
[1518-10-29 23:58] Guard #2459 begins shift
[1518-11-13 00:57] falls asleep
[1518-09-30 00:58] wakes up
[1518-05-28 00:24] falls asleep
[1518-07-05 00:25] falls asleep
[1518-06-18 00:45] wakes up
[1518-11-18 00:54] wakes up
[1518-09-23 23:59] Guard #1291 begins shift
[1518-07-22 23:59] Guard #61 begins shift
[1518-09-17 00:12] falls asleep
[1518-09-11 00:21] falls asleep
[1518-05-05 00:27] falls asleep
[1518-11-21 00:00] Guard #1471 begins shift
[1518-09-28 00:12] wakes up
[1518-07-09 00:22] falls asleep
[1518-05-03 00:02] Guard #947 begins shift
[1518-09-01 00:36] wakes up
[1518-07-20 23:56] Guard #2633 begins shift
[1518-07-19 00:43] falls asleep
[1518-09-21 00:31] wakes up
[1518-11-19 00:27] falls asleep
[1518-04-18 00:23] falls asleep
[1518-04-28 00:03] falls asleep
[1518-11-02 23:57] Guard #947 begins shift
[1518-04-16 00:34] falls asleep
[1518-04-14 00:28] falls asleep
[1518-11-01 23:57] Guard #2459 begins shift
[1518-07-22 00:57] wakes up
[1518-04-17 00:58] wakes up
[1518-09-21 00:43] falls asleep
[1518-04-07 00:58] wakes up
[1518-08-13 23:56] Guard #1291 begins shift
[1518-11-08 00:08] falls asleep

1
data/2018/5.txt Normal file

File diff suppressed because one or more lines are too long

100
data/2019/1.txt Normal file
View file

@ -0,0 +1,100 @@
127117
121199
80494
83466
125933
80813
137787
122687
123256
128013
90525
116909
95227
86368
96748
131600
101434
98226
88614
76871
65553
141639
55075
133494
149211
51775
139337
94542
76351
100791
107426
91462
78691
70162
95006
101280
59398
77396
66276
100207
67200
58985
64763
125001
149661
129085
114919
77844
108209
121125
54662
103292
112164
121118
71847
130912
81068
137253
56703
107683
108181
142507
112673
97242
50195
123852
130090
144719
133862
73461
81374
56574
147026
140613
148938
123768
64967
106133
123961
87190
71348
148830
87261
58942
132417
101993
94510
138358
72539
80356
74249
103109
135176
128635
116062
82975
135814
62702
80696
95607

1
data/2019/2.txt Normal file
View file

@ -0,0 +1 @@
1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,1,9,19,1,19,5,23,2,6,23,27,1,6,27,31,2,31,9,35,1,35,6,39,1,10,39,43,2,9,43,47,1,5,47,51,2,51,6,55,1,5,55,59,2,13,59,63,1,63,5,67,2,67,13,71,1,71,9,75,1,75,6,79,2,79,6,83,1,83,5,87,2,87,9,91,2,9,91,95,1,5,95,99,2,99,13,103,1,103,5,107,1,2,107,111,1,111,5,0,99,2,14,0,0

2
data/2019/3.txt Normal file
View file

@ -0,0 +1,2 @@
R1003,U756,L776,U308,R718,D577,R902,D776,R760,U638,R289,D70,L885,U161,R807,D842,R175,D955,R643,U380,R329,U573,L944,D2,L807,D886,L549,U592,R152,D884,L761,D915,L726,D677,L417,D651,L108,D377,L699,D938,R555,D222,L689,D196,L454,U309,L470,D234,R198,U689,L996,U117,R208,D310,R572,D562,L207,U244,L769,U186,R153,D756,R97,D625,R686,U244,R348,U586,L385,D466,R483,U718,L892,D39,R692,U756,L724,U148,R70,U224,L837,D370,L309,U235,R382,D579,R404,D146,R6,U584,L840,D863,R942,U646,R146,D618,L12,U210,R126,U163,R931,D661,L710,D883,L686,D688,L148,D19,R703,U530,R889,U186,R779,D503,R417,U272,R541,U21,L562,D10,L349,U998,R69,D65,R560,D585,L949,D372,L110,D865,R212,U56,L936,U957,L88,U612,R927,U642,R416,U348,L541,D416,L808,D759,R449,D6,L517,D4,R494,D143,L536,U341,R394,U179,L22,D680,L138,U249,L285,U879,L717,U756,L313,U222,R823,D208,L134,U984,R282,U635,R207,D63,L416,U511,L179,D582,L651,U932,R646,U378,R263,U138,L920,U523,L859,D556,L277,D518,R489,U561,L457,D297,R72,U920,L583,U23,L395,D844,R776,D552,L55,D500,R111,U409,R685,D427,R275,U739,R181,U333,L215,U808,R341,D537,R336,U230,R247,U748,R846,U404,R850,D493,R891,U176,L744,U585,L987,D849,R271,D848,L555,U801,R316,U753,L390,U97,L128,U45,R706,U35,L928,U913,R537,D512,R152,D410,R76,D209,R183,U941,R289,U632,L923,D190,R488,D934,R442,D303,R178,D250,R204,U247,R707,U77,R428,D701,R386,U110,R641,U925,R703,D387,L946,U415,R461,D123,L214,U236,L959,U517,R957,D524,R812,D668,R369,U340,L606,D503,R755,U390,R142,D921,L976,D36,L965,D450,L722,D224,L303,U705,L584
L993,U810,L931,D139,R114,D77,L75,U715,R540,D994,L866,U461,R340,D179,R314,D423,R629,D8,L692,U446,L88,D132,L128,U934,L465,D58,L696,D883,L955,D565,R424,U286,R403,U57,L627,D930,R887,D941,L306,D951,R918,U587,R939,U821,L65,D18,L987,D707,L360,D54,L932,U366,R625,U609,R173,D637,R661,U888,L68,U962,R270,U369,R780,U845,L813,U481,R66,D182,R420,U605,R880,D276,L6,D529,R883,U189,R380,D472,R30,U35,L510,D844,L146,U875,R152,U545,R274,U920,R432,U814,R583,D559,L820,U135,L353,U975,L103,U615,R401,U692,L676,D781,R551,D985,L317,U836,R115,D216,L967,U286,R681,U144,L354,U678,L893,D487,R664,D185,R787,D909,L582,D283,L519,D893,L56,U768,L345,D992,L248,U439,R573,D98,L390,D43,L470,D435,R176,U468,R688,U388,L377,U800,R187,U641,L268,U857,L716,D179,R212,U196,L342,U731,R261,D92,R183,D623,L589,D215,L966,U878,L784,U740,R823,D99,L167,D992,R414,U22,L27,U390,R286,D744,L360,U554,L756,U715,R939,D806,R279,U292,L960,U633,L428,U949,R90,D321,R749,U395,L392,U348,L33,D757,R289,D367,L562,D668,L79,D193,L991,D705,L562,U25,R146,D34,R325,U203,R403,D714,R607,U72,L444,D76,R267,U924,R289,U962,L159,U726,L57,D540,R299,U343,R936,U90,L311,U243,L415,D426,L936,D570,L539,D731,R367,D374,L56,D251,L265,U65,L14,D882,L956,U88,R688,D34,R866,U777,R342,D270,L344,D953,L438,D855,L587,U320,L953,D945,L473,U559,L487,D602,R255,U871,L854,U45,R705,D247,R955,U885,R657,D664,L360,D764,L549,D676,R85,U189,L951,D922,R511,D429,R37,U11,R821,U984,R825,U874,R753,D524,L537,U618,L919,D597,L364,D231,L258,U818,R406,D208,R214,U530,R261

1
data/2019/4.txt Normal file
View file

@ -0,0 +1 @@
124075-580769

1
data/2019/5.txt Normal file
View file

@ -0,0 +1 @@
3,225,1,225,6,6,1100,1,238,225,104,0,1101,40,71,224,1001,224,-111,224,4,224,1002,223,8,223,101,7,224,224,1,224,223,223,1102,66,6,225,1102,22,54,225,1,65,35,224,1001,224,-86,224,4,224,102,8,223,223,101,6,224,224,1,224,223,223,1102,20,80,225,101,92,148,224,101,-162,224,224,4,224,1002,223,8,223,101,5,224,224,1,224,223,223,1102,63,60,225,1101,32,48,225,2,173,95,224,1001,224,-448,224,4,224,102,8,223,223,1001,224,4,224,1,224,223,223,1001,91,16,224,101,-79,224,224,4,224,1002,223,8,223,101,3,224,224,1,224,223,223,1101,13,29,225,1101,71,70,225,1002,39,56,224,1001,224,-1232,224,4,224,102,8,223,223,101,4,224,224,1,223,224,223,1101,14,59,225,102,38,143,224,1001,224,-494,224,4,224,102,8,223,223,101,3,224,224,1,224,223,223,1102,30,28,224,1001,224,-840,224,4,224,1002,223,8,223,101,4,224,224,1,223,224,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,107,677,226,224,1002,223,2,223,1005,224,329,1001,223,1,223,8,226,226,224,102,2,223,223,1006,224,344,101,1,223,223,7,226,677,224,1002,223,2,223,1005,224,359,101,1,223,223,1007,677,226,224,1002,223,2,223,1005,224,374,1001,223,1,223,1007,677,677,224,1002,223,2,223,1006,224,389,101,1,223,223,1008,226,226,224,1002,223,2,223,1005,224,404,1001,223,1,223,108,677,226,224,1002,223,2,223,1006,224,419,1001,223,1,223,1108,677,226,224,102,2,223,223,1006,224,434,1001,223,1,223,108,226,226,224,1002,223,2,223,1005,224,449,101,1,223,223,7,677,677,224,1002,223,2,223,1006,224,464,1001,223,1,223,8,226,677,224,1002,223,2,223,1005,224,479,1001,223,1,223,107,226,226,224,102,2,223,223,1006,224,494,101,1,223,223,1007,226,226,224,1002,223,2,223,1005,224,509,1001,223,1,223,1107,226,677,224,102,2,223,223,1005,224,524,1001,223,1,223,108,677,677,224,1002,223,2,223,1005,224,539,101,1,223,223,1107,677,226,224,102,2,223,223,1005,224,554,1001,223,1,223,107,677,677,224,1002,223,2,223,1005,224,569,101,1,223,223,8,677,226,224,102,2,223,223,1005,224,584,1001,223,1,223,7,677,226,224,102,2,223,223,1006,224,599,101,1,223,223,1008,677,677,224,1002,223,2,223,1005,224,614,101,1,223,223,1008,677,226,224,102,2,223,223,1006,224,629,1001,223,1,223,1108,677,677,224,102,2,223,223,1006,224,644,101,1,223,223,1108,226,677,224,1002,223,2,223,1005,224,659,1001,223,1,223,1107,226,226,224,102,2,223,223,1006,224,674,1001,223,1,223,4,223,99,226

1315
data/2019/6.txt Normal file

File diff suppressed because it is too large Load diff

200
data/2020/1.txt Normal file
View file

@ -0,0 +1,200 @@
1977
1515
1857
1800
1737
1778
1505
1958
1982
1941
1417
1232
1234
2005
1637
1956
1252
1457
1494
1317
1388
1630
1207
1536
1225
1369
1343
1502
1616
1744
1950
1280
1647
1780
1435
1915
1365
1707
1795
1554
1652
539
1892
1546
1908
1629
1836
1805
1395
1360
1487
1739
1884
1427
1615
1470
1922
1753
1632
1968
1429
2008
1124
1441
1384
1955
1815
1741
1331
1442
1988
1788
1585
1794
1217
1434
1751
1240
1284
1883
1711
1376
1638
1932
1979
1769
1597
896
1691
1379
1386
1658
2009
1885
1721
1619
1825
1688
1544
1934
1484
1720
1215
1371
1752
1692
1745
1911
1453
1723
1856
1270
1397
812
1610
1712
1829
1524
1541
1338
1383
1592
2006
1823
1410
1422
1394
1933
1572
1697
1736
2003
1301
1817
1902
1389
1490
1705
1329
1458
1510
1625
1676
1443
1539
1710
24
1586
1948
1994
1975
1974
1237
1419
1748
1589
1821
1462
1792
1381
1400
1222
1602
2001
1976
1700
1626
1966
1548
1593
2010
1149
1372
1224
1675
1271
1896
1983
1299
1528
1631
1804
1562
1754
1566
1473
1980
465
1868
1304
1279
1963
1582
1713
1330
1758
1551
1241
1469
1888

101
data/2020/10.txt Normal file
View file

@ -0,0 +1,101 @@
99
104
120
108
67
136
80
44
129
113
158
157
89
60
138
63
35
57
61
153
116
54
7
22
133
130
5
72
2
28
131
123
55
145
151
42
98
34
140
146
100
79
117
154
9
83
132
45
43
107
91
163
86
115
39
76
36
82
162
6
27
101
150
30
110
139
109
1
64
56
161
92
62
69
144
21
147
12
114
18
137
75
164
33
152
23
68
51
8
95
90
48
29
26
165
81
13
126
14
143
15

1000
data/2020/2.txt Normal file

File diff suppressed because it is too large Load diff

323
data/2020/3.txt Normal file
View file

@ -0,0 +1,323 @@
....#..#.................#..#..
#..#.#.#..#.###.#..#...#..#....
.#....#......#.#.#..##...#...#.
.............#.#..#........#.#.
............##.#..#...##.###...
.....#..#......#......##.......
........##........#...........#
..................#..#.........
......#..#...#..#......###..#..
.#....#...........#.....#.##...
..#..#.#........###..#....#...#
..#..##..#..#....#..#......#...
......#....................#...
.........#..#..................
..#.#.....#......#.#....#...#..
..#..........##.......##.##....
#.......#.##.....#...#....#....
####..............###.#....#...
....#........#.#..###..#...#..#
#.#......#...#.##....#.....#...
.......#......#.....#........#.
.##.........#...#.........#....
............#....#.#........#..
#..##..#....#...#.#....#....#..
.....#....##..#................
.#...........#....#..#.....#...
......#.#...#..###.............
#...#...........#..###.#..#..#.
...................#..#....#..#
....#...#...#.#.....#....#.##..
.......#.......#.#.........#...
#..#.......#...#..#.#......#...
..##...........#....#..#.......
.#...............#...##........
.....#..........#............#.
..#.......#.#.#...........#..#.
........#..#.#.#........#.#.##.
.###..............#.#..........
.#....###.....#......#....#....
............#.#......#..#....#.
.#.#.............#........##...
.....#..###....##.....#....#..#
.##....#...#.#.........#......#
....##.......#...............##
..........##.##.......#........
......#....##.........##.#.#.#.
..............#....#..#......#.
......##.........#.........#...
.#...##...##....##..#..#.....#.
.#......#.###.#....#...#......#
.##.......................#..#.
....#......#.##..........#.###.
.#.....##..........#.#.........
....#.#.........#...#..........
.#..##.#....##.......#.......#.
.........#.......#............#
###..........#.....##.#....#...
.......###.#....#........#...##
..#..#....#.......#.#..........
.#..#..........#......#...#....
.....###.#..#.....#...#..#.....
........#.#.#..........#.#..#..
........#...##.................
...#.............#.#..#......##
......#......##......#...#.#..#
.#..#...##..........#...##.....
..#.#....####..#...#....##....#
.#..##.........#..##......#....
#....#.#.........#.............
....###..............#....#....
....#..#..#...###..#.#..#.#....
....#.....#...........###..#...
....#.#.....#...#.....#.......#
..#.......#..................#.
#...................##.........
....#.#.#.#.#.....#.....#......
...............##..#..##.#...##
..#.....#.....##.........#..#..
...#...#.....#..##..##....#..##
..#.................#....#...#.
#....##...............##..#....
..#.....#.....##.........##...#
..#.###..............#...#.....
.......................#.......
#...#..#.....##...#...#........
..........#......#.###....#...#
..#.....#.##.#..#.#.......#....
#.##...#............#..........
#........#.#.#..#...#..#.....##
#............#.#...............
.#..#.......#.#.....#.#......##
.#.#....#........#..##.........
..#....#......#.#...##...#.....
##.....#......................#
...#.......#..##.....#........#
......##..#...............##...
.....#...#......##....#.#......
.#...#....#.#.#........#...#.#.
.......#...#...##...#..........
.##..#..##........##....###.#..
..##........#........##........
............#....#......#......
.......#...........#.......#...
#.#......##.#...#....#.#.....#.
..#.#.#......##........#....#..
#.#.####.#..#..........#.......
......................#.#......
...#.......#.....#......#..#.#.
...#....#....##..........#..##.
......#......#....#.........#..
.........#....#...#.#.........#
.....#...##.#.#.#......#.....#.
........#...#......#.#....#....
.....#.........#.............#.
.#...........#.#....##.......#.
.#..#......#....#....#....#....
#.......#.#.#.#..#.......#.....
..#...#...#......#.............
.....#.......#..#.........##..#
#..##...........#.#.........#..
#..#..........#....#......#...#
#...#............#....##..#.##.
....#.#..#....#.........##..##.
.........#..........#.......##.
#...#........................#.
....#....#..#...........##...#.
.....###.###.#....#.....#.....#
.#..###..#...##..........#.....
#..#.....#...#........#........
.#..##..#......#.....#......##.
#.....##........#.#..#....#.#..
.#....#...#..#...............#.
..........#.#........#.....#...
..#.#.....#....#........#.###..
...#..#...#.##.....#..........#
..#......##....................
.....#...#....#..#....#.......#
......#............#....#...#..
.#..#....#.....#........##.....
...#..#.......#...............#
##.#..#...............#.#..##..
..#.........#.####.####........
.........#...#.#........#..###.
..###.....#.........##........#
#..##.....##.#..........#....##
.#..#....###..#.....##..#......
#...#..#........#.............#
#.#....#........#.........#.###
.....#....#.###.......#........
...........#............#..#...
..........#.#..##......###....#
..##....#...........#....#....#
..#...##.#.......#.##.......#..
.......#......#..........#....#
.........#..#..............####
#.#...#...#......#...#..#...#.#
.#.#...#.....#.......#.#..##.#.
......##..##...#...............
....#....#...##.......#.#......
.............................#.
..##...#.......#......#.......#
.#.##.##....#......##.......#..
.......##..#....#.##.#.#.......
....#.............#......#..#..
...#.........#....#..#.....#.#.
......#......#......#.........#
........#..#.#.....#.....#...#.
.#.......#.........#...#.......
#.#.##.....#...#...............
..#.......##.....#............#
.................##.#..#.....##
........#.###....#.......##.#..
....#.#..#..#.......#.#....#..#
.#..#..#..#...##....#..#.....#.
...#..#...#..........#........#
...........##....#...##.#...###
.##..#.......##.....##....#....
...#.#..#..#..##..#.....##.....
.#.....#..........#...#........
.....#..#.#..#.................
..#.......#..#.....##.......#..
............##.##.....#...#....
#......#......................#
...#..........#...#...#..#.....
......##..............##.##....
................##......#.###..
.###...#..........#...........#
#....#...#.........##......#...
.............#...............#.
.###.....#......#...#.......#..
......##..#.#.#.....#........#.
..#.#..........#.#......##.....
.#.#...#.#.....#.#..#.....#....
.......#....#.#....##..........
#.........#........####.#......
...#..#.....#..............#.#.
...#..........................#
..##....#..#..........#....#...
..##.##.#.#.#......#..#........
...#..#.#.#..#........#.......#
.....#.....#..#...#........##..
..#..#...........#...##..##..#.
#.....#.....#..#..##........#..
...#..............#......#..#..
...#.#...........###...#.#.....
..........................#.#..
....#........#..#..........#.#.
.#..#..........#.#..........#..
....#.........#......#.#....#..
..#........#.................#.
...#......#............#.......
...#.#...#..##....#........#...
......##.#....#.#......#.......
........#..........#........#..
###..#.....#...#......#...###..
..##...#..###............#...#.
#.......#..#..#............##..
#........####......#...........
#..#..#...........#.......####.
......#..##................#...
.....#..##......#.#...#..#.....
......#.....##.....#.###.......
.#.....#.........#.......#.#..#
.##...........###...#....#...#.
.#....#..#....#.##...#.........
.................##............
......#......#.............#...
.........##.#........#....#...#
..##....#.......#....##.#......
.......#.#.#.....##..#.#.......
......#.#.#.#......#...#.......
....##...#.....#..#......#.....
..............#......#.##......
#.##..###........#.##........##
#..#.........#.#......#.#......
.#..###.......#................
..............#...#..##.#.#....
.....#..#........#...##.#...#..
.#...##.....#........#..###.#..
....#.....#...#........#.......
....#.##.....#....#............
#.#..#....#....#............#..
....#....#...#.#...#...######..
.##.........#..#.....#.....#...
..##...............#...........
........##...#........#..#.....
...#................###.##..##.
.#..#..#..#...#.............#..
#.....#..##.#....#.#......#..#.
...#...#...#.....#...#...#.....
..##.###..#..#...##...........#
.#.......##........#.#..#..#...
..#.......#.###................
..#...#........##...#..#......#
...#...#............#.#......#.
..#...#.....#.#.#.#........#...
.#........#......##....##...#..
...#..##....#.........#....#.#.
....#........##...............#
.###.....#...#..#.#.....#.....#
..#...#..................#...##
#..#....###....................
...........#...#...........#...
........#.....#................
#........#...........#........#
........#..#....#...#....#..#..
#.#....#......#.......##.......
.#.....##..#...#......#.#.#....
..#..##.#.....#...#.#......#.#.
.##....#...#....#......##......
.#..#..#...##.##..#.#..#.......
.....#.#...........#.#........#
.#...#....#..................#.
...........#...#.........#.....
.#..###........##......#..#...#
.............###..##.....#.#..#
.#..#..........#......#........
..#........#.#...#.......##.#..
....#...........##......#...#..
...........#....#.....#...#.#..
...#...........#.....#.#..#..#.
......#.......#................
##.......#.....#............#.#
.##.....#.#.#..................
..........#.....##..#.#.#......
.###.#.....##...#..#.#........#
#....#........##..#..#.........
.............#.........##..#...
......##.#...#.#.#....##.......
.#.......###.#.###..##........#
..##.....#..#.............#..#.
.#...#......#.#.............#..
..##.#...#.........##....#...#.
...........#......#.#..........
.....#..#...##.....#....#..#...
#...................##...#.....
..#.................#.....#....
..............#..#.#...###.....
.......#........#...#.....#....
.............#.......#...##..#.
.#...#..#...#..#.....#......#.#
....#..#..#...#...........#....
.....#..#......##.##....#..#...
...#......#..#.#...#.....#.....
.......##..#.#.......#..#....##
#.#..#....##.##.#.#..........#.
..........#..........#....##.#.
....#.................#...#..#.
...#.....#..#...#.#...#..#.....
....#.#..###....#.............#
#....#..#.#..........#..#..#...
...#..#......#...#...#...#...#.
##....#.......#..........#.....
#......#.........#...#.........
##...##.#....#....#..#..#.#....
....#..#.....#.##.#.......#.#..
..##....##....#...#..####...#.#
..##..........#.............#..
..#......#..............#......
...#......#..#.#...#.......#...
.#............#....#...##.##..#
..##..........#...........#..#.
..#..##..#....#..#.#..#..#..#..

1031
data/2020/4.txt Normal file

File diff suppressed because it is too large Load diff

761
data/2020/5.txt Normal file
View file

@ -0,0 +1,761 @@
BFBBBFBLRR
BBFFFFFLRR
BFBFBFFRLR
FBBBBFFLLL
BFBBBBFRRL
FFBFFBFRLR
FFFBFBBRRL
FBFBBFBLRL
FBFFFBFLLR
FFBBFBBLLL
FBFBBFFRLL
FFBFFBFLRL
FFBFBFFRRR
BFFFFBBLRR
FFBFFBFRRL
FFBFBFFLRL
BBFFFFFRLL
FFFBFBBRRR
FBFBFBBLLR
FBFBFBFLLR
BFBFBFFRLL
FFFBFFBRLL
BBFFFBFLRL
BFBFBFBLLR
FFFFBBBRLL
FFBBBFFLRL
FBFFBFBRLR
FFBFBBFLLR
FBFBFFFRRL
BFBBFBBLRR
BFBFFFBRRR
BFFBBBFRLL
FFBFFFFRRL
FFFFBBFLRL
BBFFFBBRLR
BFFBFBBRRL
BFFFFFBLRR
FBFFFFBLLL
FFBFBBFLLL
BFBBBFBRRR
BBFFFBFLLR
FBBBFFFRRL
BFBBBBBLLL
BFBFFFBRLR
FFBBFBBLRR
FBFBFFFLLL
BFBBBFBRLL
BFFBFBFRRL
BFBFBFFRRR
FBBFFFFLLR
FFBBBFFLLL
BFFBFBBRRR
FFBFBFBRRR
FFFBBFFRRR
FFBBFBFRLR
FBBBFBFRRR
FFBFFBFRLL
BFBBBFFRLR
FBFFFFFRLR
BFBBBFBRRL
FBFFBFBRRL
FFBFBBFRLL
FFFBBBBLLL
FFBBBFBLLR
FFBBFFBRRR
FFBBBBFRRR
FFBFBBBLRL
FBBBBBFLLR
BFBFBBFLLR
FFFBBBFRLL
BFBFFBBRRL
FBFBBFBLLL
FBFFBBFLRR
FBBBFBFLRL
FFBBFBFRLL
FFBBBFFRRR
BFFBBBBRLR
FFBFFBBRLL
FBFBFBBRRL
FFBFFBFLLR
FBFBFFBLLR
FBFBBFFLLL
FBFBBFBLLR
FBBFBBFRLL
BFFFBFFRLL
FFBBBFFRLL
FBFBBFBRRR
BFFBBFFRLL
FFBFBBFRRR
FBBFFFFRRL
BFBBFBFLRR
BFBFFFFLRL
BFFFFBBRRR
BFFBFFBLRR
FBFFFBFLRL
FBFBFBFLRL
FFBBFBFRRR
BFFFFBFRRR
FBBBBBFLRL
BFFFBBBRLL
BFFBBBBLRR
FFBBBBFRLR
BFFFBBFRLR
FBBFFBFLLR
FBFBBBFLRR
FBFFFFBRRR
FFBBBBBLLR
FFBBFFFRRL
FBBFFBBLRL
FBFBBBFRRL
BFFBFBFRRR
FFBBBBFLLR
FFBBFFBLRL
FFBBBBBRLL
FFFBFBBLRL
BFFFBFFLRR
BFBBBFFLRR
FFBFFFFRRR
FBBFFBBLLR
FBBBBFFRRR
BFBBBFFRRL
FBBFFBBLLL
FBFBFBBLRL
BFBBBFFLLR
BBFFFBBLRL
FBBBFBBLLR
BBFFBFFLLL
FBBBFFFRRR
BFFBBFFLRR
FFBBFFFRLL
BFBBFFFLRR
FFBFFFFLLR
FFFBFFBLLL
FFBBBFFRLR
FFBFFFBRRR
FBFBBBBLRL
FBBFBBBRLL
FBBFBFFLLR
FFFFBFBLRR
BFFFBBFLRL
FBFFBBFRLR
BBFFFFBRRR
FFFBBBFLRL
FBBFBFFRRR
BFFBBFBRRR
FFFFBBBRLR
FBBBFBBRLL
FBBFBFFRRL
FBFFFFBLRR
BFFBBBBLRL
FBBBBBFRLR
FFFBFFBLLR
FBBFBFBRLR
FBBBBBFRRR
BFBBFFBRLR
BFFFFFBRRR
FFFBFFBRRR
BFBBBBFLLL
BFBFFFFLRR
FFBBFBBRRR
BBFFFBFRLL
FFBBBBBLRR
FBBBFBFLLR
FBFFFFFRLL
FFBBFFBLRR
FBFFFFFLRR
BFBBFBFRRR
FFBBFFBRLR
FBBFFFBLLL
BFFBFBFLLR
FBBFBFFRLL
FBBBBFBLRL
BFFFFBFRRL
FBFBBFBRRL
BFFFFBBLLL
FBFFBFBLLR
BFFBBFBRLL
BFBFFFBRRL
FBFFBFFLLR
BFBFFFFRRL
FFBFFFBRLR
FFBBBBFLRR
BBFFFFBLLL
BFBBBBBRLL
FFBFBBFRLR
BBFFFFFRLR
FBFFFBBRRR
BFFFBFBRLL
FBBBBFFLRL
BFFFFBFLRR
FBBFBFFLRL
BFBFBFBLRL
FBBFFBFRLR
FBBFFFBLLR
FBBBBFFRLL
BFBBBFFRRR
FBBFBBFLLR
FBBFFBFLRL
BFFBFBBLLR
FBBBFBFLLL
FBBBBBBRRR
FBFBBFBRLR
FFBFBFBRRL
FBFBBBBRRR
FFBBBFBLRR
FBFFBFBLRL
FFBFFFBLRL
BFBFBFFLRR
FBFFFFBLRL
BFFBFFFLRR
BFBBBBFRLL
FBFFBBBLRL
FBFBFBBLRR
BFBFFFBLRL
BFBFBBBLRL
FFBFBFBLRL
BFFBFFBRRL
BBFFFBFRRR
FFFBFFFRLR
FFFBFBFRRL
FFBBBFFLRR
BFBBBFFRLL
BFBBFBBLLL
FBBBBFBLLL
BFFFBFFRLR
BFFBBFBLLL
FFBBFBFLLL
FFFBFBFLLR
FBFFBFFLRR
BFBFFBFRLR
BFFBBBFLLL
FFBFFFBLLL
FFFBFFFRRL
FFBFFFBLRR
FBBFBBFRRR
BBFFFBBLLR
BFFFBFFLLR
FFBFBBBRLL
BFFFBBBLRR
FFBFBFFLLL
FFBFFBBLLL
BFBBFBBRRL
BBFFFFFRRL
FBFFBFFLLL
FFBFFBFLRR
BBFFFFFRRR
FBBFFFBRRL
FBFFBBFLRL
BFFBBBFRRL
BFBBFFFRRL
BFBFFBFLRR
FBBBFFFLLR
FFFFBBBLLR
BFFBFFBLRL
FFBFFFBLLR
FFFBFBBRLL
FBFBBBFLLL
BFBFBFBRRL
BFFFBBBRRL
FFFFBBFRRR
FBBFBBBLRL
FFBBBBBLLL
BBFFBFFLLR
FBFFBBBLLR
BFBFFBFRLL
BFFFFFBLRL
FFFFBFBLLL
FBBBBFBRRL
FBFBFFBLRR
FFFBBFFLLR
FBFBFBFLRR
BBFFFBBLRR
FFFBBFBLLR
FFBBBFBRRR
FFFBBBFRRR
BFBFBFFLLL
FBBBBBFRRL
BFFBFFBLLR
FFBFBBFLRR
BFFBFBBLRR
FBBBFBBLRL
FBFFBBFRLL
BFFBBBBRRL
BFFBBBBRRR
BFFFBBFRLL
BFBBBBBLRR
FFBBBBFLRL
FBBBBFFLRR
BFBFFBBRLR
FBBFBBBLRR
FBFBFBBRRR
BBFFFBBRLL
FBBBBFBRLL
FFBFBFFLLR
FBFFFBFRRR
BFBFBBFRRR
BFFFBFFRRL
BFBFFBFLLR
FFFBBBBLLR
FBBBFFFLRL
FBBFBBFRRL
FBBFBBBLLR
BFFFFBBLLR
FBBBBBBLLL
BFFFFFFRRR
FFFBBBBRLR
FFFBFBFRLR
FFFFBFBLRL
FBFBFFBRRR
FBBBBBBLRR
BFBBBFBRLR
FBFBBBFRLL
FBBFFBBLRR
BFFFBBFRRL
FBBBBFFRLR
BFFBFFBRRR
BFFFBFBLLR
BFFFBBBRRR
BFFBBBFLRL
BFBBFBBLRL
BFFBBFFLLR
BFFFFFBRLR
FBBFFBBRRL
BFFFFFBRRL
FBBBFFBLRL
FBFBBFBRLL
BFFBFBFLLL
BFFBFBBRLR
BFFBFFFLRL
BFBFBBBLLR
FBFBFFBRLL
BFFBBFBLLR
BFFBFBBLLL
BFFBBFBLRL
FBBFFBFRRL
BFBFBBFRLR
FBFFFFBRRL
FBFBFFFRRR
FFFBBFFRRL
FFFFBFBRRL
BFFFFFFLLR
FBBFFFFRLR
FBFBBFFRLR
FFBBFFBRRL
FBBFBBFRLR
FFBBFBFLRL
FFFFBBBLLL
FFBBFFFLLR
BFBBFBBRLL
BFFFFBBRRL
BFFBBFBRRL
FBBFBBBRRL
BFBFBFFLRL
FBFFFBBLRL
FFFFBBBRRR
FBFFBBFLLR
BFFBBFBRLR
FBBFBBFLRL
FFBBFFFRLR
BBFFFBBRRR
FFBBBBBLRL
FBBBBBBRLL
FFFBBBFRLR
FFBBFBFRRL
FFBBBBBRRL
BFBFBBFRLL
FBFFBFFRLR
BFBFBBBRLR
FFBFFFFLRL
FBFFBFBLRR
FBFFBFBRRR
FFFBBFBRRR
FBFFFBFLLL
BFFBFBFRLL
FBFFBFBRLL
FFBFFBBLRR
FFFFBFBRLR
BFFBBBBRLL
BFBBFFBLRR
FFBFFBFLLL
FFBFBBBRLR
FFBFFFFRLR
FBBFFFBRLR
BFFFFFFLLL
BFBBBFFLRL
FBBFBFFLLL
BFBBFBBRRR
BFBFFBBRLL
FBBFBFBLRL
BBFFFFFLLL
FBFFFBFRRL
BFBBBFBLLR
BFFFFBBRLL
FFBFBBFLRL
FFFBFBBLLR
FBFBFFFLRR
FBBBBBBLLR
BFFBFFBRLL
FBFFBFFRRL
FFBFBBBLLR
FBBBFBFLRR
FFBFBBBRRL
FBBFFBBRLR
BFFFBBBLRL
FBBFBBBRRR
BFFBBBFLRR
FBBFFFBRRR
BFBFFFFRLL
BFBBBBBRRR
FBFBBFFRRR
FBBBBBFLRR
FBBBFFBLRR
FFBBBBBRRR
FFFBFFFLLR
BFBBBBFRRR
BFFBFBFLRR
BFFFBBFLLR
FBFFFFFLLL
FBBFFFFRLL
BFFBBBFRLR
BBFFFFBLLR
FBBBBFFLLR
BFFFBFBRLR
BBFFFFFLRL
BFFFFBFLRL
BFFFFBBLRL
FBFFBBBLRR
FBFFBBBRRR
FBFBBFBLRR
FBBBBBBRRL
FFFBFFBLRL
FBFBFBFRLR
FFFBBFBLRR
BFBFFBFLRL
BFBFFFBRLL
BFFFBFBRRR
FBFBBBFLLR
BFFBBBFRRR
BFBFBBFLRR
FBBFBFBLLL
FBFBBBFRRR
BFBBBBFRLR
FFFBBBBLRL
FFFBFFFLLL
FFFBBBFLLL
BFBBFFBRRL
BFBBFBBLLR
FFBBBBFRLL
FBBBBFFRRL
FFBBBFBRRL
FBBFFFBLRL
FFBFFBBRLR
BFBFFBBLLL
FBFFFBFLRR
FFBBFFBLLL
BFFFFBFLLR
FFFBFBFLRL
FFFBBBBRLL
BBFFFBBRRL
BFBFFBBLRR
FFFFBFBLLR
BFBBFBFLLR
BFBBFBFRRL
FFBBFBBLLR
FBFFBBFRRL
BFFBBFFRRL
FBFBBBBLLR
FBFBBBFRLR
BFBFFFFLLL
FFBBFFBLLR
FBFFBBFRRR
BFFFFFFRLL
FBFFFFFLLR
FFFBFFBRRL
FFBBFBBLRL
FBBFBFBLLR
BBFFFBFRRL
FFBBFBFLRR
BFBBFBFLRL
FBFBBBFLRL
BFFFFFFLRL
FFFBFBBRLR
FFBBFBBRLR
FBBFFBFLLL
BFFBFBBLRL
FBFFBBBLLL
FBBBFFFLRR
BFFBBBBLLL
FBBBFBFRLL
FBBBFBBLRR
FBFFFBBRLL
FFBFBBBLRR
FBFBFFFLRL
BFFBFFFRLR
FFBBBFBRLR
FFFBBFBRLL
BFFFFFFLRR
FBBBFBBRRR
FBFFBFFLRL
FBFFBFBLLL
FBBBFBFRLR
FBFBFBBRLL
FBBBFBBLLL
FFBBBFBRLL
FFFBFBFLLL
FBFFFBBRRL
BFFFBFFLLL
FBBFBFBLRR
FBBBBFBLRR
FBBFFBFLRR
FBBBBBBLRL
BFFBFFFRLL
BFBFBBFRRL
BFBFFFFRRR
BFFFBFBRRL
FFFFBFBRLL
FBFBBFFLRR
BBFFFBFLLL
BFBBFFBRRR
FBBFBFBRRR
FBFFBFFRLL
BFBFBBBLRR
FBBFFBFRRR
FBBFBFBRLL
BFFFFBBRLR
BFBFBBBLLL
FBFBFBFLLL
BFFBFFBRLR
BFBFFFBLLR
FFFBFFFRLL
FBFFFFFRRR
FFFBFFFLRR
FFBFFBFRRR
BFFFFBFLLL
FBBBBFBRRR
FBBBFFFLLL
FFBFFBBLLR
BFFFFFFRRL
FFFFBBBLRL
FBFBFBBRLR
FBBBFFBRLR
FBBFBFFRLR
BBFFFBFRLR
FBBFBBFLLL
FBBFFFFLRR
FBFFFBBLLL
BFBBFFFRLL
FFFBFBFRLL
BFFFBBFRRR
FFBFFBBRRL
BBFFFBBLLL
BBFFFFFLLR
BBFFFFBRLL
FBBBFFBRLL
FBFBFBFRRL
FFFBFBBLLL
BFFBFBFLRL
BFBFFBBRRR
FFFBBBBRRL
BFFFBBFLLL
FBFFBBBRLL
FFFBFBBLRR
FBBFFFBLRR
BFBBFFFLLR
FFBBFFFLRL
FBBBFFBRRR
FFFBBFFRLR
FBFFFFBLLR
BFFBFFFRRL
FBFBFBFRRR
FBBBBBFRLL
BFFFFFBRLL
FFFBBFBLRL
BFFFFFBLLL
BFFFBFBLLL
FBFBFFFRLR
BFBFFFFRLR
FBFBBFFRRL
BFBBFFFRLR
FFBFFFFRLL
FFFBBFBRRL
FBBBFFBLLL
BFBFBFBLRR
BFFFFBFRLL
BFBBFFBLLL
FBBFBBBLLL
FBBFBBBRLR
BBFFFFBRRL
BFBFBFFRRL
FBBBFBBRRL
BFBBBBFLRR
FFBFBBBRRR
FFFBFFFLRL
FFFBFFFRRR
FFBBFBBRRL
FFBFBFBLLR
BFBFFFBLLL
FBFBFFBLLL
BFFFBFBLRR
BFFBFFBLLL
BBFFFFBLRR
FFBFBFFRLR
FBFFFBFRLR
FFBBBBBRLR
FBFFFBFRLL
FBFBBBBRLL
FFBFFFBRRL
BFFFBBBLLL
FFBBBFBLLL
BFFFBFFRRR
FFFBBFFRLL
FFFBBBFRRL
FBFBBFFLRL
FFBBFFFLRR
FFFFBBBRRL
FFBBBBFLLL
FFBFFFBRLL
FBFFBBBRRL
BFBBFFFRRR
FFBBBFFLLR
FFBBBFFRRL
BFBBFBFRLR
FFFFBBFLLL
FFBBBBFRRL
FBBFFFFLLL
BFFFBBBRLR
FBFFBBBRLR
BFBBFFFLRL
BFBFBBFLLL
FBFFFFBRLR
BFFBBFFRRR
FBFBBBBLLL
BFFBFBBRLL
FBFBFFBRLR
BFBFBFFLLR
FFFFBBFRLL
BFFBFFFRRR
FBFBBBBRLR
BFBBBBFLRL
BFBFBFBLLL
BFBFFBBLRL
BFBFFBBLLR
BFBBFFBRLL
FFBFBBBLLL
BFBFBBBRLL
BFBFBBBRRR
FFFFBBBLRR
FFFBFBFLRR
BFFFBBBLLR
FBBBBBFLLL
FFFBBFBLLL
FBFBFFFRLL
FBBBFFFRLR
FFBFBFFLRR
FFFFBBFRLR
FFFFBFBRRR
FFFBBFBRLR
FFBFBFBLLL
FFBFFFFLRR
FFFBFBFRRR
FFBBFFFLLL
FBBBFFBLLR
BFBFBBBRRL
FFBBBFBLRL
BFBBBBBRRL
FFFBBBBLRR
FBBBFFBRRL
FFBFBFFRRL
FBBBBBBRLR
FBFFBFFRRR
BFFFFBFRLR
FFBBFFBRLL
BFFBBBFLLR
FBFBFBFRLL
BFBFBFBRLR
FBFFFBBLLR
FBFBFFBRRL
FBBFFFBRLL
FFBFBFBRLR
FFBFBFFRLL
FFFBFFBRLR
BFBFBFBRRR
FFFBBBBRRR
BFBFFBFRRR
BFBBFFBLRL
FBBFFBFRLL
BFFBBFFLRL
FFBFBFBRLL
FBFBBBBLRR
BFBFBFBRLL
BFBFFBFRRL
BFFFFFFRLR
FFBFFBBRRR
FFBBFBFLLR
FFFBBFFLLL
BFBBBFBLRL
FBFFFFBRLL
FBBBFBBRLR
BFFFBBFLRR
FBBBBFBRLR
BFBBBFFLLL
FBFBFBBLLL
BBFFFFBRLR
FBFBFFFLLR
FBFBBBBRRL
FFBFBBFRRL
BFFBBFFLLL
FBBFBBFLRR
BFFFFFBLLR
BFBBFFFLLL
FBBFBFFLRR
FBBFFBBRRR
FBFFFFFLRL
BFBFFFBLRR
FFFBFFBLRR
FBBFFBBRLL
BFBBBBBLRL
FFFBBBFLRR
BFBBBFBLLL
FBFFFBBRLR
FFBBFBBRLL
FBFFFBBLRR
FBFBBFFLLR
FFFFBBFRRL
FBBFFFFRRR
BFFBFFFLLR
FFFBBFFLRL
FFFBBBFLLR
BFFFBFFLRL
FBBBBFBLLR
FFBFBFBLRR
BFBBFBFLLL
BFFBBFFRLR
BFBBBBFLLR
FFFFBBFLRR
BFBFBBFLRL
BBFFFBFLRR
BFBBFBBRLR
FBFBFFBLRL
FFFBBFFLRR
FFBBFFFRRR
BFFBBBBLLR
BBFFFFBLRL
FBFFBBFLLL
FFFFBBFLLR
FBBBFBFRRL
FFBFFBBLRL
BFBBFFBLLR
BFBFFFFLLR
BFBBBBBRLR
BFBBFBFRLL
BFFBFFFLLL
FFBFFFFLLL
BFBFFBFLLL
FBBFFFFLRL
BFBBBBBLLR
BFFBBFBLRR
BFFFBFBLRL
FBBBFFFRLL
FBBFBFBRRL
FBFFFFFRRL

2093
data/2020/6.txt Normal file

File diff suppressed because it is too large Load diff

594
data/2020/7.txt Normal file
View file

@ -0,0 +1,594 @@
light beige bags contain 5 dark green bags, 5 light gray bags, 3 faded indigo bags, 2 vibrant aqua bags.
faded purple bags contain 4 shiny green bags, 2 mirrored olive bags.
drab tomato bags contain 4 shiny coral bags.
mirrored crimson bags contain 4 bright maroon bags.
faded magenta bags contain 2 clear bronze bags, 5 dim brown bags, 3 striped cyan bags.
vibrant beige bags contain 1 pale silver bag.
plaid lavender bags contain 5 striped teal bags, 2 vibrant tan bags, 3 clear bronze bags, 3 light black bags.
posh maroon bags contain no other bags.
dotted yellow bags contain 4 plaid turquoise bags, 2 plaid lavender bags, 1 dotted violet bag.
posh fuchsia bags contain 5 mirrored gold bags, 2 faded bronze bags, 2 faded coral bags, 1 vibrant maroon bag.
dotted chartreuse bags contain 1 pale magenta bag.
muted beige bags contain 2 drab cyan bags.
dark olive bags contain 4 dull gold bags.
posh yellow bags contain no other bags.
dotted turquoise bags contain 5 striped indigo bags, 2 pale cyan bags, 5 light violet bags, 2 plaid silver bags.
wavy black bags contain 1 light cyan bag, 3 pale tomato bags.
striped plum bags contain 5 wavy maroon bags, 2 dim violet bags, 5 shiny tan bags.
shiny olive bags contain 5 vibrant aqua bags.
dim indigo bags contain 3 dull indigo bags, 2 light crimson bags, 2 dark magenta bags, 2 vibrant tomato bags.
drab tan bags contain 4 vibrant lime bags, 1 faded turquoise bag.
muted black bags contain 4 dull crimson bags, 2 posh tan bags, 4 shiny blue bags.
plaid red bags contain 5 clear blue bags, 3 plaid white bags, 4 dark magenta bags, 1 dark purple bag.
pale black bags contain 2 faded beige bags, 1 striped black bag.
striped red bags contain 3 vibrant green bags, 4 plaid blue bags, 2 drab brown bags.
dotted fuchsia bags contain 1 striped orange bag, 5 dotted maroon bags, 4 posh turquoise bags, 2 drab white bags.
plaid green bags contain 3 posh magenta bags, 4 dark black bags, 3 clear chartreuse bags.
dark violet bags contain 2 clear teal bags, 5 muted cyan bags, 2 shiny coral bags, 5 faded teal bags.
striped gray bags contain 3 bright salmon bags, 5 mirrored brown bags.
dull aqua bags contain 5 mirrored cyan bags, 1 mirrored olive bag.
light indigo bags contain 4 dotted salmon bags, 5 faded lavender bags, 1 dark teal bag, 2 dull purple bags.
dark aqua bags contain 1 clear tan bag, 5 muted turquoise bags, 3 drab orange bags.
drab orange bags contain 5 mirrored gray bags, 5 muted red bags, 3 muted gray bags.
wavy beige bags contain 1 light beige bag, 5 wavy coral bags.
dark gray bags contain 4 shiny violet bags, 3 dull tomato bags.
dull indigo bags contain 4 wavy coral bags, 3 dim plum bags, 2 shiny cyan bags, 2 vibrant bronze bags.
drab gray bags contain 4 drab silver bags, 1 vibrant bronze bag, 3 faded red bags.
dotted gold bags contain 2 faded silver bags.
muted chartreuse bags contain 3 clear turquoise bags, 5 muted turquoise bags, 4 dark crimson bags.
dark orange bags contain 4 shiny coral bags, 5 mirrored fuchsia bags, 5 mirrored teal bags.
light olive bags contain 4 shiny coral bags, 1 pale purple bag, 2 posh yellow bags, 5 shiny gray bags.
dotted silver bags contain 3 dotted purple bags.
muted bronze bags contain 4 striped silver bags, 1 posh plum bag, 1 muted blue bag, 5 shiny violet bags.
striped magenta bags contain 4 dark purple bags, 2 dull tomato bags, 4 mirrored lavender bags.
vibrant violet bags contain 1 plaid purple bag, 2 mirrored olive bags, 3 dotted bronze bags, 2 posh turquoise bags.
muted cyan bags contain 2 dotted crimson bags, 1 muted red bag, 1 plaid lavender bag.
striped black bags contain 1 plaid white bag, 5 pale cyan bags, 4 posh plum bags.
wavy blue bags contain 3 plaid plum bags, 1 shiny bronze bag, 1 shiny magenta bag, 2 vibrant cyan bags.
bright gold bags contain 2 mirrored indigo bags, 3 faded cyan bags, 3 posh beige bags, 1 faded indigo bag.
dim magenta bags contain 1 dark black bag.
dotted magenta bags contain 1 posh tomato bag, 4 striped white bags, 2 posh fuchsia bags, 1 mirrored tan bag.
light lime bags contain 1 mirrored fuchsia bag, 1 dull cyan bag, 1 mirrored chartreuse bag, 2 dotted beige bags.
faded crimson bags contain 1 muted blue bag.
dim tomato bags contain 2 plaid black bags, 3 striped black bags.
wavy tan bags contain 3 wavy gray bags, 2 striped indigo bags.
plaid beige bags contain 2 bright yellow bags, 1 dark gray bag, 5 dotted gray bags.
bright coral bags contain 2 drab white bags, 3 bright maroon bags, 2 dotted tan bags, 4 shiny salmon bags.
plaid tomato bags contain 3 clear white bags, 2 clear coral bags, 1 mirrored blue bag.
striped chartreuse bags contain 4 pale green bags, 2 muted crimson bags.
dim salmon bags contain 5 posh magenta bags, 5 dark red bags, 4 dull teal bags, 4 plaid gray bags.
plaid aqua bags contain 5 dark black bags, 1 light chartreuse bag, 1 dotted maroon bag.
faded silver bags contain 2 plaid silver bags, 1 shiny teal bag, 3 clear purple bags.
drab red bags contain 2 mirrored brown bags.
faded brown bags contain 5 shiny plum bags.
vibrant indigo bags contain 2 vibrant bronze bags, 2 wavy orange bags.
pale salmon bags contain 5 dull cyan bags, 2 wavy orange bags.
drab olive bags contain 1 striped beige bag.
vibrant white bags contain 4 shiny gold bags.
striped teal bags contain 4 faded green bags, 3 mirrored brown bags.
posh beige bags contain 3 posh yellow bags, 1 dull yellow bag, 2 posh maroon bags.
pale violet bags contain 3 shiny teal bags, 5 drab purple bags, 5 light turquoise bags, 4 pale tan bags.
light turquoise bags contain 4 dim lavender bags.
muted yellow bags contain 4 dim crimson bags, 2 wavy gray bags.
mirrored maroon bags contain 5 wavy silver bags, 5 dull aqua bags, 1 faded black bag, 1 faded cyan bag.
drab lavender bags contain 4 drab tan bags, 4 pale violet bags, 2 wavy indigo bags.
light salmon bags contain 2 dim magenta bags, 5 dull orange bags.
drab turquoise bags contain 5 shiny gold bags.
vibrant magenta bags contain 5 wavy maroon bags, 4 dotted gray bags.
clear violet bags contain 1 bright red bag, 2 faded plum bags.
clear beige bags contain 5 faded purple bags.
light silver bags contain 4 vibrant gray bags, 2 wavy gray bags, 4 drab salmon bags.
dark coral bags contain 5 bright plum bags.
pale white bags contain 3 posh tomato bags, 1 clear purple bag, 2 posh crimson bags.
vibrant yellow bags contain 5 posh gold bags, 2 plaid turquoise bags, 5 muted blue bags.
drab yellow bags contain 3 bright salmon bags, 3 clear blue bags, 1 faded indigo bag.
pale red bags contain 5 drab olive bags.
muted lime bags contain 1 vibrant fuchsia bag, 1 shiny coral bag, 2 mirrored violet bags, 5 wavy gray bags.
faded chartreuse bags contain 2 muted tomato bags, 5 dotted gray bags, 1 faded cyan bag, 1 dotted plum bag.
dark beige bags contain 3 dotted violet bags, 5 bright silver bags, 4 posh magenta bags, 4 faded fuchsia bags.
pale olive bags contain 3 plaid red bags, 5 posh maroon bags.
vibrant brown bags contain 1 plaid white bag, 3 dotted gold bags, 2 faded chartreuse bags.
bright orange bags contain 2 shiny magenta bags.
light coral bags contain 3 faded black bags, 4 faded coral bags, 4 plaid teal bags, 1 dull aqua bag.
dull silver bags contain 2 drab salmon bags, 2 shiny violet bags, 1 dull aqua bag, 5 faded black bags.
striped cyan bags contain 1 faded purple bag.
dim beige bags contain 5 wavy violet bags.
dotted coral bags contain 4 dim salmon bags, 5 clear beige bags, 2 shiny bronze bags, 2 light tan bags.
faded aqua bags contain 3 bright magenta bags, 3 posh olive bags.
mirrored tan bags contain 5 plaid silver bags, 5 striped gray bags.
striped beige bags contain 4 dull yellow bags.
wavy coral bags contain no other bags.
dark indigo bags contain 1 drab olive bag, 2 faded cyan bags, 5 dim yellow bags.
dark white bags contain 1 vibrant gray bag, 3 mirrored plum bags, 5 clear lavender bags, 1 shiny purple bag.
muted maroon bags contain 1 dim blue bag, 1 pale silver bag.
dotted gray bags contain 1 mirrored teal bag, 2 shiny gold bags, 5 drab gold bags.
dull tan bags contain 4 bright silver bags, 4 pale lavender bags, 3 wavy gray bags.
dark chartreuse bags contain 2 wavy tan bags, 1 striped orange bag, 1 posh salmon bag.
wavy gray bags contain no other bags.
drab brown bags contain no other bags.
dotted red bags contain 2 shiny yellow bags, 1 muted yellow bag, 2 pale lime bags.
bright black bags contain 4 striped gray bags, 2 dull yellow bags.
clear tan bags contain 3 shiny gold bags, 1 dark magenta bag, 5 bright aqua bags, 1 clear maroon bag.
dim silver bags contain 2 pale green bags, 3 clear orange bags, 2 pale white bags, 1 posh yellow bag.
mirrored chartreuse bags contain 1 wavy gray bag, 5 shiny magenta bags, 2 plaid purple bags, 2 dotted beige bags.
striped indigo bags contain 5 pale bronze bags, 1 muted blue bag.
dull plum bags contain 2 plaid red bags, 5 bright plum bags.
striped tan bags contain 3 vibrant aqua bags, 2 muted blue bags.
dotted teal bags contain 3 vibrant tan bags, 3 bright plum bags.
wavy white bags contain 2 muted black bags, 2 muted tomato bags, 4 bright gold bags.
muted lavender bags contain 3 clear beige bags.
striped salmon bags contain 1 faded coral bag, 1 clear green bag.
vibrant tomato bags contain 3 shiny violet bags.
dim olive bags contain 2 faded tan bags, 3 mirrored maroon bags, 3 dark crimson bags, 5 muted cyan bags.
dotted lime bags contain 5 muted violet bags, 3 light beige bags, 2 drab brown bags.
striped purple bags contain 2 dull gray bags.
wavy tomato bags contain 1 posh crimson bag, 5 vibrant tan bags, 3 bright maroon bags.
bright lavender bags contain 2 mirrored lavender bags, 4 shiny cyan bags.
faded turquoise bags contain 3 dull gray bags, 5 dull yellow bags, 5 dotted bronze bags, 4 vibrant aqua bags.
vibrant olive bags contain 4 dull violet bags, 5 dark coral bags.
bright cyan bags contain 3 bright turquoise bags.
pale aqua bags contain 5 shiny green bags, 3 clear silver bags, 4 muted tan bags.
vibrant cyan bags contain 2 vibrant maroon bags, 5 plaid magenta bags, 1 light black bag, 5 bright maroon bags.
striped lime bags contain 4 faded red bags, 3 mirrored brown bags, 4 dim plum bags, 4 wavy silver bags.
pale gold bags contain 5 posh plum bags, 1 dull tomato bag, 3 dark teal bags, 4 shiny black bags.
drab black bags contain 5 pale brown bags.
wavy maroon bags contain 1 dull yellow bag, 4 dim crimson bags, 1 dim lavender bag, 2 drab brown bags.
plaid gold bags contain 2 dotted gray bags, 2 pale orange bags, 5 mirrored brown bags.
shiny gray bags contain 3 faded lavender bags, 3 drab yellow bags, 3 wavy green bags.
bright beige bags contain 2 drab turquoise bags.
muted red bags contain 4 wavy gray bags, 5 mirrored lime bags.
bright violet bags contain 5 striped cyan bags, 2 pale blue bags, 1 clear plum bag.
plaid bronze bags contain 5 muted green bags, 5 posh gray bags, 1 dull silver bag, 4 faded black bags.
shiny gold bags contain 4 wavy green bags, 2 mirrored teal bags, 4 dark tomato bags, 2 faded beige bags.
plaid cyan bags contain 5 bright green bags.
posh green bags contain 5 mirrored beige bags.
dull purple bags contain 5 dull blue bags.
pale fuchsia bags contain 4 mirrored cyan bags, 1 faded red bag, 5 wavy green bags.
wavy olive bags contain 5 dotted olive bags, 3 shiny tan bags, 4 dotted magenta bags, 2 clear violet bags.
faded tan bags contain 3 plaid teal bags, 5 muted tomato bags.
pale blue bags contain 4 faded plum bags, 5 wavy green bags, 3 shiny violet bags, 2 faded black bags.
vibrant blue bags contain 1 shiny yellow bag, 2 clear tan bags, 5 posh crimson bags.
mirrored beige bags contain 5 shiny magenta bags, 3 pale blue bags.
dark maroon bags contain 4 bright green bags, 5 faded bronze bags, 1 faded indigo bag, 3 dotted teal bags.
plaid violet bags contain 4 posh yellow bags, 3 faded cyan bags, 1 mirrored lime bag, 2 striped black bags.
wavy indigo bags contain 5 dotted aqua bags, 1 drab salmon bag, 5 bright cyan bags, 4 dotted purple bags.
dull violet bags contain 1 vibrant tomato bag, 4 plaid blue bags, 5 shiny plum bags, 2 dotted aqua bags.
dotted salmon bags contain 5 plaid gray bags.
drab salmon bags contain 4 faded yellow bags.
light maroon bags contain 5 bright cyan bags.
drab cyan bags contain 2 dark beige bags, 1 dotted purple bag, 5 dark coral bags.
faded salmon bags contain 4 clear bronze bags, 4 muted green bags, 1 faded plum bag, 4 bright silver bags.
clear turquoise bags contain 5 shiny silver bags, 5 striped maroon bags, 5 posh chartreuse bags.
clear silver bags contain 5 vibrant fuchsia bags, 5 vibrant lime bags, 5 faded red bags.
muted magenta bags contain 3 dotted teal bags, 3 wavy orange bags.
striped aqua bags contain 4 bright green bags, 2 mirrored maroon bags, 5 muted gold bags, 2 pale brown bags.
drab magenta bags contain 5 vibrant tomato bags, 1 wavy violet bag.
clear yellow bags contain 4 drab salmon bags.
striped gold bags contain 3 dull salmon bags.
posh black bags contain 2 dim black bags, 4 plaid crimson bags.
drab fuchsia bags contain 1 drab turquoise bag.
mirrored fuchsia bags contain 5 shiny cyan bags, 4 dim crimson bags, 2 drab brown bags.
pale lavender bags contain 1 shiny lavender bag, 4 mirrored fuchsia bags, 1 wavy silver bag, 1 bright black bag.
light teal bags contain 2 vibrant fuchsia bags, 4 mirrored indigo bags.
light cyan bags contain 5 mirrored cyan bags, 1 faded fuchsia bag.
wavy lavender bags contain 1 faded gray bag.
clear purple bags contain 4 light red bags, 3 shiny teal bags.
mirrored coral bags contain 2 bright tomato bags, 4 drab fuchsia bags, 4 pale salmon bags, 1 wavy teal bag.
muted crimson bags contain 2 faded lime bags, 2 wavy plum bags, 5 bright gold bags.
plaid silver bags contain 4 wavy coral bags, 3 shiny violet bags, 5 faded beige bags.
posh orange bags contain 4 dim blue bags, 4 mirrored lime bags, 1 muted chartreuse bag.
dotted olive bags contain 4 dim plum bags, 5 bright aqua bags.
vibrant black bags contain 3 dark purple bags.
dim turquoise bags contain 3 shiny coral bags, 4 dotted indigo bags, 4 muted yellow bags, 4 dull bronze bags.
light gray bags contain 1 plaid silver bag, 4 faded purple bags, 3 faded green bags.
muted white bags contain 2 faded yellow bags, 4 dark white bags, 3 drab green bags, 4 dim yellow bags.
pale gray bags contain 4 pale brown bags, 3 dotted indigo bags, 1 mirrored indigo bag, 1 bright silver bag.
dull brown bags contain 1 plaid silver bag, 2 pale bronze bags, 3 dark magenta bags, 5 posh yellow bags.
bright indigo bags contain 4 dull red bags, 5 dark yellow bags.
dotted purple bags contain 2 muted yellow bags.
bright salmon bags contain 2 vibrant orange bags, 4 vibrant bronze bags, 4 shiny coral bags, 3 drab brown bags.
shiny chartreuse bags contain 1 dotted red bag, 4 wavy lavender bags, 2 muted aqua bags.
light brown bags contain 3 dark teal bags, 3 faded lime bags, 5 bright coral bags, 5 plaid red bags.
dim orange bags contain 4 clear lime bags, 2 plaid teal bags, 4 plaid lavender bags.
wavy teal bags contain 3 drab chartreuse bags.
posh purple bags contain 4 striped salmon bags, 2 mirrored black bags.
dim cyan bags contain 5 mirrored fuchsia bags, 5 dotted bronze bags, 1 light violet bag.
clear fuchsia bags contain 3 dim yellow bags, 1 pale yellow bag.
muted fuchsia bags contain 2 mirrored beige bags, 4 dull black bags, 5 mirrored red bags.
striped bronze bags contain 3 muted violet bags, 4 dull brown bags, 4 drab silver bags, 5 dotted maroon bags.
bright silver bags contain 2 drab gray bags, 3 wavy coral bags, 4 posh yellow bags.
light tomato bags contain 1 muted green bag, 3 bright indigo bags, 1 wavy blue bag.
dark red bags contain 1 dim brown bag.
vibrant fuchsia bags contain 1 shiny gold bag.
vibrant crimson bags contain 4 dull olive bags, 1 striped orange bag.
clear lime bags contain 5 dull crimson bags.
clear lavender bags contain 2 dotted gold bags, 3 light crimson bags, 3 mirrored red bags, 2 dark purple bags.
dark silver bags contain 4 muted silver bags.
posh white bags contain 3 light maroon bags, 5 dotted brown bags, 5 light yellow bags.
dark gold bags contain 4 muted plum bags, 4 posh silver bags.
dotted cyan bags contain 4 shiny magenta bags, 3 drab red bags.
plaid chartreuse bags contain 3 posh fuchsia bags, 4 light white bags.
dim lime bags contain 2 dull green bags, 5 posh magenta bags.
shiny indigo bags contain 5 light violet bags, 3 plaid orange bags, 2 drab turquoise bags, 5 striped beige bags.
bright tan bags contain 3 dotted fuchsia bags, 1 dim yellow bag, 2 mirrored violet bags, 2 plaid silver bags.
mirrored green bags contain 2 plaid turquoise bags, 5 bright turquoise bags, 5 light lime bags, 5 plaid white bags.
light purple bags contain 2 striped silver bags.
shiny violet bags contain 4 dull yellow bags, 1 faded red bag, 3 pale lime bags, 4 drab brown bags.
pale coral bags contain 5 drab indigo bags.
faded olive bags contain 4 posh tan bags, 3 striped orange bags, 3 wavy gold bags.
wavy cyan bags contain 3 mirrored teal bags.
wavy magenta bags contain 5 bright coral bags, 2 dark black bags, 1 muted beige bag.
wavy green bags contain 2 light violet bags.
shiny purple bags contain 5 wavy orange bags, 3 striped turquoise bags.
wavy orange bags contain 2 bright turquoise bags, 3 mirrored lime bags, 5 light violet bags.
shiny crimson bags contain 5 plaid olive bags, 2 mirrored turquoise bags, 3 posh lavender bags, 4 muted bronze bags.
dark tomato bags contain 3 posh maroon bags, 5 dotted purple bags, 1 shiny violet bag, 2 drab silver bags.
clear green bags contain 1 light black bag.
clear indigo bags contain 5 vibrant crimson bags.
muted coral bags contain 2 mirrored black bags, 4 dull silver bags.
clear teal bags contain 1 posh tan bag, 3 faded plum bags, 3 wavy maroon bags, 1 mirrored lavender bag.
shiny tomato bags contain 1 clear tomato bag, 5 bright gray bags, 1 striped cyan bag, 5 vibrant lavender bags.
shiny silver bags contain 2 dim violet bags, 2 striped teal bags, 2 mirrored beige bags, 3 drab turquoise bags.
posh indigo bags contain 5 drab fuchsia bags.
dull lime bags contain 5 vibrant cyan bags, 5 vibrant chartreuse bags.
mirrored lavender bags contain 2 drab gold bags, 5 vibrant aqua bags, 1 plaid teal bag.
faded coral bags contain 2 clear tan bags, 4 faded green bags, 2 faded fuchsia bags, 3 drab brown bags.
mirrored purple bags contain 1 plaid black bag, 5 dim teal bags, 4 muted bronze bags.
bright lime bags contain 1 light lavender bag.
pale turquoise bags contain 2 striped silver bags, 2 muted tan bags, 4 vibrant lime bags, 4 faded lime bags.
posh cyan bags contain 4 bright salmon bags.
wavy bronze bags contain 1 drab olive bag, 5 plaid orange bags, 1 wavy silver bag, 2 faded bronze bags.
light tan bags contain 3 faded violet bags.
mirrored brown bags contain 2 pale lime bags, 2 dull gray bags, 5 dotted bronze bags.
posh lime bags contain 4 dotted beige bags.
drab maroon bags contain 5 wavy gray bags, 4 posh magenta bags, 2 dull gray bags.
light yellow bags contain 4 striped lime bags, 3 faded purple bags, 1 plaid silver bag, 2 muted violet bags.
vibrant silver bags contain 3 posh purple bags.
mirrored plum bags contain 1 muted salmon bag, 4 light salmon bags, 2 faded brown bags.
mirrored gray bags contain 1 wavy silver bag, 1 dotted maroon bag, 4 posh maroon bags, 3 muted blue bags.
light blue bags contain 5 striped magenta bags, 2 dim plum bags, 4 muted tomato bags.
dim violet bags contain 4 dotted maroon bags, 1 pale lime bag, 2 mirrored brown bags, 2 bright salmon bags.
dotted violet bags contain 2 dim maroon bags, 3 faded beige bags.
shiny red bags contain 1 wavy gray bag, 3 clear bronze bags.
dotted black bags contain 4 pale fuchsia bags.
mirrored gold bags contain 3 pale cyan bags, 1 dark green bag, 5 plaid white bags, 1 drab black bag.
shiny plum bags contain 1 posh crimson bag, 5 bright yellow bags, 1 dull indigo bag.
dotted brown bags contain 5 dotted black bags, 2 clear yellow bags, 1 mirrored violet bag, 4 shiny gold bags.
faded orange bags contain 3 posh indigo bags, 3 bright magenta bags, 2 light teal bags, 2 bright turquoise bags.
mirrored tomato bags contain 1 dim bronze bag, 1 bright salmon bag, 4 dark purple bags, 4 light olive bags.
dotted orange bags contain 3 faded brown bags.
dull red bags contain 1 plaid black bag.
dim purple bags contain 3 vibrant purple bags, 2 dim cyan bags, 3 clear tan bags, 5 wavy beige bags.
dull coral bags contain 5 drab chartreuse bags.
dull black bags contain 1 vibrant bronze bag.
pale crimson bags contain 4 striped brown bags.
faded green bags contain 2 shiny gold bags, 5 dim maroon bags.
shiny bronze bags contain 4 dull turquoise bags.
dotted tomato bags contain 3 clear teal bags, 2 wavy crimson bags, 4 clear tan bags.
pale purple bags contain 2 shiny aqua bags.
bright teal bags contain 2 drab salmon bags, 4 dim yellow bags, 1 drab maroon bag.
pale tomato bags contain 3 striped black bags, 2 mirrored fuchsia bags.
striped silver bags contain 1 wavy turquoise bag.
dim gold bags contain 5 dim crimson bags, 4 dim violet bags, 2 striped bronze bags.
light orange bags contain 2 mirrored turquoise bags, 5 bright crimson bags, 4 pale tan bags, 1 drab teal bag.
wavy salmon bags contain 3 plaid orange bags, 2 faded cyan bags, 3 clear purple bags, 5 dotted orange bags.
vibrant chartreuse bags contain 2 plaid red bags, 3 dull aqua bags, 1 mirrored brown bag.
striped orange bags contain 4 dim crimson bags, 2 wavy coral bags, 1 dim plum bag.
light black bags contain 2 clear bronze bags, 2 posh cyan bags, 1 vibrant fuchsia bag.
dark salmon bags contain 2 vibrant tan bags, 1 shiny chartreuse bag.
drab gold bags contain 4 dim crimson bags, 2 light violet bags, 1 vibrant orange bag.
bright bronze bags contain 3 clear green bags.
dim coral bags contain 3 dark red bags, 5 dim lavender bags.
dull orange bags contain 5 drab black bags, 1 dotted violet bag, 3 dim blue bags.
clear brown bags contain 2 dark red bags, 1 dull turquoise bag, 1 mirrored red bag, 5 wavy beige bags.
muted tan bags contain 3 dotted teal bags, 3 mirrored cyan bags, 5 faded fuchsia bags, 2 drab white bags.
faded lavender bags contain 1 muted silver bag, 1 mirrored brown bag, 3 dark tomato bags, 3 pale lime bags.
dim bronze bags contain 1 bright yellow bag.
wavy lime bags contain 4 bright aqua bags, 5 wavy silver bags.
dark black bags contain 4 dark green bags.
faded lime bags contain 1 faded lavender bag, 5 plaid gray bags, 3 posh turquoise bags, 5 faded bronze bags.
drab lime bags contain 1 light cyan bag, 4 dotted red bags.
dull olive bags contain 3 dim plum bags, 3 pale lime bags, 4 posh yellow bags, 5 shiny violet bags.
clear black bags contain 1 faded fuchsia bag, 3 posh aqua bags.
dark crimson bags contain 2 dotted beige bags.
faded cyan bags contain 5 clear blue bags.
pale tan bags contain 4 posh aqua bags, 5 dim yellow bags, 2 light chartreuse bags.
light red bags contain 3 faded fuchsia bags, 5 dotted purple bags, 2 mirrored indigo bags, 3 shiny violet bags.
muted olive bags contain 5 posh tan bags, 4 faded tan bags.
plaid yellow bags contain 4 faded coral bags.
clear tomato bags contain 3 plaid salmon bags, 2 faded lavender bags.
vibrant maroon bags contain 3 muted lime bags, 4 vibrant fuchsia bags, 4 drab yellow bags.
posh red bags contain 5 posh cyan bags, 2 faded black bags, 1 bright crimson bag, 5 wavy plum bags.
mirrored silver bags contain 5 dull aqua bags.
wavy yellow bags contain 3 faded white bags, 1 dotted fuchsia bag.
light plum bags contain 1 vibrant bronze bag, 4 vibrant green bags, 1 plaid turquoise bag, 4 posh cyan bags.
shiny lime bags contain 1 posh tomato bag, 4 mirrored cyan bags, 2 plaid white bags, 3 shiny aqua bags.
light gold bags contain 1 drab silver bag, 3 clear brown bags, 2 wavy fuchsia bags.
dotted indigo bags contain 2 plaid teal bags, 1 dull yellow bag.
bright fuchsia bags contain 3 faded teal bags, 2 faded silver bags, 3 dim red bags, 1 muted lime bag.
mirrored black bags contain 5 muted violet bags.
dark magenta bags contain 5 dim crimson bags.
shiny yellow bags contain 3 clear tan bags.
muted orange bags contain 3 striped bronze bags.
dull bronze bags contain 1 dotted gray bag, 2 clear bronze bags, 5 light turquoise bags.
mirrored blue bags contain 3 shiny coral bags.
vibrant turquoise bags contain 2 pale blue bags, 4 shiny beige bags.
pale green bags contain 1 posh crimson bag, 2 drab gold bags, 3 drab brown bags.
striped yellow bags contain 5 mirrored red bags, 4 plaid salmon bags, 4 muted salmon bags, 5 faded tan bags.
faded tomato bags contain 5 clear blue bags.
faded teal bags contain 2 posh teal bags, 3 light violet bags, 5 dotted olive bags, 3 shiny teal bags.
clear blue bags contain 3 dull yellow bags, 3 light violet bags, 2 wavy coral bags, 4 shiny cyan bags.
dotted blue bags contain 5 muted coral bags, 4 muted salmon bags.
shiny lavender bags contain 2 dotted crimson bags, 4 light lime bags, 1 posh cyan bag.
mirrored magenta bags contain 3 mirrored fuchsia bags, 3 clear teal bags, 4 muted fuchsia bags.
faded yellow bags contain 1 dim crimson bag, 3 dull cyan bags.
muted teal bags contain 3 dull red bags.
light lavender bags contain 4 striped orange bags, 2 mirrored beige bags.
posh chartreuse bags contain 2 dark purple bags.
pale beige bags contain 4 pale silver bags, 2 striped crimson bags.
pale lime bags contain no other bags.
faded blue bags contain 1 mirrored red bag, 3 drab cyan bags, 3 dull yellow bags, 5 plaid plum bags.
dull maroon bags contain 5 light blue bags, 3 dull crimson bags, 3 clear yellow bags.
dim plum bags contain no other bags.
drab beige bags contain 5 light black bags, 1 striped teal bag, 4 mirrored violet bags.
pale orange bags contain 4 clear chartreuse bags.
dotted beige bags contain 4 dark yellow bags, 3 light black bags, 5 bright aqua bags.
plaid salmon bags contain 3 posh silver bags, 2 wavy violet bags, 3 striped tan bags.
clear gray bags contain 4 wavy purple bags.
drab coral bags contain 2 faded silver bags, 3 light fuchsia bags, 2 dull indigo bags, 3 drab cyan bags.
dark yellow bags contain 2 mirrored fuchsia bags.
posh turquoise bags contain 2 dim lavender bags, 1 muted yellow bag, 4 bright plum bags.
bright tomato bags contain 5 striped orange bags, 3 bright turquoise bags, 3 dull yellow bags.
drab silver bags contain 2 light turquoise bags, 3 mirrored indigo bags, 4 vibrant orange bags.
clear cyan bags contain 4 muted cyan bags, 2 faded silver bags, 3 faded yellow bags, 4 faded crimson bags.
mirrored orange bags contain 3 dark green bags, 5 drab salmon bags, 4 posh gray bags.
muted gray bags contain 2 mirrored lime bags.
pale brown bags contain 4 dull gray bags.
wavy silver bags contain 5 faded red bags, 5 muted silver bags.
dull blue bags contain 1 dotted olive bag, 4 muted violet bags.
dull magenta bags contain 4 muted silver bags, 4 posh salmon bags, 4 plaid tomato bags.
dark cyan bags contain 5 shiny purple bags, 3 vibrant coral bags, 1 posh green bag, 2 dull cyan bags.
shiny turquoise bags contain 3 pale white bags, 5 dotted black bags.
dark green bags contain 4 dim maroon bags.
posh magenta bags contain 2 pale brown bags.
dull salmon bags contain 5 posh magenta bags, 5 dotted indigo bags, 4 drab orange bags, 5 mirrored gray bags.
dull gray bags contain 5 wavy coral bags, 5 vibrant tan bags, 5 mirrored olive bags.
dull turquoise bags contain 3 clear black bags, 5 striped indigo bags, 3 shiny white bags, 2 faded fuchsia bags.
striped violet bags contain 2 faded white bags.
muted brown bags contain 2 dim cyan bags, 4 drab black bags, 5 clear bronze bags, 1 shiny green bag.
drab plum bags contain 2 dark teal bags, 5 plaid lavender bags, 4 mirrored blue bags.
striped green bags contain 1 mirrored olive bag, 3 clear green bags, 3 dim yellow bags, 3 muted red bags.
bright white bags contain 5 shiny coral bags, 5 faded fuchsia bags.
vibrant tan bags contain no other bags.
faded white bags contain 4 pale crimson bags, 1 plaid green bag, 5 faded bronze bags.
clear orange bags contain 3 bright cyan bags, 4 dotted green bags, 3 faded purple bags, 3 faded black bags.
drab chartreuse bags contain 5 wavy gray bags, 4 muted turquoise bags.
mirrored aqua bags contain 2 bright crimson bags, 4 mirrored magenta bags, 3 clear teal bags.
wavy crimson bags contain 5 posh yellow bags, 3 clear blue bags, 1 striped lime bag, 2 faded cyan bags.
shiny black bags contain 4 dim cyan bags, 3 striped beige bags, 3 posh beige bags, 4 bright gold bags.
wavy brown bags contain 2 wavy coral bags, 3 shiny yellow bags.
pale plum bags contain 3 drab olive bags, 1 light turquoise bag.
drab green bags contain 1 mirrored orange bag, 5 dark turquoise bags, 5 posh chartreuse bags, 2 pale magenta bags.
drab teal bags contain 5 faded silver bags, 4 striped brown bags, 4 drab purple bags.
dull gold bags contain 1 dark orange bag, 4 faded lime bags.
posh gray bags contain 1 posh cyan bag, 2 plaid crimson bags, 1 plaid olive bag, 2 bright yellow bags.
dim red bags contain 3 posh chartreuse bags, 4 drab white bags, 2 bright green bags, 4 drab yellow bags.
dull chartreuse bags contain 1 drab fuchsia bag, 2 dull crimson bags, 4 light coral bags.
plaid magenta bags contain 1 mirrored silver bag.
drab crimson bags contain 3 faded tan bags.
faded bronze bags contain 4 dim plum bags, 4 faded fuchsia bags, 4 bright aqua bags, 2 vibrant orange bags.
plaid gray bags contain 3 light fuchsia bags, 1 dotted turquoise bag.
vibrant bronze bags contain 1 wavy green bag, 2 muted yellow bags.
clear maroon bags contain 3 dim plum bags, 4 light red bags, 5 wavy silver bags.
drab blue bags contain 1 plaid gray bag, 5 mirrored gray bags, 5 shiny magenta bags.
posh bronze bags contain 3 muted crimson bags, 5 wavy gray bags.
dim black bags contain 1 bright green bag, 3 dim maroon bags, 4 mirrored cyan bags, 4 faded black bags.
vibrant green bags contain 4 vibrant blue bags, 4 wavy gold bags, 5 vibrant fuchsia bags, 3 muted yellow bags.
dim teal bags contain 5 faded fuchsia bags, 3 striped lavender bags, 2 pale lime bags, 4 clear maroon bags.
posh silver bags contain 2 shiny magenta bags.
plaid blue bags contain 2 pale brown bags, 4 drab brown bags, 2 drab plum bags, 1 wavy maroon bag.
dim fuchsia bags contain 3 dark purple bags, 4 shiny red bags, 1 clear chartreuse bag, 2 pale gold bags.
muted turquoise bags contain 4 striped maroon bags, 1 dim lavender bag, 2 clear beige bags, 3 wavy maroon bags.
shiny beige bags contain 4 shiny red bags, 1 vibrant bronze bag, 5 plaid chartreuse bags, 3 mirrored teal bags.
muted blue bags contain 3 pale lime bags, 4 dim crimson bags.
faded black bags contain 4 striped beige bags, 4 muted blue bags.
muted plum bags contain 5 drab white bags, 2 dull cyan bags, 1 light gray bag.
dark tan bags contain 2 light aqua bags.
clear white bags contain 5 dotted plum bags.
dotted aqua bags contain 4 posh turquoise bags, 5 bright aqua bags.
posh gold bags contain 5 pale crimson bags, 4 light fuchsia bags, 4 plaid turquoise bags.
bright turquoise bags contain 3 mirrored brown bags, 2 dotted black bags, 3 dull indigo bags, 4 plaid white bags.
light white bags contain 5 mirrored brown bags, 2 dim magenta bags.
posh crimson bags contain 1 bright green bag, 3 posh yellow bags, 4 posh turquoise bags, 4 vibrant aqua bags.
muted silver bags contain 1 dotted purple bag, 2 posh yellow bags, 5 mirrored indigo bags, 4 shiny violet bags.
pale indigo bags contain 2 mirrored aqua bags, 1 vibrant tomato bag, 5 striped violet bags, 2 shiny white bags.
vibrant aqua bags contain 5 pale bronze bags, 5 posh yellow bags, 2 dull cyan bags, 2 bright silver bags.
posh brown bags contain 2 bright green bags, 4 mirrored fuchsia bags, 4 dotted salmon bags.
shiny orange bags contain 2 faded lavender bags, 3 dull yellow bags.
shiny fuchsia bags contain 2 striped teal bags.
dark lavender bags contain 4 mirrored teal bags, 5 plaid gray bags.
vibrant teal bags contain 3 drab orange bags, 1 plaid red bag, 4 clear cyan bags.
dotted lavender bags contain 5 pale gray bags.
plaid lime bags contain 5 bright maroon bags, 2 dim tomato bags, 2 mirrored teal bags.
dim white bags contain 3 plaid turquoise bags, 2 faded red bags, 5 striped orange bags.
shiny coral bags contain 2 posh turquoise bags.
posh coral bags contain 4 bright salmon bags, 4 dim coral bags, 1 pale fuchsia bag.
drab aqua bags contain 1 vibrant maroon bag, 4 muted green bags, 5 muted red bags.
dim crimson bags contain no other bags.
vibrant purple bags contain 5 dark teal bags, 3 muted crimson bags.
dull fuchsia bags contain 5 dull aqua bags, 3 clear silver bags.
dotted green bags contain 3 dull tomato bags, 3 drab black bags, 5 dim red bags.
muted green bags contain 4 light cyan bags, 2 light red bags, 3 posh turquoise bags, 3 dark orange bags.
wavy aqua bags contain 4 faded white bags, 5 dim brown bags, 2 plaid salmon bags.
light magenta bags contain 4 dotted black bags, 3 posh blue bags, 2 bright coral bags.
light aqua bags contain 1 light yellow bag, 1 plaid gray bag, 1 vibrant cyan bag, 4 dotted aqua bags.
dark purple bags contain 2 plaid silver bags, 2 muted gray bags, 1 clear maroon bag.
wavy violet bags contain 4 plaid white bags, 5 dull red bags.
faded plum bags contain 5 posh beige bags, 2 light turquoise bags, 5 vibrant orange bags.
dull beige bags contain 2 dark blue bags, 2 shiny green bags.
clear crimson bags contain 1 vibrant salmon bag.
drab violet bags contain 4 faded purple bags, 4 plaid turquoise bags.
dull white bags contain 4 striped brown bags, 5 wavy black bags.
dark teal bags contain 3 faded fuchsia bags, 2 dotted maroon bags, 4 plaid orange bags.
dark blue bags contain 3 shiny bronze bags, 4 bright yellow bags, 1 vibrant bronze bag, 5 dull blue bags.
vibrant salmon bags contain 4 drab aqua bags.
plaid coral bags contain 2 drab salmon bags.
vibrant gray bags contain 3 dark purple bags, 3 vibrant green bags, 2 clear teal bags.
clear gold bags contain 3 mirrored green bags, 4 plaid gray bags, 1 bright gray bag.
posh salmon bags contain 2 shiny bronze bags, 3 faded coral bags, 3 mirrored chartreuse bags, 3 vibrant green bags.
wavy red bags contain 1 posh brown bag.
faded red bags contain 5 dim lavender bags, 4 bright plum bags, 4 striped orange bags.
striped lavender bags contain 4 dull black bags, 4 dark crimson bags, 1 posh turquoise bag, 4 light beige bags.
dull tomato bags contain 2 wavy silver bags, 3 muted yellow bags, 3 wavy maroon bags, 2 dotted black bags.
shiny salmon bags contain 1 wavy turquoise bag, 4 dull green bags, 5 dull aqua bags.
pale yellow bags contain 1 dull gray bag.
clear olive bags contain 1 posh crimson bag, 4 pale crimson bags.
clear coral bags contain 4 dark orange bags, 4 dim crimson bags.
dark bronze bags contain 4 mirrored silver bags, 3 light plum bags.
bright aqua bags contain 1 vibrant tan bag, 3 clear blue bags, 2 shiny violet bags.
striped blue bags contain 5 muted tomato bags, 5 muted magenta bags, 5 drab white bags, 3 pale crimson bags.
dim lavender bags contain 2 posh yellow bags.
dim green bags contain 2 mirrored chartreuse bags, 5 plaid orange bags.
plaid maroon bags contain 1 dark magenta bag, 1 posh beige bag, 5 drab plum bags, 5 bright aqua bags.
pale maroon bags contain 1 clear bronze bag, 1 plaid blue bag.
clear salmon bags contain 1 dark coral bag.
shiny magenta bags contain 3 vibrant aqua bags, 3 dim maroon bags.
mirrored yellow bags contain 4 wavy black bags, 4 pale gray bags, 4 mirrored magenta bags.
shiny green bags contain 3 striped lime bags, 2 posh yellow bags.
dim aqua bags contain 4 dotted aqua bags.
mirrored olive bags contain 1 muted blue bag, 5 vibrant tan bags, 5 posh yellow bags.
mirrored violet bags contain 1 plaid orange bag, 4 drab salmon bags.
pale chartreuse bags contain 2 muted tomato bags, 3 faded indigo bags.
striped maroon bags contain 4 shiny lime bags.
muted indigo bags contain 4 dim magenta bags, 3 muted orange bags, 2 dim beige bags, 4 vibrant purple bags.
dim maroon bags contain 2 pale bronze bags, 4 bright aqua bags.
pale teal bags contain 5 dark gray bags, 2 dark tomato bags, 1 dull red bag.
posh aqua bags contain 3 mirrored lavender bags.
vibrant lime bags contain 2 wavy silver bags.
dark turquoise bags contain 2 wavy black bags.
vibrant gold bags contain 2 striped brown bags, 2 faded indigo bags.
faded maroon bags contain 4 mirrored tan bags, 3 posh beige bags, 5 posh orange bags.
faded fuchsia bags contain 1 bright salmon bag.
light fuchsia bags contain 2 dull black bags.
striped coral bags contain 1 dull green bag, 2 muted beige bags, 2 bright coral bags, 5 wavy orange bags.
bright brown bags contain 4 plaid gold bags.
plaid olive bags contain 2 dim coral bags.
dull yellow bags contain 3 drab brown bags.
posh tomato bags contain 3 dotted purple bags.
clear magenta bags contain 1 mirrored brown bag, 5 dotted plum bags, 1 light coral bag, 2 drab maroon bags.
faded indigo bags contain 1 drab gold bag.
plaid white bags contain 5 mirrored fuchsia bags.
bright green bags contain 1 posh beige bag, 5 dark green bags, 4 dull aqua bags.
bright gray bags contain 3 light lavender bags.
posh violet bags contain 2 vibrant tan bags, 5 pale magenta bags, 3 posh white bags, 5 mirrored gray bags.
dull teal bags contain 1 dull brown bag, 2 drab gray bags, 2 shiny cyan bags, 1 mirrored lavender bag.
shiny cyan bags contain 1 bright plum bag, 1 shiny violet bag.
posh plum bags contain 4 drab brown bags, 4 mirrored olive bags, 4 dim maroon bags, 4 striped orange bags.
plaid fuchsia bags contain 5 drab blue bags.
dull green bags contain 1 mirrored red bag, 1 bright turquoise bag, 2 dark beige bags.
bright chartreuse bags contain 5 dim white bags, 2 faded red bags.
faded beige bags contain 5 posh turquoise bags, 5 vibrant tan bags, 2 posh yellow bags, 4 mirrored indigo bags.
dim chartreuse bags contain 1 posh magenta bag, 2 dotted crimson bags, 5 clear black bags, 4 striped olive bags.
drab indigo bags contain 5 striped orange bags, 1 pale chartreuse bag, 2 mirrored indigo bags, 4 clear purple bags.
light bronze bags contain 4 muted red bags.
shiny teal bags contain 3 faded beige bags, 2 striped beige bags, 2 mirrored olive bags, 5 plaid white bags.
shiny white bags contain 2 wavy silver bags, 3 plaid turquoise bags, 1 dim plum bag, 4 posh plum bags.
pale silver bags contain 2 pale cyan bags, 5 muted teal bags, 5 plaid turquoise bags, 2 clear coral bags.
dim yellow bags contain 2 vibrant tomato bags, 3 bright salmon bags, 4 dull gray bags.
mirrored indigo bags contain 5 posh yellow bags, 5 faded red bags.
clear bronze bags contain 1 posh turquoise bag, 3 faded black bags, 3 shiny coral bags.
mirrored turquoise bags contain 2 mirrored teal bags, 4 striped black bags, 4 dull teal bags, 4 clear black bags.
mirrored red bags contain 3 clear purple bags, 5 light red bags, 5 mirrored beige bags.
bright olive bags contain 3 vibrant plum bags.
drab white bags contain 4 dim lavender bags.
clear red bags contain 5 dark gray bags, 1 shiny green bag, 2 striped brown bags, 3 plaid olive bags.
vibrant red bags contain 2 dull bronze bags, 2 dotted magenta bags, 5 dark red bags, 1 drab magenta bag.
striped crimson bags contain 4 dull silver bags, 4 dark gray bags, 4 light red bags, 2 posh chartreuse bags.
dotted tan bags contain 4 shiny lime bags.
plaid orange bags contain 1 wavy maroon bag, 2 drab brown bags, 5 dull black bags.
clear plum bags contain 2 muted yellow bags, 5 faded turquoise bags, 1 faded beige bag, 1 dull aqua bag.
mirrored bronze bags contain 5 posh magenta bags.
mirrored cyan bags contain 4 striped orange bags, 3 wavy gray bags, 1 mirrored olive bag, 2 dim lavender bags.
striped white bags contain 4 striped aqua bags.
bright red bags contain 4 dotted gray bags, 4 dark green bags, 4 shiny aqua bags, 4 shiny indigo bags.
dim blue bags contain 1 dull black bag, 4 dotted turquoise bags.
dotted bronze bags contain 5 mirrored indigo bags, 4 wavy coral bags.
muted gold bags contain 4 wavy plum bags.
clear aqua bags contain 2 clear teal bags, 4 mirrored crimson bags, 1 dull silver bag, 3 bright crimson bags.
dim brown bags contain 3 clear green bags, 5 bright cyan bags.
bright plum bags contain 3 striped orange bags, 2 pale lime bags.
bright blue bags contain 1 shiny violet bag, 4 wavy gold bags.
bright maroon bags contain 1 striped indigo bag, 3 striped beige bags, 1 shiny teal bag.
pale cyan bags contain 1 dull gray bag, 2 mirrored lime bags.
wavy chartreuse bags contain 5 dark red bags, 5 plaid fuchsia bags, 2 dim salmon bags.
dull cyan bags contain 2 dim lavender bags, 3 dull yellow bags, 5 dim crimson bags, 5 dull gray bags.
shiny brown bags contain 3 wavy aqua bags, 2 faded lime bags.
dim tan bags contain 5 pale orange bags, 2 mirrored blue bags.
drab purple bags contain 1 vibrant bronze bag, 4 pale magenta bags.
wavy fuchsia bags contain 3 bright aqua bags, 2 dim lavender bags, 4 pale lime bags.
mirrored teal bags contain 4 dull yellow bags, 2 faded black bags, 3 pale blue bags, 5 wavy coral bags.
plaid brown bags contain 4 posh chartreuse bags, 2 dark beige bags.
plaid tan bags contain 3 pale turquoise bags, 3 dark teal bags.
posh tan bags contain 2 faded yellow bags, 3 dim tomato bags, 1 dotted olive bag, 1 light violet bag.
plaid plum bags contain 5 muted yellow bags, 2 dim crimson bags.
plaid purple bags contain 2 posh magenta bags.
wavy gold bags contain 2 shiny teal bags, 2 mirrored lime bags.
striped tomato bags contain 5 shiny maroon bags, 3 mirrored lime bags.
vibrant lavender bags contain 1 bright turquoise bag.
muted violet bags contain 2 dull tomato bags, 4 mirrored lavender bags.
light crimson bags contain 4 drab violet bags.
bright crimson bags contain 3 drab silver bags.
muted purple bags contain 3 dim aqua bags.
posh lavender bags contain 4 mirrored magenta bags.
posh olive bags contain 2 bright salmon bags, 2 faded violet bags, 2 wavy indigo bags, 2 vibrant yellow bags.
muted aqua bags contain 4 bright red bags, 3 vibrant crimson bags, 3 dotted red bags.
shiny aqua bags contain 2 mirrored lavender bags.
bright yellow bags contain 2 muted gray bags, 4 plaid turquoise bags, 1 dull yellow bag, 5 wavy green bags.
light chartreuse bags contain 5 vibrant bronze bags, 5 posh magenta bags, 2 dotted salmon bags, 3 plaid red bags.
striped fuchsia bags contain 4 dull plum bags, 5 mirrored silver bags.
dull lavender bags contain 4 mirrored lavender bags, 2 plaid crimson bags, 4 dotted turquoise bags, 2 drab purple bags.
mirrored lime bags contain 2 pale lime bags, 4 light turquoise bags, 5 bright plum bags.
wavy turquoise bags contain 1 pale bronze bag.
pale magenta bags contain 2 dull teal bags, 2 muted red bags.
dotted plum bags contain 5 light red bags.
drab bronze bags contain 5 muted blue bags, 1 faded teal bag, 3 faded yellow bags.
plaid teal bags contain 4 wavy maroon bags, 5 pale brown bags.
plaid indigo bags contain 5 light olive bags, 4 clear salmon bags, 1 wavy lime bag, 4 drab black bags.
shiny blue bags contain 3 bright turquoise bags, 3 mirrored red bags, 1 pale brown bag, 2 dark violet bags.
striped turquoise bags contain 4 pale tomato bags, 1 light turquoise bag.
mirrored white bags contain 4 dim chartreuse bags.
dark fuchsia bags contain 2 dotted lavender bags, 5 pale gray bags, 5 light crimson bags, 5 shiny lavender bags.
posh blue bags contain 5 dark orange bags.
shiny tan bags contain 5 bright magenta bags, 2 clear beige bags, 1 pale lime bag.
dark lime bags contain 1 shiny magenta bag, 2 muted cyan bags.
bright magenta bags contain 3 clear blue bags, 3 wavy indigo bags.
dotted crimson bags contain 2 wavy turquoise bags.
dotted maroon bags contain 5 dark green bags, 1 striped lime bag, 1 dotted black bag, 5 striped beige bags.
dark brown bags contain 3 pale white bags.
vibrant coral bags contain 5 plaid olive bags, 5 dim maroon bags.
posh teal bags contain 5 shiny white bags.
plaid crimson bags contain 1 dark coral bag, 2 dotted beige bags, 1 dotted gray bag.
mirrored salmon bags contain 1 plaid lavender bag, 2 striped orange bags, 4 clear purple bags.
vibrant orange bags contain no other bags.
vibrant plum bags contain 1 pale red bag, 2 drab plum bags.
dim gray bags contain 5 dull salmon bags.
shiny maroon bags contain 3 dim plum bags, 4 pale black bags, 3 dark red bags, 4 light maroon bags.
muted tomato bags contain 1 pale bronze bag, 3 dim crimson bags, 3 striped beige bags, 3 muted yellow bags.
dotted white bags contain 5 striped red bags.
wavy plum bags contain 2 dull indigo bags, 3 plaid turquoise bags, 1 dull silver bag, 5 clear tan bags.
light violet bags contain 3 dim crimson bags, 2 drab brown bags.
muted salmon bags contain 2 clear yellow bags, 3 faded plum bags.
plaid turquoise bags contain 4 faded yellow bags.
pale bronze bags contain 2 dim plum bags, 1 posh maroon bag, 4 dim lavender bags.
clear chartreuse bags contain 1 clear salmon bag, 4 faded purple bags, 5 mirrored tan bags.
bright purple bags contain 5 clear salmon bags, 5 shiny red bags, 5 dotted aqua bags, 1 wavy plum bag.
faded gold bags contain 2 faded indigo bags.
striped brown bags contain 1 posh magenta bag, 2 dull olive bags, 3 dotted purple bags, 1 dark beige bag.
faded gray bags contain 3 shiny green bags.
wavy purple bags contain 2 dark beige bags, 2 dotted bronze bags.
striped olive bags contain 1 clear tan bag, 2 dim salmon bags, 2 dotted gold bags.
dull crimson bags contain 2 drab red bags.
dark plum bags contain 1 dark blue bag, 2 light yellow bags, 2 striped silver bags.
faded violet bags contain 4 dotted gray bags, 5 muted blue bags.
plaid black bags contain 2 posh aqua bags, 5 plaid orange bags.
light green bags contain 4 muted silver bags, 2 muted tomato bags, 3 mirrored teal bags.

594
data/2020/8.txt Normal file
View file

@ -0,0 +1,594 @@
nop +81
acc -17
jmp +1
acc +31
jmp +211
acc +30
acc -7
jmp +29
acc +16
nop +89
jmp +163
acc -9
acc +40
jmp +189
jmp +111
acc +0
acc +6
jmp +19
acc +6
acc +16
jmp +78
nop +178
jmp +441
acc +27
acc +34
jmp +3
acc +9
jmp +302
acc -4
acc +33
jmp +417
nop +80
acc +34
acc +11
nop +181
jmp -12
jmp +143
jmp +53
jmp +52
jmp +324
acc +0
acc -8
acc +47
jmp +1
jmp +169
acc +23
acc -14
acc -6
acc -13
jmp +267
acc +24
jmp +188
acc +36
jmp +160
acc +14
acc +34
acc -18
jmp +500
jmp +137
jmp +295
acc +11
jmp +393
acc +24
acc +37
nop +258
acc +20
jmp -52
acc +40
jmp +1
jmp +62
acc +34
nop +312
acc +39
nop +431
jmp +386
acc -17
nop +282
acc -8
jmp +490
jmp +148
jmp -1
jmp +201
jmp -54
acc +0
acc +22
jmp +110
nop +443
nop +388
acc +28
jmp +167
nop +48
acc +46
jmp +406
acc +11
acc +17
acc +23
jmp +1
jmp +286
acc +0
acc -15
acc +1
acc +6
jmp +214
acc +39
acc +21
acc +34
jmp +341
jmp +417
jmp +400
jmp -2
jmp +117
acc -10
acc +14
acc +10
acc +10
jmp +339
jmp +162
acc +16
nop +20
acc +12
acc -11
jmp +78
acc +21
acc +12
jmp +181
jmp +404
nop +26
jmp +46
jmp +1
jmp -93
jmp -76
acc -1
nop +30
acc +48
jmp +238
acc +6
nop +244
jmp +36
acc +10
acc +8
acc +19
acc +3
jmp -72
nop +225
jmp +228
acc +44
acc -13
jmp +349
acc -8
acc +45
acc -11
jmp +76
acc +46
jmp +196
acc +4
acc +45
jmp +218
acc +38
jmp -77
acc +10
acc +46
jmp +385
acc +29
jmp +159
jmp +247
jmp +1
acc +26
nop +357
jmp +284
nop +335
acc -18
acc +41
jmp +326
nop +181
jmp +189
nop -135
acc +50
nop +152
jmp -53
acc +0
jmp +1
acc +23
jmp +167
nop +131
acc +18
acc +42
nop +13
jmp +28
jmp +284
acc +10
acc +43
jmp +243
jmp +64
acc +17
jmp +213
acc +0
acc +29
jmp +25
jmp -180
nop +184
jmp +90
jmp -13
jmp +1
jmp -86
jmp +1
acc +20
acc +49
jmp +6
jmp +188
acc +24
acc +0
nop -16
jmp +160
jmp +2
jmp +68
acc +1
acc +30
jmp -52
acc -19
jmp +1
acc -18
jmp +153
acc +0
jmp -92
nop -72
acc +38
jmp +13
jmp +160
acc +24
acc +0
jmp +111
acc -4
acc +45
jmp -215
acc +16
acc +25
acc +28
acc +12
jmp +348
nop +144
jmp -52
acc +41
jmp +1
acc +12
acc +14
jmp +207
jmp +1
acc +26
acc +4
jmp +1
jmp +15
jmp +20
acc +23
acc +41
jmp -8
jmp +284
nop +204
acc +47
acc +35
acc +17
jmp -58
jmp +1
acc +8
nop +72
jmp -210
jmp +324
acc -7
acc +12
acc +48
acc +1
jmp +269
acc -19
acc +18
jmp +167
jmp +1
acc +48
acc +2
jmp +134
jmp +204
jmp +1
acc -1
jmp +191
nop -203
nop +104
acc -16
jmp +261
acc +32
acc +11
acc +37
jmp +74
acc -16
acc -4
acc +10
jmp +101
acc +47
acc +18
jmp +122
acc +42
acc +30
jmp -47
nop -54
acc +38
nop +237
acc +15
jmp -58
acc +50
acc +37
acc +20
jmp -163
nop +49
acc +28
acc +50
acc -13
jmp -305
jmp +66
jmp +92
acc +30
acc +0
jmp -190
nop +153
acc -12
jmp +73
nop -241
acc +25
nop -310
jmp +127
acc +32
acc +6
jmp +55
jmp -250
acc +25
acc -2
acc +42
nop +25
jmp -264
acc +47
acc +47
nop -297
jmp -146
jmp +1
jmp -257
acc +48
acc +49
acc -2
jmp +232
acc +25
acc +9
acc -6
jmp +115
jmp +53
acc +4
acc +19
acc -5
jmp -188
acc +0
acc -16
jmp +132
jmp +189
acc -8
jmp -54
acc -19
nop -338
jmp -322
acc +43
acc +19
acc +1
jmp -238
jmp -111
acc +48
jmp +49
nop -225
jmp +153
jmp +55
jmp -264
acc +27
acc -1
acc -1
acc +7
jmp +208
jmp +68
jmp -218
acc +13
jmp +70
acc +1
jmp +12
acc -7
jmp +129
jmp +1
acc +7
acc +11
acc +2
jmp -377
acc +0
jmp -241
jmp +110
jmp -355
acc -13
jmp +1
jmp -120
nop +83
acc +19
jmp -378
acc +26
jmp +72
acc +9
acc +0
jmp -92
nop -242
jmp -200
acc +29
jmp -374
acc -19
acc +40
acc +9
nop -117
jmp -144
acc +6
jmp +122
acc +7
acc +9
acc +50
jmp -367
acc +18
acc +18
acc +6
nop -212
jmp -19
acc +34
acc -1
jmp +1
jmp -89
acc -19
acc +20
jmp -70
jmp +117
acc +38
acc +23
acc +29
acc +20
jmp -330
acc +30
acc +38
nop -2
jmp +96
acc +11
acc +32
jmp -194
jmp -64
acc +10
acc -2
acc -2
jmp -320
jmp -314
jmp +115
acc -1
acc +38
acc +30
jmp -407
acc +1
jmp -32
jmp +55
acc +50
jmp +84
nop -69
acc +0
nop -270
acc +38
jmp -33
acc +11
acc +32
acc -15
jmp -122
jmp -413
acc -2
jmp -322
acc +49
jmp +1
acc +26
nop -455
jmp -105
acc +26
jmp -6
nop +42
acc +15
jmp -149
acc -7
acc +34
jmp +59
acc -9
acc -11
jmp -122
nop -89
acc +28
acc +34
acc +14
jmp -127
jmp -89
jmp -335
acc +49
acc +0
acc +43
acc +41
jmp -314
jmp -56
acc +11
jmp -443
acc +7
jmp -11
acc +24
acc +16
acc +44
jmp -29
acc +38
acc +8
jmp +50
acc +30
acc +8
acc +14
jmp -160
acc -10
acc +46
acc +2
acc +21
jmp -328
acc +17
acc +23
jmp -374
acc +20
jmp -160
acc +1
acc +30
acc +22
jmp +1
jmp -302
jmp +1
acc +3
acc +19
acc +28
jmp +30
acc +50
acc +23
jmp -244
acc +20
jmp +1
acc +27
jmp -6
jmp -71
acc +28
acc +35
nop -3
jmp -62
nop -386
nop -217
jmp -45
acc +7
acc -11
jmp -104
nop -279
jmp +1
acc -15
acc -17
jmp -478
nop -11
jmp -432
acc -3
acc +12
jmp -558
jmp -513
acc +3
acc +46
jmp -532
acc -14
acc +32
acc -8
acc +25
jmp -521
acc +6
acc +11
acc +40
acc +33
jmp -266
acc +17
acc +11
nop -203
acc +2
jmp -433
acc +38
jmp -476
jmp -125
jmp +1
acc +24
acc -11
jmp +1
jmp +1

1000
data/2020/9.txt Normal file

File diff suppressed because it is too large Load diff

13
index.js Normal file
View file

@ -0,0 +1,13 @@
#!/usr/local/bin/env node
const cmd = process.argv.slice(2);
if (cmd.length !== 3) {
console.log('ERROR: bad command');
process.exit(1);
}
const dayPath = cmd.slice(0, 2).join('/');
const data = require('./lib/load')(dayPath);
const result = require(`./solutions/${dayPath}`)[cmd[2]](data);
console.log(`${result}`);

47
lib/BNMath.js Normal file
View file

@ -0,0 +1,47 @@
module.exports = {
min(...nums) {
if (nums.length === 0) {
throw new Error('invalid arguments');
}
return nums.reduce((a, b) => (a < b ? a : b));
},
max(...nums) {
if (nums.length === 0) {
throw new Error('invalid arguments');
}
return nums.reduce((a, b) => (a > b ? a : b));
},
abs(num) {
if (num < 0n) {
return num * -1n;
}
return num;
},
sqrt(num) {
if (num < 0n) {
throw new Error('no sqrt of negative');
}
if (num <= 1n) {
return num;
}
let x0 = num >> 1n;
let x1 = (x0 + num / x0) >> 1n;
while (x1 < x0) {
x0 = x1;
x1 = (x0 + num / x0) >> 1n;
}
return x0;
},
// todo: implement longer string parsing, should be simple-ish to do with
// some looping and multiplication
parseInt(string, radix) {
if (string.length > 10) {
console.log(string);
throw new Error('todo');
}
return BigInt(parseInt(string, radix));
},
};

327
lib/Glib.js Normal file
View file

@ -0,0 +1,327 @@
const Math = require('./bnmath');
const EMPTY = Symbol('empty');
class Glib {
static infiniteFromIterable(iterable) {
const cache = Array.from(iterable);
return new Glib(
(function*() {
while (true) {
yield* cache;
}
})(),
);
}
static fromSplit(string, separator = '\n') {
return new Glib(
(function*() {
let partial = '';
for (const char of string) {
partial += char;
if (!partial.endsWith(separator)) {
continue;
}
yield partial.slice(0, -separator.length);
partial = '';
}
yield partial;
})(),
);
}
static fromParsedString(string, separator, parse) {
return new Glib(
(function*() {
let partial = '';
for (const char of string) {
partial += char;
if (!partial.endsWith(separator)) {
continue;
}
yield parse(partial.slice(0, -separator.length));
partial = '';
}
yield parse(partial);
})(),
);
}
static fromLines(lines) {
const g = Glib.fromIterable(lines.split('\n'));
return g.map((line) => {
// console.log(line);
return line.trim();
});
}
static fromSequence(start = 1n, end = Infinity, step = 1n) {
if (typeof start === 'number') {
start = BigInt(start);
}
if (typeof end === 'number' && (end !== Infinity && end !== -Infinity)) {
end = BigInt(end);
}
if (typeof step === 'number') {
step = BigInt(step);
}
return new Glib(
(function*() {
for (let i = start; i <= end; i += step) {
yield i;
}
})(),
);
}
static fromIterable(iterable) {
return new Glib(
(function*() {
yield* iterable;
})(),
);
}
constructor(iterator) {
this._ = iterator;
}
flatMap(mapFn) {
return new Glib(
(function*(iterable) {
let index = 0;
for (const entry of iterable) {
yield* mapFn(entry, index++);
}
})(this),
);
}
map(mapFn) {
return this.flatMap((...args) => {
return [mapFn(...args)];
});
}
filter(filterFn) {
return this.flatMap((entry, ...args) =>
filterFn(entry, ...args) ? [entry] : [],
);
}
reduce(reduceFn, accumulator = EMPTY) {
return this.partialReduce(reduceFn, () => true, accumulator);
}
join(sep = ',') {
return this.reduce((acc, e, i) => acc + (i === 0 ? e : sep + e), '');
}
partialReduce(reduceFn, continueFn, accumulator = EMPTY) {
let index = 0;
for (const entry of this) {
// console.log(accumulator);
if (index === 0 && accumulator === EMPTY) {
accumulator = entry;
} else {
// console.log(`${accumulator} ${JSON.stringify(entry)}`);
accumulator = reduceFn(accumulator, entry, index++);
if (!continueFn(accumulator, entry, index - 1)) {
break;
}
}
}
// console.log(accumulator);
if (index === 0 && accumulator === EMPTY) {
throw new Error(
'reduce of empty Glib with no starting value for accumulator',
);
}
return accumulator;
}
take(count = 1) {
return new Glib(
(function*(iterable) {
let taken = 0;
if (taken >= count) {
return;
}
for (const entry of iterable) {
yield entry;
if (++taken >= count) {
return;
}
}
})(this),
);
}
first() {
for (const entry of this) {
return entry;
}
}
toInts(base = 10) {
switch (base) {
case 10:
return this.map((i) => BigInt(i));
default:
throw new Error('unimplemented base');
}
}
sum() {
return this.reduce((a, b) => {
return a + b;
}, 0n);
}
product() {
return this.partialReduce(
(a, b) => {
return a * b;
},
(p) => p !== 0n,
);
}
min() {
return this.reduce((a, b) => (a < b ? a : b));
}
max() {
return this.reduce((a, b) => (a > b ? a : b));
}
minMax() {
return this.reduce(
([min, max], current) => {
return [Math.min(min, current), Math.max(max, current)];
},
[Infinity, -Infinity],
);
}
then(fn) {
return fn(this);
}
infinite() {
return Glib.infiniteFromIterable(this);
}
forEach(eachFn) {
let i = BigInt(0);
for (let entry of this) {
eachFn(entry, i);
i++;
}
}
chunk(chunkLength = EMPTY, leftoversOk = false) {
if (chunkLength === EMPTY) {
throw new Error('must provide chunk length');
}
return new Glib(
(function*(iterable) {
let chunk = [];
for (const entry of iterable) {
chunk.push(entry);
if (chunk.length === chunkLength) {
yield chunk;
chunk = [];
}
}
if (chunk.length !== 0) {
if (leftoversOk) {
yield chunk;
} else {
throw new Error('chunk operation had leftovers');
}
}
})(this),
);
}
frequency() {
return this.reduce((counts, k) => {
counts.set(k, (counts.get(k) || 0n) + 1n);
return counts;
}, new Map());
}
every(everyFn) {
return this.map(everyFn)
.filter((i) => i === false)
.isEmpty();
}
lookupInMap(map, allowMissing = false) {
if (!allowMissing) {
throw new Error('todo');
}
return this.flatMap((k) => {
// console.log(k);
return map.has(k) ? [map.get(k)] : [];
});
}
filterBySet(set, invert) {
if (invert) {
return this.filter((k) => !set.has(k));
}
return this.filter((k) => set.has(k));
}
unique() {
const seen = new Set();
// better than converting whole iterable to set
// allows for iterative/partial compoutation
// normal set creation from iterable is eager
return this.filter((e) => {
if (seen.has(e)) {
return false;
}
seen.add(e);
return true;
});
}
[Symbol.iterator]() {
return this._;
}
get array() {
return Array.from(this);
}
get string() {
return this.join('');
}
get set() {
return new Set(this);
}
get length() {
let i = 0n;
for (const _ of this) {
i++;
}
return i;
}
isEmpty() {
for (const entry of this) {
return false;
}
return true;
}
toMap() {
return new Map(this);
}
// need dvFn to not resuse sets, arrays, etc
toMapReduce(reduceFn, dvFn) {
const output = new Map();
for (const [k, v] of this) {
output.set(k, reduceFn(output.has(k) ? output.get(k) : dvFn(), v));
}
return output;
}
toMapArray() {
return this.toMapReduce(
(acc, a) => {
return [...acc, a];
},
() => [],
);
}
toMapSet() {
return this.toMapReduce(
(acc, a) => {
acc.add(a);
return acc;
},
() => new Set(),
);
}
reduceScoreK(chooseFn) {
return this.reduce((a, b) => (chooseFn(a[1] > b[1]) ? a : b))[0];
}
minScoreK() {
return this.reduceScoreK((a, b) => a < b);
}
maxScoreK() {
return this.reduceScoreK((a, b) => a > b);
}
}
module.exports = Glib;

38
lib/Maps.js Normal file
View file

@ -0,0 +1,38 @@
module.exports = class Maps {
static and(...maps) {
if (maps.length === 0) {
return [];
}
const outputs = [];
for (const i of maps) {
outputs.push(new Map());
}
const [map1, ...rest] = maps;
for (const k of map1.keys()) {
if (rest.every((map) => map.has(k))) {
for (let i = 0; i < maps.length; i++) {
outputs[i].set(k, maps[i].get(k));
}
}
}
return outputs;
}
static combineBy(combineFn, ...maps) {
const result = new Map();
for (const map of maps) {
for (const [k, v] of map.entries()) {
result.set(k, result.has(k) ? combineFn(k, result.get(k), v) : v);
}
}
return result;
}
static add(...maps) {
return Maps.combineBy((k, v1, v2) => {
return v1 + v2;
}, ...maps);
}
};

47
lib/Sets.js Normal file
View file

@ -0,0 +1,47 @@
module.exports = class Sets {
static and(set1, ...rest) {
const output = new Set();
for (const v of set1) {
if (rest.every((set) => set.has(v))) {
output.add(v);
}
}
return output;
}
static or(...sets) {
const output = new Set();
for (const set of sets) {
for (const v of set) {
output.add(v);
}
}
return output;
}
static xor(...sets) {
if (sets.length !== 2) {
throw new Error('xor is only meaningful on 2 sets');
}
const [l, r] = sets;
const output = new Set();
for (const v of l) {
if (!r.has(v)) {
output.add(v);
}
}
for (const v of r) {
if (!l.has(v)) {
output.add(v);
}
}
return output;
}
static counts(...sets) {
const output = new Map();
for (const set of sets) {
for (const v of set) {
output.set(v, (output.get(v) || 0n) + 1n);
}
}
return output;
}
};

106
lib/Vector.js Normal file
View file

@ -0,0 +1,106 @@
const Math = require('./bnmath');
const Glib = require('./Glib');
module.exports = class Vector {
static fromString(string) {
if (!string.startsWith('(') || !string.endsWith(')')) {
throw new Error('invalid format');
}
return new Vector(
...Glib.fromSplit(string.slice(1, -1), ',').map((i) => BigInt(i.trim())),
);
}
constructor(...v) {
this.v = v.map((i) => {
switch (typeof i) {
case 'number':
return BigInt(i);
case 'bigint':
return i;
default:
throw new Error('invalid input');
}
});
}
_check(v) {
if (typeof v !== 'object' || !(v instanceof Vector)) {
throw new Error('nope');
}
if (this.len !== v.len) {
throw new Error('mismatched length');
}
}
_resolve(v) {
if (typeof v === 'number' || typeof v === 'bigint') {
return new Vector(...this.v.map((e) => v));
}
if (typeof v !== 'object' || !(v instanceof Vector)) {
throw new Error('nope');
}
if (this.len !== v.len) {
throw new Error('mismatched length');
}
return v;
}
multiply(v) {
v = this._resolve(v);
return new Vector(...this.v.map((e, i) => e * v.v[i]));
}
add(v) {
v = this._resolve(v);
return new Vector(...this.v.map((e, i) => e + v.v[i]));
}
subtract(v) {
v = this._resolve(v);
return this.add(v.multiply(-1));
}
remainder(v) {
v = this._resolve(v);
return new Vector(...this.v.map((e, i) => e % v.v[i]));
}
modulo(v) {
v = this._resolve(v);
return new Vector(
...this.v.map((e, i) => ((e % v.v[i]) + v.v[i]) % v.v[i]),
);
}
distance(v) {
this._check(v);
return this.v
.map((e, i) => {
return Math.abs(e + v.v[i]);
})
.reduce((a, b) => a + b);
}
neighbors() {
return new Glib(
(function*(_this) {
let permutations = 3n ** _this.length;
const skipped = Math.parseInt('1'.repeat(_this.v.length), 3);
for (let i = 0n; i < permutations; i++) {
if (i === skipped) {
continue;
}
yield _this.add(
new Vector(
...Glib.fromIterable(
i.toString(3).padStart(_this.v.length, '0'),
).map((i) => BigInt(i) - 1n),
),
);
}
})(this),
);
}
toArray() {
return this.v.slice();
}
get length() {
return BigInt(this.v.length);
}
get string() {
return '(' + this.v.join(', ') + ')';
}
};

51
lib/_pollute/array.js Normal file
View file

@ -0,0 +1,51 @@
const Glib = require('../glib');
Object.defineProperty(Array.prototype, 'glib', {
enumerable: false,
configurable: false,
get() {
return Glib.fromIterable(this);
},
});
Object.defineProperty(Array.prototype, 'set', {
enumerable: false,
configurable: false,
get() {
return new Set(this);
},
});
Array.prototype.safeSplice = function safeSplice(...args) {
const spliced = this.slice();
spliced.splice(...args);
return spliced;
};
Array.prototype.chainSplice = function chainSplice(...args) {
this.splice(...args);
return this;
};
Array.prototype.chainPush = function chainPush(...args) {
this.push(...args);
return this;
};
Array.prototype.safePush = function safePush(...args) {
const clone = this.slice();
clone.push(...args);
return clone;
};
Array.prototype.safeReverse = function safeReverse(...args) {
const clone = this.slice();
clone.reverse(...args);
return clone;
};
Array.prototype.safeSort = function safeSort(...args) {
const clone = this.slice();
clone.sort(...args);
return clone;
};

15
lib/_pollute/index.js Normal file
View file

@ -0,0 +1,15 @@
const fs = require('fs');
const path = require('path');
for (const filename of fs.readdirSync(__dirname)) {
if (filename === 'index.js' || !filename.endsWith('.js')) {
continue;
}
const resolved = path.resolve(__dirname, filename);
if (!fs.statSync(resolved).isFile()) {
continue;
}
require(resolved);
}
module.exports = true;

58
lib/_pollute/map.js Normal file
View file

@ -0,0 +1,58 @@
const Glib = require('../glib');
Object.defineProperty(Map.prototype, 'glibEntries', {
enumerable: false,
configurable: false,
get() {
return new Glib(this.entries());
},
});
Object.defineProperty(Map.prototype, 'glibKeys', {
enumerable: false,
configurable: false,
get() {
return new Glib(this.keys());
},
});
Object.defineProperty(Map.prototype, 'glibValues', {
enumerable: false,
configurable: false,
get() {
return new Glib(this.values());
},
});
const _getPath = (map, path) => {
for (const component of path) {
if (!map.has(component)) {
return undefined;
}
map = map.get(component);
}
return map;
};
Map.prototype.hasPath = function hasPath(path) {
path = Array.from(path);
const map = _getPath(this, path.slice(0, -1));
if (!map) {
return false;
}
return map.has(path[path.length - 1]);
};
Map.prototype.getPath = function getPath(path) {
return _getPath(this, path);
};
Map.prototype.setPath = function setPath(path, value) {
path = Array.from(path);
let map = this;
for (const component of path.slice(0, -1)) {
map.set(component, (map = map.get(component) || new Map()));
}
map.set(path[path.length - 1], value);
return this;
};

9
lib/_pollute/set.js Normal file
View file

@ -0,0 +1,9 @@
const Glib = require('../glib');
Object.defineProperty(Set.prototype, 'glib', {
enumerable: false,
configurable: false,
get() {
return Glib.fromIterable(this);
},
});

30
lib/_pollute/string.js Normal file
View file

@ -0,0 +1,30 @@
const crypto = require('crypto');
Object.defineProperty(String.prototype, 'md5', {
enumerable: false,
configurable: false,
get() {
return crypto
.createHash('md5')
.update(this.valueOf())
.digest('hex');
},
});
Object.defineProperty(String.prototype, 'characterFrequencies', {
enumerable: false,
configurable: false,
get() {
const frequency = new Map();
for (const letter of this) {
frequency.set(letter, (frequency.get(letter) || BigInt(0)) + BigInt(1));
}
return frequency;
},
});
String.prototype.splice = function(...args) {
const characterArray = this.valueOf().split('');
characterArray.splice(...args);
return characterArray.join('');
};

17
lib/fn.js Normal file
View file

@ -0,0 +1,17 @@
require('./_pollute/map');
module.exports = {
curry: (fn) => (...args) => (...callArgs) => fn(...[...args, ...callArgs]),
curryRight: (fn) => (...args) => (...callArgs) =>
fn(...[...callArgs, ...args]),
memo: (fn) => {
const memo = new Map();
return (...args) => {
const path = [args.length, ...args];
if (!memo.hasPath(path)) {
memo.setPath(path, fn(...args));
}
return memo.getPath(path);
};
},
};

18
lib/index.js Normal file
View file

@ -0,0 +1,18 @@
const fs = require('fs');
const path = require('path');
module.exports = {};
for (const filename of fs.readdirSync(__dirname)) {
if (filename === 'index.js' || !filename.endsWith('.js')) {
continue;
}
const resolved = path.resolve(__dirname, filename);
if (!fs.statSync(resolved).isFile()) {
continue;
}
const key = filename.slice(0, -3);
module.exports[key] = require(resolved);
}
require('./_pollute');

5
lib/load.js Normal file
View file

@ -0,0 +1,5 @@
const fs = require('fs');
const path = require('path');
module.exports = (day) =>
fs.readFileSync(path.resolve(__dirname, `../data/${day}.txt`)).toString();

111
lib/twodee.js Normal file
View file

@ -0,0 +1,111 @@
const Glib = require('./Glib');
const Vector = require('./Vector');
const ORIGIN = new Vector(0, 0);
const DIRECTIONS = {
UP: new Vector(0, 1),
DOWN: new Vector(0, -1),
LEFT: new Vector(-1, 0),
RIGHT: new Vector(1, 0),
};
class Rectangle {
static fromPoints(one, two) {
const [x1, x2] = [one.v[0], two.v[0]].sort();
const [y1, y2] = [one.v[1], two.v[1]].sort();
const bottomLeft = new Vector(x1, y1);
const size = bottomLeft.multiply(-1).add(new Vector(x2, y2));
return new Rectangle(bottomLeft, size);
}
constructor(offset, size) {
// console.log(`${offset.string} ${offset.add(size).string}`);
// todo: normalize?
this.offset = offset;
this.size = size;
}
allPoints() {
return new Glib(
(function*(_this) {
const [startX, startY] = _this.offset.toArray();
const [endX, endY] = _this.offset.add(_this.size).toArray();
for (let x = startX; x < endX; x++) {
for (let y = startY; y < endY; y++) {
yield new Vector(x, y);
}
}
})(this),
);
}
}
class Instruction {
static fromString(string, instructionSet) {
const [char, ...num] = string.split('');
if (!instructionSet.hasOwnProperty(char)) {
throw new Error('invalid move');
}
const move = instructionSet[char];
return num.length === 0
? new Instruction(move)
: new Instruction(move, BigInt(num.join('')));
}
constructor(move, count = 1n) {
this.move = move;
this.count = count;
}
jump(source) {
// console.log(this.count);
return source.add(this.move.multiply(this.count));
}
walk(source) {
return new Glib(
(function*(_this) {
for (let i = 0n; i < _this.count; i++) {
// console.log(source.string);
source = source.add(_this.move);
yield source;
}
// console.log(source.string);
})(this),
);
}
}
module.exports = {
Instruction,
Rectangle,
DIRECTIONS,
ORIGIN,
'^v<>': {
'^': DIRECTIONS.UP,
v: DIRECTIONS.DOWN,
'<': DIRECTIONS.LEFT,
'>': DIRECTIONS.RIGHT,
},
udlr: {
u: DIRECTIONS.UP,
d: DIRECTIONS.DOWN,
l: DIRECTIONS.LEFT,
r: DIRECTIONS.RIGHT,
},
UDLR: {
U: DIRECTIONS.UP,
D: DIRECTIONS.DOWN,
L: DIRECTIONS.LEFT,
R: DIRECTIONS.RIGHT,
},
everyStep(instructions, source = ORIGIN) {
return new Glib(
(function*() {
for (const instruction of instructions) {
// console.log(instruction);
yield* instruction.walk(source);
source = instruction.jump(source);
}
})(),
);
},
};

19
solutions/2015/1.js Normal file
View file

@ -0,0 +1,19 @@
const { Glib } = require('../../lib');
const VALUE = {
'(': 1n,
')': -1n,
};
module.exports = {
'1': (input) =>
Glib.fromIterable(input)
.map((char) => VALUE[char] || 0n)
.sum(),
'2': (input) =>
Glib.fromIterable(input).partialReduce(
([floor], char, index) => [floor + (VALUE[char] || 0n), index + 1],
([floor]) => floor >= 0,
[0n, 0],
)[1],
};

21
solutions/2015/2.js Normal file
View file

@ -0,0 +1,21 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromLines(input)
.map((i) => {
const [x, y, z] = i.split('x').glib.toInts().array;
const sides = [x * y, y * z, z * x];
return sides.glib.sum() * 2n + sides.glib.min();
})
.sum(),
2: (input) =>
Glib.fromLines(input)
.map((i) => {
const vertices = i.split('x').glib.toInts().array;
const [x, y, z] = vertices;
const sides = [x + y, y + z, z + x];
return sides.glib.min() * 2n + vertices.glib.product();
})
.sum(),
};

28
solutions/2015/3.js Normal file
View file

@ -0,0 +1,28 @@
const { Glib, Sets, twodee } = require('../../lib');
const instructions = twodee['^v<>'];
const parse = (input) =>
Glib.fromIterable(input).map((move) =>
twodee.Instruction.fromString(move, instructions),
);
module.exports = {
'1': (input) =>
twodee.everyStep(parse(input)).map((pt) => pt.string).set.size,
'2': (input) =>
Sets.or(
...parse(input)
.chunk(2)
.reduce(
([sm, rm], [s, r]) => {
// console.log(s, r, sm[sm.length - 1], rm[rm.length - 1]);
sm.push(s.jump(sm[sm.length - 1]));
rm.push(r.jump(rm[rm.length - 1]));
return [sm, rm];
},
[[twodee.ORIGIN], [twodee.ORIGIN]],
)
.map((points) => points.glib.map((pt) => pt.string).set),
).size,
};

12
solutions/2015/4.js Normal file
View file

@ -0,0 +1,12 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromSequence(1)
.filter((number) => `${input}${number}`.md5.startsWith('00000'))
.take(1).string,
'2': (input) =>
Glib.fromSequence(1)
.filter((number) => `${input}${number}`.md5.startsWith('000000'))
.take(1).string,
};

15
solutions/2015/5.js Normal file
View file

@ -0,0 +1,15 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromLines(input).filter(
(string) =>
!string.match(/(ab|cd|pq|xy)/) &&
string.match(/[aeiou].*[aeiou].*[aeiou]/) &&
string.match(/(.)\1/),
).length,
'2': (input) =>
Glib.fromLines(input).filter(
(string) => string.match(/(..).*\1/) && string.match(/(.).\1/),
).length,
};

87
solutions/2016/1.js Normal file
View file

@ -0,0 +1,87 @@
const { Glib, Vector } = require('../../lib');
const DIRECTIONS = {
NORTH: 'NORTH',
SOUTH: 'SOUTH',
EAST: 'EAST',
WEST: 'WEST',
};
const TURNS = {
LEFT: 'L',
RIGHT: 'R',
};
const TURN = {
[TURNS.LEFT]: {
[DIRECTIONS.NORTH]: DIRECTIONS.WEST,
[DIRECTIONS.EAST]: DIRECTIONS.NORTH,
[DIRECTIONS.SOUTH]: DIRECTIONS.EAST,
[DIRECTIONS.WEST]: DIRECTIONS.SOUTH,
},
[TURNS.RIGHT]: {
[DIRECTIONS.NORTH]: DIRECTIONS.EAST,
[DIRECTIONS.EAST]: DIRECTIONS.SOUTH,
[DIRECTIONS.SOUTH]: DIRECTIONS.WEST,
[DIRECTIONS.WEST]: DIRECTIONS.NORTH,
},
};
const MOVE = {
[DIRECTIONS.NORTH]: new Vector(0, 1),
[DIRECTIONS.EAST]: new Vector(1, 0),
[DIRECTIONS.SOUTH]: new Vector(0, -1),
[DIRECTIONS.WEST]: new Vector(-1, 0),
};
const START = new Vector(0, 0);
const parse = (input) =>
Glib.fromIterable(input.trim().split(',')).map((i) => {
const [turn, ...distance] = i.trim();
if (turn !== TURNS.LEFT && turn !== TURNS.RIGHT) {
throw new Error('Invalid turn');
}
return {
turn,
distance: parseInt(distance.join(''), 10),
};
});
module.exports = {
'1': (input) => {
input = parse(input);
let direction = DIRECTIONS.NORTH;
let location = START;
for (const { turn, distance } of input) {
direction = TURN[turn][direction];
const moveVector = MOVE[direction].multiply(distance);
location = location.add(moveVector);
}
return START.distance(location);
},
'2': (input) => {
input = parse(input);
let direction = DIRECTIONS.NORTH;
let location = START;
let visited = new Set();
for (const { turn, distance } of input) {
direction = TURN[turn][direction];
const destination = location.add(MOVE[direction].multiply(distance))
.string;
let locStr = location.string;
while (locStr != destination) {
if (visited.has(locStr)) {
return START.distance(location);
}
visited.add(locStr);
location = location.add(MOVE[direction]);
locStr = location.string;
}
}
},
parse,
};

71
solutions/2016/2.js Normal file
View file

@ -0,0 +1,71 @@
const { Glib, Vector } = require('../../lib');
const generatePad = (layout) => {
const PAD = {};
const rows = layout.split('\n');
for (let i = 0; i < rows.length; i++) {
for (let j = 0; j < rows[i].length; j++) {
const source = rows[i][j];
if (source.match(/\s/)) {
continue;
}
const NUM = {};
const pi = i - 1;
if (pi >= 0 && pi < rows.length) {
const target = rows[pi][j];
if (target !== ' ' && typeof target === 'string') NUM.U = target;
}
const ni = i + 1;
if (ni < rows.length) {
const target = rows[ni][j];
if (target !== ' ' && typeof target === 'string') NUM.D = target;
}
const pj = j - 1;
if (pj >= 0) {
const target = rows[i][pj];
if (target !== ' ' && typeof target === 'string') NUM.L = target;
}
const nj = j + 1;
if (nj < rows.length) {
const target = rows[i][nj];
if (target !== ' ' && typeof target === 'string') NUM.R = target;
}
PAD[source] = NUM;
}
}
return PAD;
};
const PAD1txt = `
123
456
789
`;
const PAD2txt = `
1
234
56789
ABC
D
`;
const solve = (input, PAD) =>
Glib.fromLines(input)
.reduce(
(code, line) =>
code +
line
.trim()
.split('')
.reduce((last, direction) => {
return PAD[last][direction] || last;
}, code[code.length - 1]),
'5',
)
.slice(1);
module.exports = {
'1': (input) => solve(input, generatePad(PAD1txt)),
'2': (input) => solve(input, generatePad(PAD2txt)),
};

46
solutions/2016/3.js Normal file
View file

@ -0,0 +1,46 @@
const { Glib, BNMath: Math } = require('../../lib');
function* chunk(input, size) {
let cc = [];
for (const row of input) {
cc.push(row);
if (cc.length === 3) {
yield cc;
cc = [];
}
}
if (cc.length !== 0) {
throw new Error('leftovers!');
}
}
const validTriangle = (sides) => {
const hypotenuse = Math.max(...sides);
const others = sides.slice();
others.splice(sides.indexOf(hypotenuse), 1);
return others[0] + others[1] > hypotenuse;
};
const parse = (input) =>
Glib.fromLines(input).map(
(triangle) =>
triangle
.trim()
.split(/\s+/)
.glib.toInts().array,
);
module.exports = {
'1': (input) => parse(input).filter(validTriangle).length,
'2': (input) =>
parse(input)
.chunk(3)
.flatMap(([a, b, c]) => {
const output = [];
for (let i = 0; i < 3; i++) {
output.push([a[i], b[i], c[i]]);
}
return output;
})
.filter(validTriangle).length,
};

59
solutions/2016/4.js Normal file
View file

@ -0,0 +1,59 @@
const { Glib } = require('../../lib');
const calculateChecksum = (string) => {
return Array.from(string.characterFrequencies.entries())
.sort(([a, af], [b, bf]) => {
if (af > bf) {
return -1;
} else if (af < bf) {
return 1;
}
return a.charCodeAt(0) - b.charCodeAt(0);
})
.glib.take(5)
.map(([a]) => a).string;
};
const START_CHAR_CODE = 'a'.charCodeAt(0);
const decrypt = (name, sectorId) => {
let outputString = '';
for (let i = 0; i < name.length; i++) {
const letterNum = name.charCodeAt(i) - START_CHAR_CODE;
const decryptedLetterNum = (letterNum + sectorId) % 26;
outputString += String.fromCharCode(decryptedLetterNum + START_CHAR_CODE);
}
return outputString;
};
const parse = (input) =>
Glib.fromLines(input)
.map((room) => {
let [first, checksum] = room.split('[');
checksum = checksum.slice(0, -1);
const splits = first.split('-');
const name = splits.slice(0, -1).join('-');
const sectorId = parseInt(splits.slice(-1), 10);
return { name, sectorId, checksum };
})
.filter(({ name, checksum }) => {
const cleanName = name.split('-').join('');
return calculateChecksum(cleanName) === checksum;
});
module.exports = {
'1': (input) =>
parse(input)
.map(({ sectorId }) => sectorId)
.toInts()
.sum(),
'2': (input) =>
parse(input)
.filter(
({ name, sectorId }) =>
name
.split('-')
.map((component) => decrypt(component, sectorId))
.join('-') === 'northpole-object-storage',
)
.first().sectorId,
};

37
solutions/2016/5.js Normal file
View file

@ -0,0 +1,37 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromSequence(1, Infinity)
.flatMap((i) => {
const md5 = `${input}${i}`.md5;
return md5.startsWith('00000') ? [md5[5]] : [];
})
.take(8).string,
'2': (input) =>
Glib.fromSequence(1, Infinity)
.flatMap((i) => {
const md5 = `${input}${i}`.md5;
if (!md5.startsWith('00000')) {
return [];
}
const position = parseInt(md5[5], 10);
if (md5[5] != position.toString()) {
return [];
}
return [{ position, character: md5[6] }];
})
.partialReduce(
(accumulator, { position, character }, index, done, undone) => {
if (accumulator[position] !== ' ') {
return accumulator;
}
return accumulator.splice(position, 1, character);
},
(accumulator) => {
return accumulator.indexOf(' ') !== -1;
},
' ',
),
};

42
solutions/2016/6.js Normal file
View file

@ -0,0 +1,42 @@
const { Glib, Maps } = require('../../lib');
const parse = (input) =>
Glib.fromLines(input).reduce((frequencies, string, index) => {
if (index === 0) {
frequencies = [];
for (let i = 0; i < string.length; i++) {
frequencies[i] = string[i].characterFrequencies;
}
} else {
for (let i = 0; i < string.length; i++) {
frequencies[i] = Maps.add(
frequencies[i],
string[i].characterFrequencies,
);
}
}
return frequencies;
}, null);
module.exports = {
'1': (input) =>
parse(input)
.glib.map((i) =>
i.glibEntries.reduce(
([maxChar, maxCount], [char, count]) =>
maxCount > count ? [maxChar, maxCount] : [char, count],
['!', -Infinity],
),
)
.map(([char]) => char).string,
'2': (input) =>
parse(input)
.glib.map((i) =>
i.glibEntries.reduce(
([minChar, minCount], [char, count]) =>
count < minCount ? [char, count] : [minChar, minCount],
['!', Infinity],
),
)
.map(([char]) => char).string,
};

22
solutions/2017/1.js Normal file
View file

@ -0,0 +1,22 @@
const { Glib } = require('../../lib');
const VALUE = {
'(': 1,
')': -1,
};
module.exports = {
'1': (input) =>
Glib.fromIterable(input)
.filter((char, index) => char === input[(index + 1) % input.length])
.toInts()
.sum(),
'2': (input) =>
Glib.fromIterable(input)
.filter(
(char, index) =>
char === input[(index + input.length / 2) % input.length],
)
.toInts()
.sum(),
};

38
solutions/2017/2.js Normal file
View file

@ -0,0 +1,38 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromLines(input)
.map((row) =>
row
.trim()
.split(/\s+/)
.glib.toInts()
.minMax(),
)
.map(([min, max]) => max - min)
.sum(),
'2': (input) =>
Glib.fromLines(input.trim())
.map(
(row) =>
row
.trim()
.split(/\s+/)
.glib.toInts().array,
)
.map((row) => {
for (const dividend of row) {
for (const divisor of row) {
if (dividend === divisor) {
continue;
}
if (dividend % divisor === 0n) {
return dividend / divisor;
}
}
}
throw new Error('no solution');
})
.sum(),
};

162
solutions/2017/3.js Normal file
View file

@ -0,0 +1,162 @@
const {
Glib,
BNMath: Math,
Vector,
twodee: { DIRECTIONS, ORIGIN },
} = require('../../lib');
const midpointDistance = (i) => (Math.sqrt(i - 1n) + 1n) / 2n;
const rotationalDistance = (i, md) => {
if (i === 1n) {
return 0n;
}
const sideLength = md * 2n;
const rotationalOffset = i - ((md * 2n - 1n) ** 2n + 1n);
const normalizedRotationalOffset = rotationalOffset % sideLength;
const sideOffset = -md + 1n;
return Math.abs(normalizedRotationalOffset + sideOffset);
};
const distance = (i) => {
const md = midpointDistance(i);
const rd = rotationalDistance(i, md);
// console.log(i, md, rd);
return md + rd;
};
const order = new Map([
[DIRECTIONS.RIGHT.string, DIRECTIONS.UP],
[DIRECTIONS.UP.string, DIRECTIONS.LEFT],
[DIRECTIONS.LEFT.string, DIRECTIONS.DOWN],
[DIRECTIONS.DOWN.string, DIRECTIONS.RIGHT],
]);
const check = new Map([
[DIRECTIONS.RIGHT.string, DIRECTIONS.UP],
[DIRECTIONS.UP.string, DIRECTIONS.LEFT],
[DIRECTIONS.LEFT.string, DIRECTIONS.DOWN],
[DIRECTIONS.DOWN.string, DIRECTIONS.RIGHT],
]);
const nextDirection = (current, direction, calculated) =>
calculated.has(current.add(check.get(direction.string)).string)
? direction
: order.get(direction.string);
const validate = [
1n,
1n,
2n,
4n,
5n,
10n,
11n,
23n,
25n,
26n,
54n,
57n,
59n,
122n,
133n,
142n,
147n,
304n,
330n,
351n,
362n,
747n,
806n,
880n,
931n,
957n,
1968n,
2105n,
2275n,
2391n,
2450n,
5022n,
5336n,
5733n,
6155n,
6444n,
6591n,
13486n,
14267n,
15252n,
16295n,
17008n,
17370n,
35487n,
37402n,
39835n,
42452n,
45220n,
47108n,
48065n,
98098n,
103128n,
109476n,
116247n,
123363n,
128204n,
130654n,
266330n,
279138n,
295229n,
312453n,
330785n,
349975n,
363010n,
369601n,
752688n,
787032n,
830037n,
875851n,
924406n,
975079n,
1009457n,
1026827n,
2089141n,
2179400n,
2292124n,
2411813n,
2539320n,
2674100n,
2814493n,
2909666n,
2957731n,
6013560n,
6262851n,
];
module.exports = {
'1': (input) => {
return distance(BigInt(input));
},
'2': (input) => {
const target = BigInt(input);
const calculated = new Map([[ORIGIN.string, 1n]]);
let direction = DIRECTIONS.UP;
let current = DIRECTIONS.RIGHT;
let sum = 1n;
while (sum < target) {
sum = current
.neighbors()
.map((pt) => pt.string)
.lookupInMap(calculated, true)
.sum();
calculated.set(current.string, sum);
current = current.add(direction);
direction = nextDirection(current, direction, calculated);
}
return sum;
a.filter(
(char, index) =>
char === input[(index + input.length / 2) % input.length],
)
.toInts()
.sum();
},
};

20
solutions/2017/4.js Normal file
View file

@ -0,0 +1,20 @@
const { Glib } = require('../../lib');
const parse = (input) => Glib.fromLines(input).map((p) => p.split(' ')).array;
module.exports = {
'1': (input) =>
parse(input).filter((words) => words.set.size === words.length).length,
'2': (input) =>
parse(input).filter((words) => {
return (
words.length ===
words.map((i) =>
i
.split('')
.sort()
.join(),
).set.size
);
}).length,
};

34
solutions/2017/5.js Normal file
View file

@ -0,0 +1,34 @@
const { Glib } = require('../../lib');
const parse = (input) => Glib.fromLines(input).toInts().array;
module.exports = {
'1': (input) => {
const program = parse(input);
let programCounter = 0n;
let step = 0;
while (programCounter < program.length) {
const delta = program[programCounter];
program[programCounter]++;
programCounter += delta;
step++;
}
return step;
},
'2': (input) => {
const program = parse(input);
let programCounter = 0n;
let step = 0;
while (programCounter < program.length) {
const delta = program[programCounter];
if (delta >= 3n) {
program[programCounter]--;
} else {
program[programCounter]++;
}
programCounter += delta;
step++;
}
return step;
},
};

24
solutions/2018/1.js Normal file
View file

@ -0,0 +1,24 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromLines(input)
.toInts()
.sum(),
2: (input) =>
Glib.fromLines(input)
.toInts()
.infinite()
.partialReduce(
({ seen, position }, move, index) => {
position = position + move;
if (seen.has(position)) {
return position;
}
seen.add(position);
return { seen, position };
},
(state) => typeof state !== 'bigint',
{ seen: new Set([0n]), position: 0n },
),
};

35
solutions/2018/2.js Normal file
View file

@ -0,0 +1,35 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) =>
Glib.fromLines(input)
.map((boxId) => new Set(boxId.characterFrequencies.values()))
.reduce(
([two, three], counts) => [
two + (counts.has(2n) ? 1n : 0n),
three + (counts.has(3n) ? 1n : 0n),
],
[0n, 0n],
)
.glib.product(),
'2': (input) => {
const boxIds = Glib.fromLines(input).map(
(boxId) =>
Glib.fromSequence(0, boxId.length - 1).map((i) =>
boxId.splice(Number(i), 1),
).array,
).array;
for (let i = 0; i < boxIds.length; i++) {
const left = boxIds[i];
for (let j = i + 1; j < boxIds.length; j++) {
const right = boxIds[j];
for (let k = 0; k < left.length; k++) {
if (left[k] === right[k]) {
return left[k];
}
}
}
}
throw new Error('no solution');
},
};

33
solutions/2018/3.js Normal file
View file

@ -0,0 +1,33 @@
const { Glib, Sets, Vector, twodee } = require('../../lib');
const parse = (input) =>
Glib.fromLines(input).map((line) => {
const [id, at, offset, size] = line.split(' ');
const offsetPoint = Vector.fromString(`(${offset.slice(0, -1)})`);
const sizeVector = Vector.fromString(`(${size.replace('x', ',')})`);
const rectangle = new twodee.Rectangle(offsetPoint, sizeVector);
return {
id: id.slice(1),
rectangle,
};
});
module.exports = {
'1': (input) => {
return parse(input)
.flatMap(({ rectangle }) => rectangle.allPoints().map((pt) => pt.string))
.frequency()
.glibValues.filter((v) => v >= 2n).length;
},
'2': (input) => {
const claimed = parse(input)
.flatMap(({ rectangle }) => rectangle.allPoints().map((pt) => pt.string))
.frequency();
return parse(input)
.filter(({ rectangle }) =>
rectangle.allPoints().every((pt) => claimed.get(pt.string) === 1n),
)
.map((i) => i.id)
.join();
},
};

81
solutions/2018/4.js Normal file
View file

@ -0,0 +1,81 @@
const { Glib, Maps } = require('../../lib');
const parse = (input) => {
return new Glib(
(function*() {
let current = null;
let awake = true;
for (const line of Glib.fromLines(input).array.sort()) {
const [datePortion, actionPortion] = line.split('] ');
if (actionPortion.endsWith('begins shift')) {
if (current != null) {
yield current;
current = null;
}
current = {
guard: BigInt(actionPortion.split(' ')[1].slice(1)),
schedule: [],
};
awake = true;
} else if (actionPortion === 'wakes up') {
if (awake) {
continue;
}
awake = true;
current.schedule.push(BigInt(datePortion.split(':')[1]));
} else if (actionPortion === 'falls asleep') {
if (!awake) {
continue;
}
awake = false;
current.schedule.push(BigInt(datePortion.split(':')[1]));
} else {
throw new Error('bad line');
}
}
yield current;
})(),
);
};
module.exports = {
'1': (input) => {
input = parse(input).array;
const chosen = input.glib
.map(({ guard, schedule }) => [
guard,
schedule.glib
.chunk(2)
.map(([a, b]) => b - a)
.sum(),
])
.reduce((a, pair) => Maps.add(a, new Map([pair])), new Map())
.glibEntries.reduce((a, b) => (a[1] > b[1] ? a : b))[0];
return (
chosen *
input.glib
.filter(({ guard }) => guard === chosen)
.flatMap(({ schedule }) =>
schedule.glib
.chunk(2)
.flatMap(([start, end]) => Glib.fromSequence(start, end - 1n)),
)
.frequency()
.glibEntries.reduce((a, b) => (a[1] > b[1] ? a : b))[0]
);
},
2: (input) =>
parse(input)
.flatMap(({ guard, schedule }) =>
schedule.glib
.chunk(2)
.flatMap(([start, end]) => Glib.fromSequence(start, end - 1n))
.map((minute) => `${guard},${minute}`),
)
.frequency()
.glibEntries.reduce((a, b) => (a[1] > b[1] ? a : b))[0]
.split(',')
.glib.toInts()
.product(),
};

42
solutions/2018/5.js Normal file
View file

@ -0,0 +1,42 @@
const { Glib } = require('../../lib');
const fuelFor = (mass) => mass / 3n - 2n;
function* tyrant(mass) {
while ((mass = fuelFor(mass)) > 0n) {
yield mass;
}
}
const react = (input) => {
let lastLength;
do {
lastLength = input.length;
for (let i = 0; i < input.length - 1; i++) {
if (
input[i] !== input[i + 1] &&
input[i].toUpperCase() === input[i + 1].toUpperCase()
) {
input = input.splice(i, 2);
}
}
} while (input.length < lastLength);
return input;
};
module.exports = {
'1': (input) => react(input).length,
2: (input) => {
// pre-reacting saves a ton of time and makes no moves that invalidate others
input = react(input);
return Glib.fromIterable(input)
.map((i) => i.toLowerCase())
.unique()
.map((char) => {
const reduced = react(input.replace(new RegExp(char, 'gi'), ''));
return reduced.length;
})
.toInts()
.min();
},
};

22
solutions/2019/1.js Normal file
View file

@ -0,0 +1,22 @@
const { Glib } = require('../../lib');
const fuelFor = (mass) => mass / 3n - 2n;
function* tyrant(mass) {
while ((mass = fuelFor(mass)) > 0n) {
yield mass;
}
}
module.exports = {
'1': (input) =>
Glib.fromLines(input)
.toInts()
.map((i) => fuelFor(i))
.sum(),
2: (input) =>
Glib.fromLines(input)
.toInts()
.flatMap((i) => tyrant(i))
.sum(),
};

25
solutions/2019/2.js Normal file
View file

@ -0,0 +1,25 @@
const { parse, run } = require('./_intcode');
const gravityAssist = (program, noun, verb) => {
const pClone = program.slice();
pClone[1] = noun;
pClone[2] = verb;
return run(pClone).memory[0];
};
module.exports = {
'1': (input) => {
return gravityAssist(parse(input), 12n, 2n);
},
2: (input) => {
const program = parse(input);
for (let noun = 0n; noun <= 99n; noun++) {
for (let verb = 0n; verb <= 99n; verb++) {
if (gravityAssist(program, noun, verb) === 19690720n) {
return noun * 100n + verb;
}
}
}
throw new Error('no solution');
},
};

33
solutions/2019/3.js Normal file
View file

@ -0,0 +1,33 @@
const { Glib, Maps, Sets, Vector, twodee } = require('../../lib');
const parseLine = (input) =>
Glib.fromSplit(input, ',').map(([direction, ...numchars]) => {
return new twodee.Instruction(
twodee.UDLR[direction],
BigInt(numchars.join('')),
);
});
module.exports = {
'1': (input) =>
Sets.and(
...Glib.fromLines(input).map(
(line) => twodee.everyStep(parseLine(line)).map((i) => i.string).set,
),
)
.glib.map((i) => Vector.fromString(i).distance(twodee.ORIGIN))
.min(),
2: (input) =>
Maps.add(
...Maps.and(
...Glib.fromLines(input).map((line) =>
twodee
.everyStep(parseLine(line))
.map((pt, i) => [pt.string, i + 1])
.toMap(),
),
),
)
.glibEntries.map(([point, distance]) => distance)
.min(),
};

22
solutions/2019/4.js Normal file
View file

@ -0,0 +1,22 @@
const { Glib } = require('../../lib');
const fuelFor = (mass) => mass / 3n - 2n;
const parse = (input) =>
Glib.fromSequence(...Glib.fromSplit(input, '-').toInts())
.map((number) => number.toString(10))
.filter(
(password) =>
password.match(/(\d)\1/) &&
password
.split('')
.sort()
.join('') === password,
);
module.exports = {
'1': (input) => parse(input).length,
2: (input) =>
parse(input).filter((i) => i.characterFrequencies.glibValues.set.has(2n))
.length,
};

17
solutions/2019/5.js Normal file
View file

@ -0,0 +1,17 @@
const { parse, run } = require('./_intcode');
const gravityAssist = (program, noun, verb) => {
const pClone = program.slice();
pClone[1] = noun;
pClone[2] = verb;
return run(pClone).memory[0];
};
module.exports = {
'1': (input) => {
return run(parse(input), [1n]).outputs.glib.sum();
},
2: (input) => {
return run(parse(input), [5n]).outputs.glib.sum();
},
};

69
solutions/2019/6.js Normal file
View file

@ -0,0 +1,69 @@
const { Glib, Maps, Sets, Vector, twodee } = require('../../lib');
const parse = (input) => {
const pairs = Glib.fromLines(input).map((i) => i.split(')')).array;
const parents = pairs.glib.map((pair) => pair.safeReverse()).toMap();
const children = pairs.glib.toMapSet();
const points = new Map(
pairs.glib
.flatMap((i) => i)
.unique()
.map((point) => [
point,
{
children: children.get(point),
parent: parents.get(point),
},
]),
);
return points;
};
const count = (map, source = 'COM', depth = 0n) => {
return (
(map.get(source).children || []).glib
.map((name) => count(map, name, depth + 1n))
.sum() + depth
);
};
const distance = (source, destination, info) => {
let current = source;
let distance = 0n;
while (current !== destination && current !== 'COM') {
distance++;
current = info.get(current).parent;
}
if (current !== destination) {
throw new Error('no link (toward COM)');
}
return distance;
};
const allParents = (source, input) =>
new Glib(
(function*() {
let current = source;
while (current !== 'COM') {
current = input.get(current).parent;
yield current;
}
})(),
);
module.exports = {
'1': (input) => count(parse(input), 'COM'),
2: (input) => {
input = parse(input);
return (
Sets.and(allParents('YOU', input).set, allParents('SAN', input).set)
.glib.map(
(midpoint) =>
distance('YOU', midpoint, input) + distance('SAN', midpoint, input),
)
.min() - 2n
);
},
};

313
solutions/2019/_intcode.js Normal file
View file

@ -0,0 +1,313 @@
const { Glib } = require('../../lib');
const DEBUG = false;
const OPCODES = {
ADD: 1n,
MULTIPLY: 2n,
INPUT: 3n,
OUTPUT: 4n,
JUMP_IF_TRUE: 5n,
JUMP_IF_FALSE: 6n,
LESS_THAN: 7n,
EQUALS: 8n,
HALT: 99n,
};
const MODES = {
POSITION: 0n,
IMMEDIATE: 1n,
};
const CONDITIONS = {
HALT: Symbol('HALT'),
};
class AbstractParameter {
read() {
throw new Error("can't read");
}
write() {
throw new Error("can't write");
}
position() {
throw new Error("can't write");
}
}
class PositionParameter extends AbstractParameter {
constructor(value) {
super();
this._v = value;
}
read(memory) {
return memory[this._v];
}
write(memory, value) {
return memory.safeSplice(Number(this._v), 1, value);
}
position() {
return this._v;
}
}
class DirectParameter extends AbstractParameter {
constructor(value) {
super();
this._v = value;
}
read() {
return this._v;
}
position() {
return -1n;
}
}
const INSTRUCTIONS = new Map([
[
OPCODES.ADD,
{
arity: 3n,
execute: ({ memory, parameters: [left, right, output] }) => {
DEBUG &&
console.log(
`ADD (${left.position()})->${left.read(
memory,
)} (${right.position()})->${right.read(
memory,
)} TO (${output.position()})`,
);
return {
memory: output.write(memory, left.read(memory) + right.read(memory)),
};
},
},
],
[
OPCODES.MULTIPLY,
{
arity: 3n,
execute: ({ memory, parameters: [left, right, output] }) => {
DEBUG &&
console.log(
`MULTIPLY (${left.position()})->${left.read(
memory,
)} (${right.position()})->${right.read(
memory,
)} TO (${output.position()})`,
);
return {
memory: output.write(memory, left.read(memory) * right.read(memory)),
};
},
},
],
[
OPCODES.INPUT,
{
arity: 1n,
execute: ({ memory, parameters: [target], inputs }) => {
DEBUG && console.log(`INPUT TO (${target.position()})`);
const [input, ...newInputs] = inputs;
return {
memory: target.write(memory, input),
inputs: newInputs,
};
},
},
],
[
OPCODES.OUTPUT,
{
arity: 1n,
execute: ({ memory, parameters: [value], outputs }) => {
DEBUG &&
console.log(`OUTPUT (${value.position()})->${value.read(memory)}`);
return {
outputs: outputs.safePush(value.read(memory)),
};
},
},
],
[
OPCODES.JUMP_IF_TRUE,
{
arity: 2n,
execute: ({ memory, parameters: [conditional, target] }) => {
DEBUG &&
console.log(
`JUMP_IF_TRUE (${conditional.position()})->${conditional.read(
memory,
)} TO (${target.position()})->${target.read(memory)}`,
);
const diff = {};
if (conditional.read(memory) !== 0n) {
diff.instructionPointer = target.read(memory);
}
return diff;
},
},
],
[
OPCODES.JUMP_IF_FALSE,
{
arity: 2n,
execute: ({ memory, parameters: [conditional, target] }) => {
DEBUG &&
console.log(
`JUMP_IF_FALSE (${conditional.position()})->${conditional.read(
memory,
)} TO (${target.position()})->${target.read(memory)}`,
);
const diff = {};
if (conditional.read(memory) === 0n) {
diff.instructionPointer = target.read(memory);
}
return diff;
},
},
],
[
OPCODES.LESS_THAN,
{
arity: 3n,
execute: ({ memory, parameters: [left, right, output] }) => {
DEBUG &&
console.log(
`LESS_THAN (${left.position()})->${left.read(
memory,
)} < (${right.position()})->${right.read(
memory,
)} TO (${output.position()})`,
);
return {
memory: output.write(
memory,
left.read(memory) < right.read(memory) ? 1n : 0n,
),
};
},
},
],
[
OPCODES.EQUALS,
{
arity: 3n,
execute: ({ memory, parameters: [left, right, output] }) => {
DEBUG &&
console.log(
`EQUALS (${left.position()})->${left.read(
memory,
)} === (${right.position()})->${right.read(
memory,
)} TO (${output.position()})`,
);
return {
memory: output.write(
memory,
left.read(memory) === right.read(memory) ? 1n : 0n,
),
};
},
},
],
// JUMP_IF_TRUE: 5n,
// JUMP_IF_FALSE: 6n,
// LESS_THAN: 7n,
// EQUALS: 8n,
[
OPCODES.HALT,
{
arity: 0n,
execute: () => {
DEBUG && console.log(`HALT`);
return {
condition: CONDITIONS.HALT,
};
},
},
],
]);
const PARAMETER_MODES = new Map([
[MODES.POSITION, (value) => new PositionParameter(value)],
[MODES.IMMEDIATE, (value) => new DirectParameter(value)],
]);
const parseInstruction = (instruction) => {
const opcode = instruction % 100n;
const modes = [];
let modeInt = instruction / 100n;
while (modeInt > 0) {
modes.push(modeInt % 10n);
modeInt /= 10n;
}
return {
opcode,
modes,
};
};
const parseParameters = (modes, rawParameters) => {
if (modes.length > rawParameters.length) {
throw new Error('invalid mode arity');
} else if (modes.length < rawParameters.length) {
modes = modes.concat(Array(rawParameters.length - modes.length).fill(0n));
}
return rawParameters.map((value, i) => {
const mode = modes[i];
if (!PARAMETER_MODES.has(mode)) {
throw new Error(`No mode for '${mode}'`);
}
return PARAMETER_MODES.get(mode)(value);
});
};
module.exports = {
parse(text) {
return Glib.fromSplit(text, ',').toInts().array;
},
run(program, inputs = []) {
let state = {
memory: program.slice(),
instructionPointer: 0n,
inputs,
outputs: [],
};
while (state.condition !== CONDITIONS.HALT) {
DEBUG && console.log(state);
const { opcode, modes } = parseInstruction(
state.memory[state.instructionPointer],
);
if (!INSTRUCTIONS.has(opcode)) {
throw new Error(`No instruction for opcode '${opcode}'`);
}
const instruction = INSTRUCTIONS.get(opcode);
const instructionParametersPc = state.instructionPointer + 1n;
const instructionEndPc = instructionParametersPc + instruction.arity;
const parameters = parseParameters(
modes,
instruction.arity > 0n
? state.memory.slice(
Number(instructionParametersPc),
Number(instructionEndPc),
)
: [],
);
if (BigInt(parameters.length) !== instruction.arity) {
throw new Error('Invalid number of parameters');
}
const stateChanges = instruction.execute({ ...state, parameters });
if (!stateChanges.hasOwnProperty('instructionPointer')) {
stateChanges.instructionPointer = instructionEndPc;
}
state = { ...state, ...stateChanges };
}
DEBUG && console.log(state);
return state;
},
};

28
solutions/2020/1.js Normal file
View file

@ -0,0 +1,28 @@
const { Glib } = require('../../lib');
module.exports = {
'1': (input) => {
input = Glib.fromLines(input).toInts().array;
for (let i = 0; i < input.length; i++) {
for (let j = i; j < input.length; j++) {
if (input[i] + input[j] === 2020n) {
return input[i] * input[j];
}
}
}
throw new Error('no solution');
},
'2': (input) => {
input = Glib.fromLines(input).toInts().array;
for (let i = 0; i < input.length; i++) {
for (let j = i + 1; j < input.length; j++) {
for (let k = j + 1; k < input.length; k++) {
if (input[i] + input[j] + input[k] === 2020n) {
return input[i] * input[j] * input[k];
}
}
}
}
throw new Error('no solution');
},
};

41
solutions/2020/10.js Normal file
View file

@ -0,0 +1,41 @@
const { Glib, BNMath: Math, fn } = require('../../lib');
const solve2 = fn.memo((number, inputs) => {
let paths = 0n;
const end = Math.max(number - 3n, 0n);
for (let next = number - 1n; next >= end; next--) {
if (inputs.has(next)) {
paths += solve2(next, inputs);
} else if (next === 0n) {
paths += 1n;
}
}
return paths;
});
module.exports = {
'1': (input) => {
let previous = 0n;
const differences = new Map([[3n, 1n]]);
input = Glib.fromLines(input)
.toInts()
.array.safeSort((a, b) => (a - b > 0 ? 1 : -1))
.glib.forEach((joltage) => {
const difference = joltage - previous;
if (difference > 3n) {
throw new Error('invalid');
}
differences.set(difference, (differences.get(difference) || 0n) + 1n);
previous = joltage;
});
return (differences.get(1n) || 0n) * (differences.get(3n) || 0n);
},
'2': (input) => {
const target =
Glib.fromLines(input)
.toInts()
.max() + 3n;
return solve2(target, Glib.fromLines(input).toInts().set);
},
};

33
solutions/2020/2.js Normal file
View file

@ -0,0 +1,33 @@
const { Glib } = require('../../lib');
const parse = (input) =>
Glib.fromLines(input).map((i) => {
const [meta, password] = i.split(':');
const [lens, char] = meta.split(' ');
const [min, max] = lens.split('-');
return {
min: parseInt(min, 10),
max: parseInt(max, 10),
char,
password: password.trim(),
};
});
const solve = (input, filterFn) => parse(input).filter(filterFn).length;
module.exports = {
'1': (input) =>
solve(input, ({ min, max, char, password }) => {
const charCount = password.split('').filter((c) => c === char).length;
return charCount >= min && charCount <= max;
}),
'2': (input) =>
solve(
input,
({ min, max, char, password }) =>
(password[min - 1] === char) !== (password[max - 1] === char),
),
parse,
solve,
};

26
solutions/2020/3.js Normal file
View file

@ -0,0 +1,26 @@
const { Glib } = require('../../lib');
const parse = (input) => Glib.fromLines(input).array;
const TREE = '#';
const solve = (input, yIncrement, xMultiplier) => {
input = parse(input);
let xLoc = 0;
let treeCount = 0;
for (let yLoc = 0; yLoc < input.length; yLoc += yIncrement) {
if (input[yLoc][(yLoc * xMultiplier) % input[yLoc].length] === TREE) {
treeCount++;
}
}
return treeCount;
};
module.exports = {
'1': (input) => solve(input, 1, 3),
'2': (input) =>
[[1, 1], [1, 3], [1, 5], [1, 7], [2, 1]]
.map(([y, x]) => solve(input, y, x / y))
.reduce((a, b) => a * b),
parse,
};

92
solutions/2020/4.js Normal file
View file

@ -0,0 +1,92 @@
const { Glib } = require('../../lib');
const REQUIRED_FIELDS = [
'byr',
'iyr',
'eyr',
'hgt',
'hcl',
'ecl',
'pid',
// 'cid',
];
const VALIDATORS = [
({ byr }) => {
if (byr.length !== 4) {
return false;
}
const p = parseInt(byr, 10);
if (byr !== p.toString()) {
return false;
}
return p >= 1920 && p <= 2002;
},
({ iyr }) => {
if (iyr.length !== 4) {
return false;
}
const p = parseInt(iyr, 10);
if (iyr !== p.toString()) {
return false;
}
return p >= 2010 && p <= 2020;
},
({ eyr }) => {
if (eyr.length !== 4) {
return false;
}
const p = parseInt(eyr, 10);
if (eyr !== p.toString()) {
return false;
}
return p >= 2020 && p <= 2030;
},
({ hgt }) => {
const p = parseInt(hgt, 10);
if (hgt.endsWith('cm')) {
if (hgt !== p.toString() + 'cm') {
return false;
}
return p >= 150 && p <= 193;
} else if (hgt.endsWith('in')) {
if (hgt !== p.toString() + 'in') {
return false;
}
return p >= 59 && p <= 76;
}
return false;
},
({ hcl }) => {
return hcl.replace(/#[0-9a-f]{6}/, '') === '';
},
({ ecl }) => {
// console.log(`${hcl} ${hcl.replace(/#[0-9a-f]{6}/, '')}`);
return ecl.replace(/(amb|blu|brn|gry|grn|hzl|oth)/, '') === '';
},
({ pid }) => {
return pid.replace(/\d{9}/, '') === '';
},
];
const parse = (input) =>
Glib.fromSplit(input, '\n\n').map((l) =>
Object.fromEntries(
Glib.fromSplit(l.trim().replace(/\s+/g, ' '), ' ').map((pair) =>
pair.split(':'),
),
),
);
module.exports = {
'1': (input) =>
parse(input).filter((i) =>
REQUIRED_FIELDS.glib.every((field) => i.hasOwnProperty(field)),
).length,
'2': (input) =>
parse(input)
.filter((i) =>
REQUIRED_FIELDS.glib.every((field) => i.hasOwnProperty(field)),
)
.filter((i) => VALIDATORS.glib.every((vf) => vf(i))).length,
};

46
solutions/2020/5.js Normal file
View file

@ -0,0 +1,46 @@
const { Glib } = require('../../lib');
const START = 0b0;
const END = 0b1111111111;
const decode = (bp) => {
if (!bp.match(/^[bf]+[lr]+$/i, '')) {
throw new Error('invalid input');
}
const binary = bp.replace(/[br]/gi, '1').replace(/[fl]/gi, '0');
return BigInt('0b' + binary);
};
const encode = (seatId, columnCharacters, length) => {
const binary = seatId.toString(2).padStart(length, '0');
return (
binary
.slice(0, -columnCharacters)
.replace(/1/g, 'B')
.replace(/0/g, 'F') +
binary
.slice(-columnCharacters)
.replace(/1/g, 'R')
.replace(/0/g, 'L')
);
};
module.exports = {
'1': (input) =>
Glib.fromLines(input)
.map(decode)
.reduce((max, current) => (max > current ? max : current), -Infinity),
'2': (input) => {
const foundSid = new Map(
Glib.fromLines(input).map((bp) => [decode(bp), bp]),
);
return Glib.fromSequence(START, END)
.filter(
(sid) =>
!foundSid.has(sid) &&
foundSid.has(sid - 1n) &&
foundSid.has(sid + 1n),
)
.join();
},
};

32
solutions/2020/6.js Normal file
View file

@ -0,0 +1,32 @@
const { Glib, Maps } = require('../../lib');
const parse = (input) =>
Glib.fromSplit(input, '\n\n').map((i) => {
return Glib.fromSplit(i)
.map((i) => i.characterFrequencies)
.reduce(
({ length, frequencies }, b) => ({
length: length + BigInt(1),
frequencies: Maps.add(frequencies, b),
}),
{ length: BigInt(0), frequencies: new Map() },
);
});
module.exports = {
'1': (input) => {
return parse(input)
.map(({ frequencies }) => {
return BigInt(frequencies.size);
})
.sum();
},
'2': (input) => {
return parse(input)
.map(
({ length, frequencies }) =>
new Glib(frequencies.values()).filter((i) => i === length).length,
)
.sum();
},
};

70
solutions/2020/7.js Normal file
View file

@ -0,0 +1,70 @@
const { Glib, Maps } = require('../../lib');
const parse = (input) =>
Glib.fromLines(input).map((line) => {
const [color, heldString] = line.split(' bags contain ');
const children = [];
if (heldString !== 'no other bags.') {
const helds = heldString.split(', ');
for (const held of helds) {
const [heldDef] = held.split(' bag');
const [heldNum, ...heldColorArr] = heldDef.split(' ');
const heldColor = heldColorArr.join(' ');
children.push({
count: BigInt(heldNum),
color: heldColor,
});
}
}
return { color, children };
});
const parseChildren = (input) =>
parse(input).reduce((map, { color, children }) => {
map.set(color, children);
return map;
}, new Map());
const parseParents = (input) =>
parse(input).reduce((map, { color: parentColor, children }) => {
for (const { color } of children) {
let parent;
map.set(color, (parent = map.get(color) || new Set()));
parent.add(parentColor);
}
return map;
}, new Map());
const childrenCount = (start, graph) => {
const children = graph.get(start) || [];
let count = BigInt(0);
for (const child of children) {
count += child.count;
count += childrenCount(child.color, graph) * child.count;
}
return count;
};
module.exports = {
'1': (input) => {
const parents = parseParents(input);
const found = new Set(parents.get('shiny gold'));
let lastCount = 0;
while (lastCount !== found.size) {
lastCount = found.size;
for (const color of found) {
for (const addedColor of parents.get(color) || []) {
found.add(addedColor);
}
}
}
return lastCount;
},
'2': (input) => {
return childrenCount('shiny gold', parseChildren(input));
},
};

63
solutions/2020/8.js Normal file
View file

@ -0,0 +1,63 @@
const { Glib } = require('../../lib');
const parseInstruction = (i) => {
const [operation, argument] = i.split(' ');
return { operation, argument: BigInt(argument) };
};
const parse = (input) => Glib.fromLines(input).map(parseInstruction).array;
const operations = new Map([
['nop', (argument, state) => ({})],
['acc', (argument, { acc }) => ({ acc: acc + argument })],
['jmp', (argument, { pc }) => ({ pc: pc + argument })],
]);
const step = (state) => {
const { pc = 0n, program, acc = 0n } = state;
const { operation, argument } = program[pc];
if (!operations.has(operation)) {
throw new Error('no such operation');
}
const newState = operations.get(operation)(argument, state);
if (!newState.hasOwnProperty('pc')) {
newState.pc = pc + 1n;
}
if (!newState.hasOwnProperty('program')) {
newState.program = program.slice();
}
return { ...state, ...newState };
};
const run = (program) => {
let state = { pc: 0n, acc: 0n, program };
const seenInstructions = new Set();
while (!seenInstructions.has(state.pc) && state.pc < program.length) {
seenInstructions.add(state.pc);
state = step(state);
}
return state;
};
module.exports = {
'1': (input) => run(parse(input)).acc,
'2': (input) => {
const program = parse(input);
return program.glib
.map(({ operation, argument }, i) => {
const modified = program.slice();
modified[i] = {
operation: operation === 'nop' ? 'jmp' : 'nop',
argument,
};
return run(modified);
})
.filter(({ pc, program }) => pc === BigInt(program.length))
.map(({ acc }) => acc)
.first();
},
};

43
solutions/2020/9.js Normal file
View file

@ -0,0 +1,43 @@
const { Glib, BNMath: Math, Vector, twodee } = require('../../lib');
const invalid = (input, preamble = 25) => {
for (let i = preamble; i < input.length; i++) {
const current = input[i];
let solved = false;
dance: for (let j = i - preamble; j < i; j++) {
for (let k = j + 1; k < i; k++) {
if (input[j] + input[k] === current) {
solved = true;
break dance;
}
}
}
if (!solved) {
return current;
}
}
throw new Error('no invalid found');
};
const parse = (input) => Glib.fromLines(input).toInts().array;
module.exports = {
'1': (input) => invalid(parse(input)),
'2': (input) => {
input = parse(input);
const target = invalid(input);
dance: for (let i = 0; i < input.length - 1; i++) {
for (let j = i + 1; j < input.length; j++) {
const sum = input.slice(i, j).glib.sum();
if (sum === target) {
return input
.slice(i, j)
.glib.minMax()
.glib.sum();
} else if (sum > target) {
continue dance;
}
}
}
},
};

165
testAll.js Normal file
View file

@ -0,0 +1,165 @@
const { execSync } = require('child_process');
const results = {
2020: {
1: [1007104, 18847752],
2: [465, 294],
3: [237, 2106818610],
4: [200, 116],
5: [801, 597],
6: [6297, 3158],
7: [177, 34988],
8: [1553, 1877],
9: [1721308972, 209694133],
10: [2277, 37024595836928],
},
2019: {
1: [3386686, 5077155],
2: [3166704, 8018],
3: [1225, 107036],
4: [2150, 1462],
5: [16434972, 16694270],
6: [154386, 346],
},
2018: {
1: [578, 82516],
2: [4980, 'qysdtrkloagnfozuwujmhrbvx'],
3: [124850, 1097],
4: [76357, 41668],
// slow
5: [11894, 5310],
},
2017: {
1: [1097, 1188],
2: [41887, 226],
3: [438, 266330],
4: [383, 265],
// slow (pt2)
5: [391540, 30513679],
// todo:
// 6: [12841, 8038],
},
2016: {
1: [262, 131],
2: [24862, '46C91'],
3: [1032, 1838],
4: [278221, 267],
// very slow
5: ['2414bc77', '437e60fc'],
6: ['mshjnduc', 'apfeeebz'],
},
2015: {
1: [74, 1795],
2: [1598415, 3812909],
3: [2565, 2639],
// slow
4: [117946, 3938038],
5: [238, 69],
// todo:
// 6: [377891, 14110788],
},
};
const LOG_MODE = ((LOG_MODE) => {
switch (LOG_MODE) {
case 'compact':
return 'compact';
default:
return 'verbose';
}
})(process.env.LOG_MODE || 'compact');
const RUN_SLOW = (process.env.RUN_SLOW || 'false') === 'true';
let errors = [];
const run = (year, day, problem, expected) => {
try {
switch (LOG_MODE) {
case 'compact':
break;
case 'verbose':
process.stdout.write(`${year}-${day} ${problem}: `);
break;
}
// todo: implement slow solution detection of some sort
const start = process.hrtime.bigint();
const output = execSync(
`"${process.argv[0]}" index.js ${year} ${day} ${problem}`,
);
const end = process.hrtime.bigint();
const actual = output.toString().trim();
if (actual !== `${expected}`) {
switch (LOG_MODE) {
case 'compact':
process.stdout.write('x');
errors.push(
`${year}-${day} ${problem} got ${actual}, expected ${expected}\n`,
);
break;
case 'verbose':
process.stdout.write('fail\n');
process.stdout.write(`\tgot ${actual}, expected ${expected}\n`);
break;
}
} else {
switch (LOG_MODE) {
case 'compact':
process.stdout.write('.');
break;
case 'verbose':
process.stdout.write('pass\n');
break;
}
}
} catch (e) {
process.stdout.write('x\n');
switch (LOG_MODE) {
case 'compact':
process.stdout.write('e');
errors.push(
`${year}-${day} ${problem} Error:\n${e.stderr
.toString()
.split('\n')
.map((s) => '\t' + s)
.join('\n')}`,
);
break;
case 'verbose':
process.stdout.write('error\n');
process.stdout.write(
e.stderr
.toString()
.split('\n')
.map((s) => '\t' + s)
.join('\n') + '\n',
);
break;
}
}
};
for (const [year, days] of Object.entries(results)) {
switch (LOG_MODE) {
case 'compact':
process.stdout.write(`${year}: `);
break;
case 'verbose':
break;
}
for (const [day, [one, two]] of Object.entries(days)) {
run(year, day, 1, one);
run(year, day, 2, two);
}
switch (LOG_MODE) {
case 'compact':
process.stdout.write('\n');
break;
case 'verbose':
break;
}
}
for (const error of errors) {
process.stdout.write(error);
}