Day 22, with stack build system
authorNeil Smith <neil.git@njae.me.uk>
Thu, 22 Dec 2016 22:41:47 +0000 (22:41 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Thu, 22 Dec 2016 22:41:47 +0000 (22:41 +0000)
102 files changed:
advent01.hs [deleted file]
advent01.txt [deleted file]
advent02.hs [deleted file]
advent02.txt [deleted file]
advent03.hs [deleted file]
advent03.txt [deleted file]
advent04.hs [deleted file]
advent04.txt [deleted file]
advent05.hs [deleted file]
advent06-old.hs [deleted file]
advent06.hs [deleted file]
advent06.txt [deleted file]
advent07.hs [deleted file]
advent07.txt [deleted file]
advent08.hs [deleted file]
advent08.txt [deleted file]
advent09.hs [deleted file]
advent09.txt [deleted file]
advent10-test.txt [deleted file]
advent10.hs [deleted file]
advent10.txt [deleted file]
advent11.hs [deleted file]
advent11a.hs [deleted file]
advent11h.hs [deleted file]
advent11p.hs [deleted file]
advent12.hs [deleted file]
advent12.txt [deleted file]
advent13.hs [deleted file]
advent14.hs [deleted file]
advent14c.hs [deleted file]
advent14parallel.hs [deleted file]
advent15.hs [deleted file]
advent15.test.txt [deleted file]
advent15.txt [deleted file]
advent15l.hs [deleted file]
advent16.hs [deleted file]
advent16i.hs [deleted file]
advent17.hs [deleted file]
advent18.hs [deleted file]
advent18f.hs [deleted file]
advent19.hs [deleted file]
advent20.hs [deleted file]
advent20.txt [deleted file]
advent21.hs [deleted file]
advent21.txt [deleted file]
adventofcode16/Setup.hs [new file with mode: 0644]
adventofcode16/adventofcode16.cabal [new file with mode: 0644]
adventofcode16/app/Main.hs [new file with mode: 0644]
adventofcode16/app/advent01.hs [new file with mode: 0644]
adventofcode16/app/advent02.hs [new file with mode: 0644]
adventofcode16/app/advent03.hs [new file with mode: 0644]
adventofcode16/app/advent04.hs [new file with mode: 0644]
adventofcode16/app/advent05.hs [new file with mode: 0644]
adventofcode16/app/advent06-old.hs [new file with mode: 0644]
adventofcode16/app/advent06.hs [new file with mode: 0644]
adventofcode16/app/advent07.hs [new file with mode: 0644]
adventofcode16/app/advent08.hs [new file with mode: 0644]
adventofcode16/app/advent09.hs [new file with mode: 0644]
adventofcode16/app/advent10.hs [new file with mode: 0644]
adventofcode16/app/advent11.hs [new file with mode: 0644]
adventofcode16/app/advent11a.hs [new file with mode: 0644]
adventofcode16/app/advent11h.hs [new file with mode: 0644]
adventofcode16/app/advent11p.hs [new file with mode: 0644]
adventofcode16/app/advent12.hs [new file with mode: 0644]
adventofcode16/app/advent13.hs [new file with mode: 0644]
adventofcode16/app/advent14.hs [new file with mode: 0644]
adventofcode16/app/advent14c.hs [new file with mode: 0644]
adventofcode16/app/advent14parallel.hs [new file with mode: 0644]
adventofcode16/app/advent15.hs [new file with mode: 0644]
adventofcode16/app/advent15l.hs [new file with mode: 0644]
adventofcode16/app/advent16.hs [new file with mode: 0644]
adventofcode16/app/advent16i.hs [new file with mode: 0644]
adventofcode16/app/advent17.hs [new file with mode: 0644]
adventofcode16/app/advent18.hs [new file with mode: 0644]
adventofcode16/app/advent18f.hs [new file with mode: 0644]
adventofcode16/app/advent19.hs [new file with mode: 0644]
adventofcode16/app/advent20.hs [new file with mode: 0644]
adventofcode16/app/advent21.hs [new file with mode: 0644]
adventofcode16/app/advent22.hs [new file with mode: 0644]
adventofcode16/app/advent22library.hs [new file with mode: 0644]
adventofcode16/app/advent22search.hs [new file with mode: 0644]
adventofcode16/app/advent22showgrid.hs [new file with mode: 0644]
adventofcode16/data/advent01.txt [new file with mode: 0644]
adventofcode16/data/advent02.txt [new file with mode: 0644]
adventofcode16/data/advent03.txt [new file with mode: 0644]
adventofcode16/data/advent04.txt [new file with mode: 0644]
adventofcode16/data/advent06.txt [new file with mode: 0644]
adventofcode16/data/advent07.txt [new file with mode: 0644]
adventofcode16/data/advent08.txt [new file with mode: 0644]
adventofcode16/data/advent09.txt [new file with mode: 0644]
adventofcode16/data/advent10-test.txt [new file with mode: 0644]
adventofcode16/data/advent10.txt [new file with mode: 0644]
adventofcode16/data/advent12.txt [new file with mode: 0644]
adventofcode16/data/advent15.test.txt [new file with mode: 0644]
adventofcode16/data/advent15.txt [new file with mode: 0644]
adventofcode16/data/advent20.txt [new file with mode: 0644]
adventofcode16/data/advent21.txt [new file with mode: 0644]
adventofcode16/data/advent22.txt [new file with mode: 0644]
adventofcode16/src/Lib.hs [new file with mode: 0644]
adventofcode16/stack.yaml [new file with mode: 0644]
adventofcode16/test/Spec.hs [new file with mode: 0644]
day22.html [new file with mode: 0644]

diff --git a/advent01.hs b/advent01.hs
deleted file mode 100644 (file)
index a896944..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-module Main(main) where
-
-import Data.List (sort)
-import Data.List.Split (splitOn)
-
--- turn direction, number of steps
-data Step = Step Char Int deriving (Show)
-
-data Direction = North | East | South | West 
-    deriving (Enum, Show, Bounded, Eq)
-
--- direction, easting, northing
-data Position = Position Direction Int Int deriving (Show)
--- Two positions are the same if they're in the same place, 
--- regardless of facing
-instance Eq Position where
-    Position _ e n == Position _ e' n' = e == e' && n == n'
-
-main :: IO ()
-main = do 
-        instructions <- readFile "advent01.txt"
-        part1 instructions
-        part2 instructions
-
-part1 :: String -> IO ()
-part1 instructions = do
-        let answer = finalDistance $ last $ stepsFromStart $ steps instructions
-        print answer
-
-part2 :: String -> IO ()
-part2 instructions = do
-        let visited = finalDistance $ firstRepeat $ stepsFromStart $ expandSteps $ steps instructions
-        print visited
-
-
--- Extract the steps from the input string.
-steps :: String -> [Step]
-steps s = map readStep $ splitOn ", " s
-    where readStep (d:l) = Step d (read l)
-
--- Take steps from the starting position
-stepsFromStart :: [Step] -> [Position]
-stepsFromStart = takeSteps (Position North 0 0)
-
--- Calculate manhattan distance from start to this state
-finalDistance :: Position -> Int
-finalDistance (Position _ e n) = (abs e) + (abs n)
-
--- For part 2: convert one step of many spaces to many steps of one space each
-expandSteps :: [Step] -> [Step]
-expandSteps = 
-    concatMap expandStep
-    where expandStep (Step dir d) = (Step dir 1) : replicate (d - 1) (Step 'S' 1)
-
--- Execute a series of steps, keeping track of the positions after each step
-takeSteps :: Position -> [Step] -> [Position]
--- takeSteps pos steps = scanl move pos steps
-takeSteps = scanl move
-
--- Make one move, by updating direction then position
-move :: Position -> Step -> Position
-move (Position facing easting northing)
-    (Step turnInstr distance) = 
-    Position facing' easting' northing'
-    where facing' = turn turnInstr facing
-          (easting', northing') = takeStep facing' distance easting northing
-
--- Turn right, left, or straight
-turn :: Char -> Direction -> Direction
-turn 'R' direction = turnCW direction
-turn 'L' direction = turnACW direction
-turn 'S' direction = direction
-
--- Move in the current direction
-takeStep :: Direction -> Int -> Int -> Int -> (Int, Int)
-takeStep North d e n = (e, n+d)
-takeStep South d e n = (e, n-d)
-takeStep West  d e n = (e-d, n)
-takeStep East  d e n = (e+d, n)
-
-
--- | a `succ` that wraps 
-turnCW :: (Bounded a, Enum a, Eq a) => a -> a 
-turnCW dir | dir == maxBound = minBound
-         | otherwise = succ dir
-
--- | a `pred` that wraps
-turnACW :: (Bounded a, Enum a, Eq a) => a -> a
-turnACW dir | dir == minBound = maxBound
-            | otherwise = pred dir
-
--- All the prefixes of a list of items
-prefixes = scanl addTerm []
-    where addTerm ps t = ps ++ [t]
-
--- The first item that exists in a prefix of the list to that point
-firstRepeat positions = 
-    last $ head $ dropWhile (\p -> (last p) `notElem` (tail $ reverse p)) 
-                            (tail $ prefixes positions)
diff --git a/advent01.txt b/advent01.txt
deleted file mode 100644 (file)
index 62fb6e8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-R2, L3, R2, R4, L2, L1, R2, R4, R1, L4, L5, R5, R5, R2, R2, R1, L2, L3, L2, L1, R3, L5, R187, R1, R4, L1, R5, L3, L4, R50, L4, R2, R70, L3, L2, R4, R3, R194, L3, L4, L4, L3, L4, R4, R5, L1, L5, L4, R1, L2, R4, L5, L3, R4, L5, L5, R5, R3, R5, L2, L4, R4, L1, R3, R1, L1, L2, R2, R2, L3, R3, R2, R5, R2, R5, L3, R2, L5, R1, R2, R2, L4, L5, L1, L4, R4, R3, R1, R2, L1, L2, R4, R5, L2, R3, L4, L5, L5, L4, R4, L2, R1, R1, L2, L3, L2, R2, L4, R3, R2, L1, L3, L2, L4, L4, R2, L3, L3, R2, L4, L3, R4, R3, L2, L1, L4, R4, R2, L4, L4, L5, L1, R2, L5, L2, L3, R2, L2
\ No newline at end of file
diff --git a/advent02.hs b/advent02.hs
deleted file mode 100644 (file)
index d4abc55..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-module Main(main) where
-
-import Data.Array.IArray
-
--- Row 1 is top, column 1 is left
-type Position = (Int, Int)
-type Keyboard = Array Position Char
-
-kb1 = ["xxxxx", 
-       "x123x", 
-       "x456x",
-       "x789x",
-       "xxxxx"]
-
-kb2 = ["xxxxxxx",
-       "xxx1xxx",
-       "xx234xx",
-       "x56789x",
-       "xxABCxx",
-       "xxxDxxx",
-       "xxxxxxx"]
-
-enumerate = zip [0..]
-
-mkKeyboard :: [String] -> Keyboard
-mkKeyboard kb = array ((0, 0), (length kb - 1, length (kb!!0) - 1))
-    [((i, j), c) | (i, r) <- enumerate kb, (j, c) <- enumerate r]
-
-keyboard1 = mkKeyboard kb1
-keyboard2 = mkKeyboard kb2
-
-findKey :: Keyboard -> Char-> Position
-findKey kb c = fst $ head $ filter (\a -> (snd a) == c) $ assocs kb
-
--- data Coord = One | Two | Three
---     deriving (Read, Show, Eq, Ord, Enum, Bounded)
--- -- instance Bounded Coord where
--- --     minBound = Coord 1
--- --     maxBound = Coord 3
-
--- data Position = Position Coord Coord
---     deriving (Show, Eq)
-
-main :: IO ()
-main = do 
-        instrText <- readFile "advent02.txt" 
-        let instructions = lines instrText
-        part1 instructions
-        part2 instructions
-
-part1 :: [String] -> IO ()
-part1 instructions = do 
-        print $ followInstructions keyboard1 instructions
-
-
-part2 :: [String] -> IO ()
-part2 instructions = do 
-        print $ followInstructions keyboard2 instructions
-
-
-followInstructions :: Keyboard -> [String] -> String
-followInstructions kb instr = moveSeries kb (startPosition kb) instr
-
-
-startPosition :: Keyboard -> Position
-startPosition kb = findKey kb '5'
-
-moveSeries :: Keyboard -> Position -> [String] -> String
-moveSeries _ _ [] = []
-moveSeries kb p (i:is) = (n:ns)
-    where p' = makeMoves kb p i
-          n = kb ! p'
-          ns = moveSeries kb p' is
-
-makeMoves :: Keyboard -> Position -> [Char] -> Position
-makeMoves kb p ms = foldl (safeMove kb) p ms
-
-safeMove :: Keyboard -> Position -> Char -> Position
-safeMove kb pos dir = maybeRevert kb pos (move pos dir)
-
-move :: Position -> Char -> Position
-move (r, c) 'U' = (r-1, c)
-move (r, c) 'D' = (r+1, c)
-move (r, c) 'L' = (r, c-1)
-move (r, c) 'R' = (r, c+1)
-
-maybeRevert :: Keyboard -> Position -> Position -> Position
-maybeRevert kb oldPos newPos 
-    | kb ! newPos == 'x' = oldPos
-    | otherwise = newPos
diff --git a/advent02.txt b/advent02.txt
deleted file mode 100644 (file)
index 799cb46..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-RDRRDLRRUDRUUUULDDRDUULLDUULDURDDUDRULDLUDDRLRDUDDURRRRURDURLLRDRUUULDLLLURDRLLULLUULULLLDLLLRRURRLRDUULRURRUDRRDRLURLRURLLULRUURRUURDDLDRDLDLLUDUULLLUUUUDULLDRRUURLDURDDDDDRLLRRURDLUDRRUUDLRRLLRDURDUDDDLRDDRDLRULLUULRULRLLULDDRURUUDLDDULDRLLURDDUDDUDRDUDLDRRRDURRLDRDRLDLLDUDDDULULRRULRLLURDRRDDUUUUUULRUDLRRDURDLRDLUDLDURUDDUUURUDLUUULDLRDURDLDUUDLDDDURUUDUUDRLRDULLDUULUDRUDRLRRRDLLDRUDULRRUDDURLDRURRLLRRRDRLLDLULULRRUURRURLLUDRRLRULURLDDDDDURUDRRRRULLUUDLDDLUUL
-ULURUDLULDULDLLDDLLLDRRLLUDRRDRDUDURUDLRRRRUDRDDURLRRULLDLURLDULLUDDLUDURDUURRRRLDLRLDDULLRURLULLDDRUDLRRRLDRRRDLDRLLDDRRDDLUUDRUDDLULRURLDURRLLDLRUDLLRRUULUDRLLLRLDULURRRRRDDUURDRRUUDULRUULDDULRLUDLUDDULLRLRDDLRLLURRRULDLRRRUURRLDDRDLRDLRRDRDLDRDUDRDURUUDRLRRULRDLLDLLRRRDRLDRLRLRLLLURURDULUUDDRLLDDDRURRURLRDDULLRURUDRRDRLRRRLDLRLRULDRLUURRUUULRLDLLURLLLDLLLDRRDULRURRRRLUDLLRRUDLRUDRURDRRDLUUURRDLRLRUUUDURDLUDURRUUDURLUDDDULLDRDLLDDDRLDDDRLDLDDDDUDUUDURUUDULRDDLULDRDRLURLUDRDLUULLULRLULRDDRULDUDDURUURULUDLUURLURU
-URLURDDRLLURRRLDLDLUDUURDRUDLLLRRDLUUULRRLURRRLUDUDLRLDDRUDLRRRULUDUDLLLULULLLRUDULDDDLLLRRRLRURDULUDDDULDLULURRRDLURDLRLLDUDRUDURDRRURULDRDUDLLRDDDUDDURLUULLULRDRRLDDLDURLRRRLDRDLDULRULRRRLRLLDULRDLURLRUUDURRUUDLLUDRUDLRLDUUDLURRRDDUUDUDRLDLDDRURDDLLDDRDLRLRDLLLUDLUUDRLRLRDDRDLRDLLUULLLLUULLDLLDLRDLRLRRLUUDLLRLRUDRURULRLRLULUDRLLUDDUDDULRLDDRUUUURULDRRULLLDUURULUDRLLURLRRLDLRRLDDRRRDUDDUDLDDLULUDDUURDLLLRLDLRDRUUUUUDDDLDRDDRRRLRURRRRDURDRURUDLURRURDRLRUUDDLDRRULLDURDRLRRDURURUULRDUDLDRDDLULULRDRRUDDRLLRLULRLLUUDRDUUDDUDLRUUDLLUULLRUULUDDLURRRLLDRLRRLLRULLDUULURLLLLUUULDR
-LDUURULLRLDRRUUDUUUURUUUDDDURRDDLRDLLRDDRULDDUURUDDURLLUDRDUDRDULDRRRLULUDRULLLLDRLLDRDLDLLRURULUDDDDURDDDRLLUDLDRULRDLDUDDDUUDLLRLLLDLRLRLRRUDDULDDDUDLDDLUDDULDLLLLULLLLDDURDDURRRDDRLRLLUDLLUDDDUDURUDRLRDRULULDDRULDLULULLRUULRLDULUURRDRDRRDLDDDRRLUULDLUDRDDUDLRURULLDDURLDDRULUDLDDDRDRLLRDLLUURRRURDRLRURLDDLURDRURDDURLLRLRUDUUDLDUDURRDDURDRDDUDDDUDUURURDDLLRUUDDRRDULDDLLDLRULUULRUUDLLDRLULDULDDUDLULRULDRLLDUULDDDLRLLRLULDDULDDRRRLDRRLURULRDDRDLRRDUDDRDRRRRUDUDLLRRDRRURRUURDRULDDUDURLUDDURDUDRDUULLDRURUURURDRRLDDLDLUURLULRUDURDRUUURRURRDRUDRUURDURLRULULLLULDLLDLRRLDRDLUULUDDDLRDRLRLDRUDUDRLLRL
-LURLUURLURDUUDRUDLDLLURRRDLDRRRULDDRRDRDUUDRUDURDDDURLUDDLULUULRRLLRULUDRDDRRRLDURDUDDURDDDLRLDDLULLDRDDLUUDUURRRLULRUURRRRLLULDUDRDUURRRURRDRDUDUDLUDULLDLDDRLUDRURDULURLURRLLURLLLRLUURLRUDLUDDRLURRUULULRLURRURUDURDLDLDDUDDRDLLRLLRRULDDRUDURUDDDUDLLRDLRUDULLLRRRUURUDUUULLRDUDRURUDULLDLLUUUDRULRLLRRDDDDUDULDRDRLLDDLLDDDURRUDURLDLRDRUURDDURLRDRURLRRLLRLULDRRLRUDURDUURRLUUULUDDDLRLULRDRLLURRRDLURDUUDRRRLUURRLLUDLUDLUULLRRDLLRDDRURRUURLDDLRLRLRUDLDLRLRDRRDLLLRDLRDUDLLDDDRD
\ No newline at end of file
diff --git a/advent03.hs b/advent03.hs
deleted file mode 100644 (file)
index e97dd66..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-module Main(main) where
-
-import Data.List (transpose, sort)
-import Data.List.Split (splitOn, chunksOf)
-
-type Triple = [Integer]
-
-main :: IO ()
-main = do 
-        instrText <- readFile "advent03.txt" 
-        let triangles = map (parseLine) $ lines instrText
-        part1 triangles
-        part2 triangles
-
-
-part1 :: [Triple] -> IO ()
-part1 triangles = do 
-    print $ length $ filter (validTriangle) triangles 
-
-part2 :: [Triple] -> IO ()
-part2 triangles = do 
-    print $ length $ filter (validTriangle) $ byColumns triangles 
-
-
-parseLine :: String -> Triple
-parseLine = map (read) . filter (not . null) . splitOn " "
-
-validTriangle :: Triple -> Bool
-validTriangle triple = sortedTriple!!0 + sortedTriple!!1 > sortedTriple!!2
-    where sortedTriple = sort triple
-
-byColumns :: [[Integer]] -> [Triple]
-byColumns = chunksOf 3 . concat . transpose 
diff --git a/advent03.txt b/advent03.txt
deleted file mode 100644 (file)
index 40c03ca..0000000
+++ /dev/null
@@ -1,1734 +0,0 @@
-  330  143  338
-  769  547   83
-  930  625  317
-  669  866  147
-   15  881  210
-  662   15   70
-  273  277  707
-   50  592  770
-  280  313  407
-  642  487  372
-   94  619  295
-  734  243  141
-  220  141  515
-  198  824  745
-  210  787  964
-  213  627  601
-  918    4  447
-  805  630  802
-  711  237  987
-  938  552  388
-  643  405  779
-  803  747  525
-  917  832  631
-  899  292  843
-   81  206  445
-  141  874  465
-  177  974   54
-  520  725  814
-  271  958  554
-  779  579  264
-  358   18  257
-  978   77  270
-  984   88  131
-  475  702  940
-  183  756  160
-  383  941  820
-  806  142  646
-  793  275  804
-   53  272  368
-  942  821  785
-  863  830  902
-  219   52  199
-  473  479  351
-  860  522  361
-  890  240  216
-   94  756  407
-  310  189  468
-  234  909  178
-  889  667  756
-  429  485  730
-  825  405   30
-  943  806  253
-   98  455  365
-  998  454  290
-  971  576  223
-   64  429  273
-  945  779   63
-  352  960   59
-  672  948  577
-  782   43  567
-  460  315  719
-  825  604  183
-  453  442  788
-  694  632  334
-  569  619  317
-  337   49   17
-  878  468  660
-  393  598  717
-  550  827  159
-  540  362  346
-   66  713  380
-  491  477   44
-  411  114  320
-  554   96  250
-  306   67  196
-  769  553  333
-  762  436  382
-  278  322  153
-  894  603  334
-  539  441  844
-  486  162  927
-  197    9  218
-   94  221  804
-  250  220  913
-  557  626  486
-  562  705  630
-  968  922  285
-  518   36  468
-   18  608   83
-  512  611  530
-  534   37   65
-  621  136   90
-  239  113  139
-  371  640  956
-  629   54  959
-  531  620  338
-  682  499  810
-  798  170  968
-  187  640  645
-  660  535  332
-  663  530  314
-   64   26   65
-   55  285  488
-  620  288   52
-  642  474  450
-  455    9  962
-   51  760  489
-  426  760  833
-  304  783  772
-  498  765  695
-  635   53  126
-   44  430  774
-  979  943  838
-  962  892   64
-  494  709  614
-    7  695  120
-  503  114  606
-  362  340  689
-  509  367  389
-  673  410  664
-  773  262  558
-  897  958  245
-  140  773  483
-  965  468  584
-  546  209  668
-  856  381  184
-  274  237  762
-  888  677  906
-  871  516  405
-  102  529  912
-  285  724  885
-  352  501   53
-  774  139  245
-  380  309  594
-  813  185  765
-  530  645  965
-  958  618  120
-  851  202  957
-  737  476  131
-  595  546  108
-  716  113   66
-  327  215  318
-  397  343  390
-  351  143  103
-  138   91   31
-  108  224  919
-  230  276  896
-  426  975  177
-  327  975  918
-  238  365  764
-  328  799  775
-  590  906  967
-  578  460  338
-  507  619  647
-  711  617  867
-  933  478  734
-  820  760  721
-  199  711  824
-  983  214  228
-  382  150  648
-  415  782  242
-  615  754  445
-  693  689  590
-  382  784  482
-  997  181  322
-  682  241  172
-  587  302  252
-  184  135  254
-  574  104  549
-   88  738  796
-  486  715  861
-   62  491  815
-  463  434  569
-  519  622  310
-  199  443  782
-  572  657   85
-  763  517  844
-  750  175  835
-  228  269  710
-  611  316  551
-  883  546  296
-  169  693   18
-  992  743  316
-  263  529  529
-  705  570    4
-  918  706  527
-  609  285  971
-  260  533  112
-  711  486  904
-  820   40  472
-  997  301  129
-  257  288  343
-  635  439  375
-  560  381  417
-  773  105  145
-   58  963  267
-  976  742  424
-  994  441  384
-  389  770  514
-  782  463  335
-  919  727  276
-  780  794  372
-  326  180  590
-  918  946  257
-  889  842  181
-  507   61  464
-  762  835  443
-  827  607  982
-  174  875  544
-  934  885  589
-   32  343  757
-  987  826  257
-  981  782  844
-  446  291  397
-  443  800  421
-  165  668  539
-  410  373  487
-  422  803  881
-  546  998  953
-  291  607  160
-  919  894   62
-  842  718  117
-  110  816  582
-  470  836  596
-  575  687   35
-   37  835  374
-   90  954  354
-  101  141  407
-  174  398  499
-  173  737  964
-    4  365  950
-  946  616  634
-  906  904  619
-   40  789   16
-  788  769   76
-  737  867   88
-  565  812   31
-  508  380  201
-   34  935  339
-  500  862  326
-  431  181  475
-  403  346  585
-   88  530  708
-  731  137  781
-  715  563  272
-  817  659  932
-  396  368  360
-  162  683  376
-  278  620   39
-  525  910  371
-  688  524  149
-  488  998  279
-  286  392  523
-  325  144  406
-   79  532  419
-  540  460  465
-  222  832  416
-  517  507   46
-   87  744  183
-  382  819  701
-  306  763  647
-  744   74  913
-   62  813  849
-  691  874  775
-  291  422  314
-  432  630  809
-  611  510  566
-  583  745  289
-  397   19  727
-  188  766  442
-   96  108  329
-  963  719  598
-  963  764  469
-  444  636  731
-  792  636  422
-  993    1  416
-  518  300  532
-  298  312  736
-  316  111  463
-  825  569   35
-  858  591  584
-  809   84  607
-  681  610  740
-  383  279  210
-  851  733  615
-  287  959  160
-  856  851  171
-  606  115  211
-  310  541  845
-  506  119  319
-  665  471  562
-  382  885  798
-  440   29  595
-  113  903  475
-  257  773  846
-  306  741  776
-   97  804   76
-  489  332  423
-  466  632  613
-   86  739  481
-  199  846  712
-   62  282  809
-  155  681  142
-  705  525  270
-  159  800  117
-  612  664  316
-  505  616  837
-  578  839  770
-  942  535  122
-  542  781  512
-  552   22  475
-  760  791   97
-  432  626  837
-   26  616  336
-  412  316  702
-  108  232  242
-  158  311  449
-   60  141  325
-   58    1  714
-  532  977  123
-  531  978  598
-  679  899   57
-  645  523   54
-  167  892   14
-  164  574  492
-  105   37  491
-  132  555  485
-  600  879  508
-  608  843  222
-  270  255  398
-  232  960  281
-  241  995  436
-  113  674  411
-  381  567    5
-  697  450  966
-  726  857  969
-  722  686  965
-  543   20  453
-  955  689  554
-  858  161  923
-  140  979  953
-  786  836  237
-  200  322  875
-  311  623  398
-  510  814  945
-   67  387  825
-  621  620  740
-  630  842  163
-  545   75  373
-  506  531  501
-  301  571  357
-  746  491  253
-   37   29  748
-  769  507  754
-   69  886  861
-  423  629  856
-  380  723   83
-  875  647  657
-  144  696  580
-  896   49  629
-  275  598  374
-  118  636  279
-  277   80  529
-  623  130  493
-  368  712  621
-  833  730  512
-   59  767  829
-  105  933  731
-   54  240  108
-  803  235  992
-  837  726  881
-  426  855  450
-  636  730  731
-  840  561  977
-  996  229  670
-  508  234  186
-  529  108  917
-  373  337  795
-  681   35  565
-  790  251  152
-  301  235  599
-  875  416  653
-  277  338  990
-  800  207  595
-  954  650  896
-  931  667  706
-   84  851  822
-  254  778  816
-  316  141  732
-  233  759  239
-  546  473  315
-   69   15   96
-  513  470  320
-  460  188  729
-  429  950  288
-  709  807  790
-  456  161  570
-  269  718  339
-  213  628  602
-  155  367  686
-  176  418  568
-   66  251  723
-  959  696  536
-  794  279  885
-  315  527  993
-  603  853  868
-  727  747  994
-  411  287  193
-  528  763  559
-  803  149  739
-  542  883  696
-  275  676  183
-  411  317  161
-  349  875   35
-   39  729  221
-  256  831  216
-  247  238  176
-  399   59  306
-  409  445  550
-    9  387  253
-  613  204  474
-   81  868  944
-  589  912  735
-  319  264   83
-  984  704  614
-  778  614  532
-  699  762  556
-  680  250  507
-  504  581  647
-  160  351  295
-  513  739  413
-  651  915  651
-  878  218  499
-  872  990  503
-   38  886   12
-  218  201  415
-  240  250  504
-  265  448  382
-  402  876  126
-  488  950  649
-  189  210  597
-   24  850  758
-   30  451  347
-    5  437  723
-  634  310  546
-  801  179  411
-  679  338  852
-  385   32  933
-  406  531  554
-   88  516  871
-  860  486  834
-  467  535  849
-  419  820  785
-  206  649  526
-  244  499  714
-   80  774  678
-  336  149  612
-  310  175  656
-  150  221  791
-  159  806  701
-  336  465  530
-  376  819  272
-  533  472  421
-   82  124  909
-  523  561  539
-  844  811  576
-  439  612  587
-  782  457  686
-  152   51  837
-  413  573  855
-  403  608   26
-  893  819  910
-  361  499  657
-  677  937  617
-  428    6  343
-  310   38  431
-  474   35  420
-  574  256  221
-  700  907  515
-  149  685  478
-  206  325  720
-  114   51   67
-  320  338  686
-  293   59  527
-  147  756  986
-  250  697  573
-  968  194  545
-  542  480   72
-  454  574  619
-  473   55  592
-  475  339  889
-  884  313  993
-  125  127  742
-  591  514  585
-  543  583  282
-  264  580  390
-  839  487  781
-  902  664  868
-  334  459  819
-  107   20  211
-  368  479  775
-  683  691  273
-  681  336  630
-   22  978  536
-  926  828  708
-  210  319  723
-  787  689  866
-  854  633  856
-  960  494  866
-  122  687  596
-  918  705  539
-   84  564  791
-  876  138  949
-  836    1  500
-  718  308  466
-  228  311  271
-  421  998  433
-  622  772  174
-  875  720  432
-  680  687  509
-  215   95  623
-  674  732  166
-  198  174  645
-  721  839  390
-  617  896  448
-   73  331  155
-  789  134  431
-  853  376  400
-   82  862  411
-  779  362   70
-  750  777  349
-  674  604  224
-  812  731  446
-  280  546  336
-  922  781  619
-  196  892  876
-  941  361  479
-  344  988  873
-  499   92  795
-  287  913  546
-  625  167  604
-  617    1  399
-  154  166  720
-  328  323  111
-  713  619  530
-  606  756  580
-  194  247  935
-  149   65   64
-   55  287  902
-  870  866  127
-  478  679  587
-  900  459  565
-  563  787  743
-  962  798  769
-  669   39  525
-  745  691  317
-  484  123   93
-  500  598  348
-  159  535  681
-  618  176  877
-  723  373  464
-  304  184  131
-  542  209  654
-  716   47  647
-  976  537  771
-  914  606  568
-  241  250  481
-  616  640  660
-  744  187  843
-  303  617  927
-  369  525  773
-  754  697  360
-  595  560  605
-  562  589  610
-  799  497  655
-  823  553  532
-  937  502  449
-  976  941  158
-  194  720  347
-  474  694  822
-  528  184  272
-  922  698  568
-  415  889  638
-  169  822   65
-  547  281  663
-  582  167  110
-  365   56  914
-  431  162  923
-  473  812  578
-  572  890  386
-  164  119  308
-  604  946  496
-  327  142   72
-  641  916  472
-  743  663  228
-  107  446  345
-  823  486  152
-  997   47  968
-  565  155  631
-  438  205  416
-  271  163  875
-  123  393  111
-  169  412  854
-  615  683  659
-  592  362    9
-   99  895  668
-  834  205  172
-  359  355  550
-  499  149  389
-  755  298  916
-  475  706  807
-  829  425  118
-   43  527  479
-  159  473  874
-  151  326  992
-  970  660  509
-  837  930   35
-  164  345  506
-  209  879  487
-   97  157  503
-  289  755  793
-  624  897  293
-  382  134  451
-  257  917  339
-  110  168   85
-  470  583  139
-  486  613  120
-  584  747  795
-  959  699  339
-  866  384  672
-  157  639  464
-  939  485  409
-  947  441  131
-  179  953  581
-  735  587  605
-  834  582   36
-  304  422  707
-  195  348  347
-  163  521  486
-  948  471  675
-  915  453  406
-   40  345  635
-   81  124  115
-  127  105  127
-   50   32   10
-  221  399  397
-  487  676  412
-  574  607  450
-  268  625  323
-  843  858  145
-  706  286  218
-  822  168  254
-  950  708  944
-  572  640  775
-  958  563  909
-  996  154  918
-  378  626  564
-  335  823  339
-  499  810  270
-  294   22   98
-  987  959  591
-  101  899  442
-  931  409  576
-  542  102  655
-  404  980  398
-  759  990  381
-  692  990  750
-  752   93  149
-  278  973  883
-  621  459  232
-  398  261  626
-  221  212  744
-  790  241  352
-  802  218  317
-  443  294  244
-  393  131  941
-  466  378  885
-  516  419  240
-  799  748  407
-  468  502  386
-  829  329  766
-  432  376  408
-  681   88  198
-  553  351  489
-  234  717   59
-  332  525  675
-  437  691  723
-  441  834  433
-  616  144  274
-  966  911  650
-  254  274  782
-  346  714  856
-  330  696  171
-  394  407  298
-  897  553  867
-  755  503  956
-  253  840  382
-  923  195  262
-  918  735  483
-   55  703  227
-  768  759  225
-  825  238   14
-    7  479  978
-  211  603  957
-  216  866   94
-  112  698   60
-  847  631  307
-  940  164  253
-  406  133   14
-  380  816  425
-  147  873  429
-  698  987   98
-  534  823  691
-  197  690  754
-  979   39  468
-  928   73  531
-  119   66  920
-  982  810  569
-  476  534  397
-  931  366  182
-  783  104  732
-  131   32  619
-  784  136  530
-   16  933  484
-  995  987  739
-  985   88  977
-   43  919  914
-  540  399  915
-  566  859  257
-  639  419   73
-  727  118  865
-  477  370  834
-  293  434  155
-  422  557  603
-  203  243  754
-  373   15  748
-  466  574  807
-  282  576   70
-  275  365  608
-  987  644  648
-  711  629  717
-  420  410  696
-  252  417  874
-  642   26  202
-  223   23  531
-  545  580  675
-  565  600  521
-  130  745  142
-  264  377  397
-  300  618  253
-  683  331  279
-  440  826  275
-  835  785  266
-  592  264  590
-  257  255  173
-  532   23  620
-  571  749  434
-  988  552  492
-  566  766  234
-  617  818  776
-   45  113  882
-  579  793  114
-  971  243  608
-  979  241  241
-  130   83  634
-   91  361    5
-  311  107  501
-  377  388  496
-  727  849  317
-  323  702  256
-  804  254  189
-   70   11  246
-  752  425  785
-  799  413  882
-  917  133  695
-  959   49  902
-  420  121  412
-  177  170  158
-  828  734  135
-  880  875   75
-  824  556  960
-  857  689  960
-   74  951    2
-  246  687  756
-  311   93  487
-  209  626  886
-   17  545  566
-  963  252  283
-  947  493  805
-  185  493  462
-  728  365  885
-  808  214  528
-  582  780  100
-   30  254  654
-  596  706  553
-  713  968  803
-  123  270  839
-  792  778  475
-  442   95  682
-  931  212  678
-  781  140  439
-  651  645  978
-  137  829  286
-  593  503  895
-  642  215  144
-  687  122  934
-   84  240  919
-  656  515  774
-   51  799  273
-  636  324  924
-  213  161  309
-  509  157  458
-  582    1  727
-  716  269  819
-  978  343  303
-  828  264  708
-  108  620  190
-   12   12  634
-  103  615  579
-  364  286  660
-  809  714  656
-  729  504   10
-  994  366  341
-  433  796   77
-  663  462  353
-  776  687  758
-  751  495  651
-   33  751  753
-  349  919  228
-  204  799  584
-  335  156  563
-  725  191  535
-  731  676  524
-  455  571   10
-  899  379  689
-  773  641  812
-  324  761  421
-  354  557  897
-  571  740  161
-  407  271  856
-  886  393  428
-  286  870  218
-  950  819  347
-  331  847  858
-  498  471  689
-  357  378  775
-  890  503  514
-  201  863  428
-  721  737  796
-  636  178  974
-   14  387  936
-  622  424  144
-   82  201  727
-  127  164  779
-  173  319  326
-  195  748  641
-  469  512  510
-  626  949  405
-  552  542  251
-  192  204  382
-  655  558  631
-  970  519    3
-  918  701  399
-   56  543  403
-  524  848  641
-  620  431  539
-  604  473  824
-  369  105  464
-  575  957  429
-  859  978  199
-  712  381  199
-  941  305  738
-  892  663  937
-  653  963  365
-   70  331  508
-  620  923  682
-  739  122  350
-  288  418  768
-  733  326  520
-  694  472  793
-  725  415  739
-  895  398  201
-  500  157  168
-  727  814  354
-  807  726  340
-  431  329  212
-  635  374  403
-  677   78  347
-  386  559  505
-  385  361  161
-  262  494  621
-  481  237  767
-  318  966  640
-  723  732  546
-  911  652  823
-  958  502  677
-  718  258  834
-   98  666  506
-  929   41  933
-  869  637  605
-  585  156  335
-  490  316  149
-  436  339  323
-  596  948  224
-  275  433  241
-  545  890  155
-  601  413  676
-  893  401  673
-  694  171  403
-  211  110  482
-  267   61  541
-  206  124  256
-  189  353  308
-  351  880   70
-  237  677  380
-  759  754  388
-  465   99  862
-  852  787  925
-  758  890  804
-  252  817  784
-  773  129  860
-  954  102  872
-  743  396  730
-  500  304  173
-  492  399  527
-  413  465  813
-  670  837  933
-  897  424  430
-  782  404   14
-  151   24  418
-  897  260  306
-  811  287  386
-  440   93  449
-  229  185  582
-  136   63  678
-  211  250  940
-  184  400  209
-  122  383  238
-  143  386  111
-  320  194  415
-  925  790  501
-  924  596  614
-  606  733  277
-  886  116  194
-  278  627  189
-  225  536  981
-  487  538  584
-  539    2  793
-  219  456   57
-  341  424  941
-  199  482  921
-  231  241  588
-  711  740  334
-  596  554  323
-  917  164  629
-   19  138  756
-  939   70  225
-  536  432  401
-  137  614   14
-  593  818  402
-  871  280  515
-  268  259  326
-  900   97  376
-   68  699  461
-  546  810  400
-  540  697  676
-  591  125  751
-  159  719  919
-  605  763  898
-  171  845  459
-  115  289  376
-  265  636  317
-  646  225   84
-  663  755   89
-  192  828   12
-  316  523  822
-  310  933  784
-   44  721  873
-  893  873  461
-  898   15  548
-   96  861  726
-    9  837  398
-  238  404   29
-  227  845  428
-  770  764  472
-  960  747  784
-  990  281  811
-   59  597  111
-  930  799  729
-  930  882  758
-  459  961  116
-  484   83  914
-   83  969  994
-  828  423  132
-  346  541  246
-  783  484  303
-  983    7  921
-  216  208  905
-  802  216   54
-    6  121  306
-  609   36  749
-  608   84  626
-   97  705   89
-  200  688  878
-  242  314  802
-  294   66  338
-  768  417  272
-  785  351  266
-   58  505  668
-  791  291  679
-  783  694   43
-  794  468  355
-  777  796  171
-  378  784  426
-  224  510  840
-  557  606  708
-  513  127  189
-  231  976  517
-  772   37  433
-  684  973  324
-   70  661   83
-  914  136  702
-  917  630  710
-  826  894   84
-  373  416  248
-  551  924  226
-  357  646  374
-  890  491  246
-  938  293  519
-   66   42  704
-  537   60  374
-  508   56  405
-  437  751  653
-  681  718  160
-  683  293  800
-  569  288  878
-  692  206  611
-  173  157  399
-  201  492  645
-   98  132  329
-  234  612  711
-  296   54  975
-  651  219  923
-  527  177  138
-  585  598  302
-  552  653  474
-   54  288  358
-  828  631  279
-  854  642  746
-   80   52  645
-  386  346  181
-  488    7  569
-  168  351  533
-  906  186  681
-  833  404  191
-  863  297  526
-  451  555  808
-  336  544  155
-  253  211  838
-  759  819  238
-  921  343  761
-  264  632  690
-  165  424  159
-  121  481  361
-  181  409  439
-   94  972  995
-  696  904  722
-  613  238  422
-  190  281  334
-  385  127  129
-  300  364  234
-  479  768  937
-  883  654   35
-  979  679  959
-  244   51  788
-  275  613  804
-  143  575  210
-  160  168  608
-  330  471  651
-  407  594  410
-  723  576  943
-  268  912  361
-  692  442  760
-  443  288   20
-  382  610  556
-   62  694  568
-  322  257  214
-  253  458  861
-  260  213  829
-   37  137  420
-  668  220  104
-  673  150  435
-  551  466  897
-  390  729  999
-  423  963  763
-  837   36  295
-  854  726  495
-   16  728  389
-  735  246  510
-  218  136  617
-  604  197  140
-  113  355  499
-  631  902  488
-  689  898  212
-  780  826  901
-  556  205  657
-  855  661  288
-  141   34  480
-   27   23  194
-  115   53  393
-  333  287  700
-   68  300  671
-  394  589   28
-  572  248  771
-  454  118  797
-  526  141  300
-  785  377  504
-  886  723  105
-  541  712  470
-  156  128  932
-  479   85  989
-  381  207  162
-  813  839  544
-  143  783  541
-  916  361   24
-  878  133  886
-  986  750  335
-  122  643  864
-  395  460  591
-  387  896  627
-  117  455  109
-    2   14  569
-  873  364  215
-  875  350  554
-   70  878  940
-  234  846   82
-  256  279  901
-  693  990  473
-  951  866  824
-  923  408  891
-   36    5  531
-  954  654  266
-  921  652  434
-  561  701  427
-  232  764  365
-  330  331   73
-   46  813    6
-  380  698  297
-  396  221  289
-  135  867  633
-  814  649  286
-  797  918  827
-  705   58  338
-    6  305  310
-  701  352   28
-  903   97  825
-  693  126  794
-  438  144  592
-  367  932  400
-  320  820  264
-  687  210  652
-  682   84  566
-  671  604  816
-  529  646  267
-  795  654  114
-  955  426  118
-  249  759  102
-  343  581  267
-  341  619  107
-  479   57  341
-  683   32  870
-  630  609  210
-  361  643  803
-  506  856  406
-  580  562  359
-  312  433  154
-  750  379  920
-  448  520  312
-  733  259  899
-   33  786  319
-  579  669   90
-  595  769  242
-  160  985  236
-  654  903  946
-  635   99  802
-   75  158  437
-  467  382  289
-  406  542  548
-  684  417  794
-  729  105  122
-   44  485  689
-  737   15  713
-  970  391   17
-  373  384  729
-  336    1  118
-  814  807  759
-  965  808  828
-  179  181  834
-  242   94  838
-  188  183   82
-  691  402  618
-  984   43  561
-  330  447  872
-  553  581   30
-  884  393  836
-  431  298  837
-  278  389  690
-  976  587  803
-  722  220  538
-  548  208  107
-  629  414  729
-  543  584  672
-  512  431  954
-  475  367  959
-  226  306    9
-  824  774  668
-  188   22  870
-  722  764  300
-  647  803  256
-  410  972   21
-  436  536  278
-  995  577  453
-  670  439  224
-  434  488  572
-   82  317  498
-  559  823  662
-  499  614  196
-  944   14  432
-  618  866  652
-  467  872  289
-  471  722  189
-  923  756   17
-  790  409  195
-  511  500  545
-  667  283  758
-  271  373  283
-  573  686  490
-  659  706  560
-  770  247  633
-  424  169  895
-   47  349  411
-  380  235  805
-  384  546  148
-  747  870  831
-  754  421  910
-  937   15  433
-  188  760  806
-  872  748  418
-  718  556  510
-  165  590  486
-  798   40  177
-  349  923  530
-  795  690  746
-  550  671  360
-  824  442  775
-  331  686  152
-  570  270  926
-  860   64  383
-  408  464  170
-  758  440  349
-  773  434  699
-  780  563  352
-   18  644  621
-  432  663  188
-  420  887  956
-  237  586  788
-  319  526  586
-  544  647  115
-  628  235  511
-  666  408   33
-  670  459  697
-   48  189  692
-  837  708  428
-  462  652  632
-  426  106  457
-  730  744  195
-  700  816  769
-  383  480  923
-  601  612  910
-  559  953  779
-  533  937  240
-  464  123  344
-  579   82   76
-  179  188  373
-    1  641   56
-  688  698   50
-  688  160    4
-  790  364  767
-  202   70  137
-  914  420  674
-  961  657  851
-  578  708  875
-  503   94  776
-  221  143  356
-   34  126  403
-  234   31   78
-  721  949  330
-  675  191  460
-   80  957  651
-  690  580  824
-  461   73  802
-  725  606   51
-  183  857  521
-  708  800  482
-  644  111   37
-  769  778  869
-  883  693  909
-  549  714   43
-  273  246  599
-  637  309  675
-  451  195  552
-  681  408  126
-  422  465   52
-  743  235  144
-  248  586  312
-   42  398  313
-  222  335   21
-  528  312  738
-  856  312  132
-  915   79  610
-  550  605  186
-  566  815  698
-  127  250  717
-  532  129  775
-  604  132  549
-  134   44  247
-  521  815  470
-  370  853  515
-  795  187  851
-  963  295   50
-  757  228  169
-  706  303  120
-  416  133  309
-  956   63   11
-  751  162  301
-  387  632   29
-  257  383  994
-  215  247  994
-  529  606  963
-  770  305  756
-  721  791  971
-  558  531  675
-  253  477  918
-  470   52  615
-  256  335   24
-  301  523  651
-  316  702  637
-  321  721   32
-  591  730  179
-  341  364  146
-  673  120  501
-   31  183  207
-  641  116  463
-  221   54  775
-  262  458  669
-  139  486  904
-  736  260  139
-  406  359  663
-  434  563  753
-  981    6  215
-  423  320  358
-  719  319  415
-  315  375  320
-    7  637  423
-  314  365  175
-  199  687  754
-  174  546    1
-   29  526  754
-  153  402  251
-  787  565  919
-  820  239  876
-  994  614   47
-  958  816  288
-  244  750  275
-  248  890  694
-  628  194  414
-  774  958  466
-  181   34  442
-  569  371  939
-  500  347  740
-  745  123  467
-  614  662  119
-  201  690  352
-  596  974  215
-  508  921  240
-  405  947  317
-  402  372  733
-  298   41  357
-  135  339  759
-  544  683  690
-  584    1  893
-  215  680  501
-  191  453  649
-  952   84  727
-  815  494  293
-  163  168   46
-  136  119  441
-  185  112  474
-  877  830  354
-  497  242  226
-  484  714  178
-  854  570  402
-  873  120  432
-   30  613   50
-  365  529  624
-  969  332  586
-  636  617  153
-  588  669  314
-   12   52  628
-  584  704  642
-   95  199   69
-  979  486  705
-  953  391  698
-  698  471  333
-  302  466   64
-  678   19  376
-  353  860  905
-  236  113  797
-  400  879  962
-  341  805  493
-  661  506  196
-  736  357  644
-  943  352  365
-  484  756  282
-  491  943  262
-  765  494  729
-  321  208  986
-  621  346  290
-  258  706  386
-  179  452  276
-  433  583  153
-  708    2  212
-  193  151  320
-  647  149  299
-  335  951  831
-  661  787  792
-  818  742  477
-  799  964  157
-  726  780  172
-  740  225   24
-  428   39  263
-  388  901  506
-   97  940  413
-   41  454  826
-  324  453  443
-  346   76  938
-  463  595  751
-  854  948  454
-  451  902  507
-  722  961  130
-  695  529  425
-   59  591  467
-  559  623  222
-  991  194  196
-  749  793  245
-  474  327  247
-  346    2  277
-  643  328  135
-  785  264  751
-   35  537  887
-  811  584  685
-  475  903  748
-  471  115  698
-    7  945  449
-  464  880  227
-  287  868  878
-  564   11  850
-  221  623  475
-  314  325  553
-  209  865  621
-   39  655  236
-   95  296  235
-  124  920   21
-  439  473  902
-  334  375  792
-  315  116  768
-  267  736   95
-  703  606  595
-  505  886  514
-  114  168   52
-  301  584  495
-  200  709  527
-  164  422  554
-  246  546  460
-  377  141  223
-  286  323  354
-  810  240   90
-  920  450  425
-  277    8  570
-   28  649   50
-  295  650  534
-  690  187  665
-  674  184  483
-   68  139  376
-  570  430  500
-  590  422  543
-  304   68   43
-  422  666  163
-  501  375  696
-   81  621  813
-   19  981  945
-  410   83  941
-  427  945   25
-  283  408  825
-  281  648  635
-  294  678  615
-  113  936  500
-  554  772  314
-  502  642  624
-  262  318  699
-   88  526  817
-  242  468  161
-  820  179  253
-  580   62  531
-  343  183  422
-  430  161  485
-   26  127  435
-  442   32  517
-  491  243  544
-  552  680  310
-  131  489  457
-  697  162  526
-  897  838  305
-  695  748  335
-  753  936   24
-   46  681  637
-  745  808  617
-  318  251  171
-   49   39  855
-  359  284  725
-  221  837  145
-  581  821  444
-  573  267  318
-  706  969  583
-  722  912  586
-  680   86  869
-  833  546   97
-  865  507  481
-  938  104  386
-  941  217  265
-  360   53  607
-  634  197  476
-  787  659  444
-  368  163  783
-  493  738  345
-  182  539   52
-  764  827  612
-  699  493  663
-  914  384   17
-  495  546  260
-  739  461  275
-  386   91  394
-  804  506  198
-  780  421  269
-  109  669  193
-  457  298  349
-  560  800  331
-  282  153  637
-  160  254  807
-  434  204  476
-  717  759  737
-  629  785   65
-  347  614  790
-  270  663  647
-  188  271  528
-  277  929  591
-  853  744  589
-  704  881  761
-  573  714  627
-  541  689  287
-  540  301  187
-  670  397  368
-  867    8  698
-  869  146  802
-   10  137  104
-  164  575  450
-  507  233  466
-  548  425   46
-  435  824   78
-  334  951   34
-  646  551   99
-   60  829  569
-  501  866  382
-  440  327  222
-  744  132  333
-  800  983  126
-  887  866  451
-   28  599   39
-  833  129  307
-  804  519  319
-  510  746  821
-  639  209  561
-  197  649  333
-  638  644  361
-  754  474  366
-  193  219  106
-  843  536  331
-  483  634  611
-  367  195  592
-  753   71  115
-  934   42   83
-  337   75   85
-  475  304  169
-  672  143  211
-  360  406   74
-  370  119  111
-  351  955  696
-  543  849  785
-  375  576  836
-  288  316  239
-  512  273  786
-  721  407   82
-  998  634  292
-  449  399  284
-  540  316  693
-  430   68  984
-  146  376  482
-  785  134  643
-  157  509  441
-  808  615  552
-  920  564  452
-  407  341  441
-  990  778  211
-  822  325  925
-  368  206  876
-  491  153  126
-   11  373  546
-  854  752  143
-  843  773  660
-  777  472  964
-  359  708  889
-  575  941  882
-  945   22  152
-  968  237  115
-   30  238  110
-  101  504  412
-  119  646  719
-   28  190  336
-  890  301  712
-   11  657  782
-  885  465  361
-  424  669  645
-  528  654  194
-  894  252  667
-  516  299  998
-  370  837  976
-  305  651  194
-  701  447  175
-  470  234  929
-  752  606  965
-  568  370  322
-  226  592  281
-  553  801  330
-  576  228  623
-  639  477  637
-  252  664  998
-  781  215  994
-  446  698   25
-  562  500  980
-  702  444  299
-  971  550  387
-  754  562  439
-  347  896  716
-  242  861  596
-  588  829  323
-  464  211  949
-  481  192   47
-  598   98  963
-  932  960   32
-  933  482  893
-   15  989  888
-  866  735  629
-  636  513  470
-  280  528  944
-  531   66  867
-  284  735  865
-  778  743    3
-  458  131  262
-  772  273  255
-  942  278   50
-  269  151  917
-  502    4  883
-  538  155   68
-  929  850   21
-  126  759  729
-  869  689  711
-  180  359  855
-  299   68  975
-  210  371  205
-  477  183  827
-  922   50  841
-  665  154  312
-  379  848  486
-  450  835  743
-   69  161  515
-  680  535   83
-  692  779  352
-  818  554  389
-  781   89  538
-  746  218  209
-  292  201  652
-  417  375  393
-  916  962  644
-  518  923  561
-  915  469  386
-  142  460  454
-  947  392   89
-  144  840  866
-  205  465  967
-  209  657  650
-  891  322  207
-  800  522  907
-  516  498  994
-  185  806  804
-  179  393  137
-  316  765  892
-  850  756  123
-  494  783  627
-  832   53  659
-   93  949  602
-  666  954  516
-  592   11  210
-  223    4  389
-  221  280  388
-  100  279   50
-  380  589  345
-  385  238  382
-  205  506  359
-   98  280  652
-  396  371  290
-  314  477  454
-  368  692  564
-   48  263  586
-  356  902  922
\ No newline at end of file
diff --git a/advent04.hs b/advent04.hs
deleted file mode 100644 (file)
index b8c095e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-module Main(main) where
-
-import Data.List (last, intersperse, sortBy, intercalate, isInfixOf, init)
-import Data.List.Split (splitOn)
-import Data.Char (isLetter, ord, chr)
-import qualified Data.Map.Lazy as Map
-
-data Room = Room { name :: String
-                 , sector :: Int
-                 , checksum :: String
-                 } deriving (Show)
-
-main :: IO ()
-main = do 
-        instrText <- readFile "advent04.txt" 
-        let rooms = map (parseLine) $ lines instrText
-        part1 rooms
-        part2 rooms
-
-
-part1 :: [Room] -> IO ()
-part1 rooms = do 
-    print $ sum $ map (sector) validRooms
-    where 
-        validChecksum room = (checksum room) == makeChecksum (name room)
-        validRooms = filter (validChecksum) rooms
-
-part2 :: [Room] -> IO ()
-part2 rooms = do 
-    print $ fst $ head $ filter (\sn -> isInfixOf "north" (snd sn)) sectorNames
-    where 
-        validChecksum room = (checksum room) == makeChecksum (name room)
-        validRooms = filter (validChecksum) rooms
-        sectorNames = [((sector r),
-            shiftWord (sector r) (name r)) | r <- validRooms]
-
-
-parseLine :: String -> Room
-parseLine line = Room {name=name, sector=sector, checksum=checksum}
-    where components = splitOn "-" line
-          name = intercalate "-" $ init components
-          sector = read $ head $ splitOn "[" $ last components
-          checksum = filter (isLetter) $ last components
-
-countedLetters :: String -> [(Char, Int)]
-countedLetters name = sortBy sortCLetter $ unsortedCountedLetters name
-    where unsortedCountedLetters name = 
-            Map.toList $ Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
-
-sortCLetter :: (Char, Int) -> (Char, Int) -> Ordering
-sortCLetter (l1, n1) (l2, n2)
-    | n1 < n2 = GT
-    | n1 > n2 = LT
-    | n1 == n2 = compare l1 l2
-
-makeChecksum :: String -> String
-makeChecksum name = [l | (l, _) <- take 5 $ countedLetters name]
-
-
-shiftWord :: Int -> String -> String
-shiftWord shift letters = map (shiftLetter shift) letters
-
-shiftLetter :: Int -> Char -> Char
-shiftLetter shift letter
-    | isLetter letter = chr $ (ord letter - ord 'a' + shift) `mod` 26 + ord 'a'
-    | otherwise = ' '
diff --git a/advent04.txt b/advent04.txt
deleted file mode 100644 (file)
index 8f99f7a..0000000
+++ /dev/null
@@ -1,991 +0,0 @@
-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]
\ No newline at end of file
diff --git a/advent05.hs b/advent05.hs
deleted file mode 100644 (file)
index c86b14c..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-module Main(main) where
-
-import Data.Hash.MD5 (md5s, Str(..))
-import Data.List (isPrefixOf)
-import qualified Data.Map.Lazy as Map 
-
-type Password = Map.Map Integer Char
-
-input = "cxdnnyjw"
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-
-part1 :: IO ()
-part1 = do 
-    print $ take 8 [h!!5 | h <- filter (interesting) $ md5sequence input 0]
-
-part2 :: IO ()
-part2 = do 
-    print $ Map.foldr (:) [] password
-    where interestingHashes = 
-            [(read [h!!5], h!!6) | 
-              h <- filter (interesting) (md5sequence input 0), 
-              h!!5 `elem` "01234567"]
-          password = findPassword Map.empty interestingHashes
-
-
-md5sequence :: String -> Integer -> [String]
-md5sequence key i = (md5s (Str (key ++ show i))) : (md5sequence key (i+1))
-
-interesting :: String -> Bool
-interesting hash = "00000" `isPrefixOf` hash
-
-dontReplace :: (Integer, Char) -> Password -> Password
-dontReplace (k, v) = Map.insertWith (\_ v -> v) k v
-
-findPassword :: Password -> [(Integer, Char)] -> Password
-findPassword p (c:cs)
-  | Map.size p == 8 = p
-  | otherwise = findPassword p' cs
-      where p' = dontReplace c p
diff --git a/advent06-old.hs b/advent06-old.hs
deleted file mode 100644 (file)
index 77d4093..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-module Main(main) where
-
-import Data.List (transpose)
-import Data.Char (isLetter)
-import qualified Data.Map.Lazy as Map
-
-main :: IO ()
-main = do 
-    text <- readFile "advent06.txt" 
-    let message = lines text
-    part1 message
-    part2 message
-
-part1 :: [String] -> IO ()
-part1 message = do 
-    print $ map (fst) $ map (mostCommon) $ map (countedLetters) $ transpose message
-
-part2 :: [String] -> IO ()
-part2 message = do 
-    print $ map (fst) $ map (leastCommon) $ map (countedLetters) $ transpose message
-
-
-countedLetters :: String -> Map.Map Char Int
-countedLetters name = Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
-
-mostCommon = Map.foldlWithKey (mostCommonP) ('a', 0)
-
-mostCommonP (letter0, count0) letter count
-    | count > count0 = (letter, count)
-    | otherwise = (letter0, count0)
-
-leastCommon = Map.foldlWithKey (leastCommonP) ('a', maxBound :: Int)
-
-leastCommonP (letter0, count0) letter count
-    | count < count0 = (letter, count)
-    | otherwise = (letter0, count0)
\ No newline at end of file
diff --git a/advent06.hs b/advent06.hs
deleted file mode 100644 (file)
index e2a41e7..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module Main(main) where
-
-import Data.List (transpose, maximum, minimum, sort, group)
-import Data.Tuple (swap)
-
-main :: IO ()
-main = do 
-    text <- readFile "advent06.txt" 
-    let message = lines text
-    part1 message
-    part2 message
-
-part1 :: [String] -> IO ()
-part1 message = do 
-    putStrLn $ map (snd . maximum . counts) $ transpose message
-
-part2 :: [String] -> IO ()
-part2 message = do 
-    putStrLn $ map (snd . minimum . counts) $ transpose message
-
-counts :: (Eq a, Ord a) => [a] -> [(Int, a)]
-counts = map (\g -> (length g, head g)) . group . sort
\ No newline at end of file
diff --git a/advent06.txt b/advent06.txt
deleted file mode 100644 (file)
index 4a1a2a6..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-focdealm
-ggsipflx
-rvibwxbm
-vqrfyyrh
-hsjtzpgs
-ozymxpoy
-jiecwags
-lztseufl
-dfwibwsn
-skiuhnwl
-kamgzqog
-axeqncwa
-gobivxto
-nwgoryhd
-tzrlitrq
-uzoldxbv
-zsteobha
-pfcgdqkg
-prcqlunp
-iwivemkh
-vpkilupm
-ewuznabz
-veaptost
-cyvirffe
-ejhhqfng
-ibsqztgg
-xzczkboh
-bckhbodf
-vbycgonv
-esmoyyku
-unccgdgj
-cqwnqlzs
-edoqmykb
-bkvzlhyq
-yzrspisn
-zlzibhca
-povnweaf
-muyfegxe
-oaojqfrl
-gwesjxws
-rjknfyeh
-dkquvctc
-cfuzhxoj
-tdzzzfqc
-lzjzsyni
-wjfxckkf
-xmhyjhop
-kmtllzxs
-yohearbj
-ilmvyxgn
-erczytzw
-kuetjsba
-vwkpollq
-tujwluzc
-jlvedjcp
-acmoaoji
-gqoliyen
-agckavhf
-ottamfdm
-jxwlyotw
-tdpsrapj
-carwwmqc
-ykaipjdj
-zdfrbduu
-vwiiosud
-uoixglbw
-yegbwxjb
-wbpqqqfv
-wpynmyqi
-aqdkscgd
-oghnbnnf
-duftexbb
-ttvbofay
-jferymwy
-hqzimpiq
-sifyogml
-nymxqbws
-dhdlhhqp
-urtuhcrj
-giwcunfq
-fxgretsl
-maihqkpk
-pdxfkcru
-xixtthag
-vuzxqzzi
-wxxeleug
-xpopxkzo
-hgcsyuad
-xcbydxnx
-kxocfakp
-erxdajeq
-tliakzhh
-iygbbuxs
-qlgqthpp
-duzzptwk
-gfnqdotc
-kjayxeqf
-fehitfar
-yemshppn
-igtczmmw
-gfajhxch
-bslzmgwo
-xpmhmirx
-yhlwlupt
-nymajupw
-tlhgdefw
-bqkudizc
-lucrhmnm
-svkoaqzz
-luggfivf
-ckawtiwy
-eeivawhj
-qdmmmvdl
-quezzzqa
-oimsfsuo
-jdvcknqu
-aupohqbk
-llwsasnz
-zlpljtjl
-xfylqxlv
-zqppxkul
-varoizrq
-yxryqwso
-gsscetca
-gcbdgqyo
-hsdnvteo
-pxtoreoc
-rwjdkwzs
-zdgofynf
-polyntkx
-jhulgrnf
-ycbzpdpw
-bzvdbwsy
-vydjbucs
-rxadwwuo
-ccnvzjak
-nombazjc
-lbxwdasr
-cbdlkiha
-sdomdvow
-phjnkkkp
-nmtmrnyz
-nxsvmcwk
-hqimjvir
-vmjhhuuv
-zilhgqlb
-gfgbibgg
-imxxugfe
-wtaffkbj
-lyguqvjs
-pejslhls
-qjnefwii
-oanqnnnc
-kcjyfwxm
-zoxjwxmw
-ihmokcrm
-uebsbhfr
-fxvjiorr
-ebjiucyt
-ofutlokv
-mdfnsuyr
-dzviwqdk
-umwyaijz
-hdqwfalt
-qtyrouwh
-lkzcrtwa
-dtqvwzke
-buplmmca
-xxepjuvj
-omyotlar
-ytndbwhi
-sbntigym
-mphrnsme
-xiymeoxr
-kcujxcih
-bydnchgk
-snwdjlip
-yljsymtv
-tyhbpoab
-zlqhvzxl
-akbtnzop
-xnpjmysj
-znhednen
-vbcsocrm
-ywjajour
-ejngbqev
-rstykfhc
-cbcnoexq
-mzlxvxwj
-vfdqaalp
-nbszzozr
-dqpyojid
-hfuqilbl
-uoackeup
-shqkcsmr
-jbdasroe
-fmlkvsnt
-cnomxkvk
-unbsfncq
-bnzxltxe
-bbadfyin
-skmhtmhn
-xkypwglb
-flbfiioo
-fzywneyg
-srngxbut
-qtodeuxg
-xvawfqli
-nyfmrdsn
-rdjysbxj
-spmezvvj
-ofoivcuc
-touzgqzx
-mfqyzagc
-dmaurbdv
-gqnrlyuw
-wuppusoh
-qgstihuy
-uldnlrpi
-xaskgwim
-djjrphid
-qjhmctyu
-osfenjdn
-zvoahhkk
-xiuyatyn
-fepobmjh
-kmugpjpw
-aikpozqs
-kmgmazif
-gbzlodzb
-hrocqadn
-noekklwb
-vzwhnkvx
-osrspxsc
-iekmqgua
-xeehndee
-quttqjav
-htoptweo
-cyicmwba
-jltlwlyy
-qvccdkig
-bibggekq
-kwfwvrfg
-eycwlcup
-murgcddl
-lyukeubx
-twbpzoyg
-dkcvzele
-fozhtmcz
-frugeivm
-qjbhpdpr
-tgkkeroo
-ryuvgqgc
-jhixykqn
-wsebmcrn
-wohtjpgu
-isflpxxt
-xggwmamk
-tfwdsrfe
-cpjvcghr
-fekhexdb
-zcwzqofh
-awnfiqzu
-ihekvqby
-rqaqajij
-cumouwzx
-ccyrflxd
-rredygrk
-patcpktn
-mjnwuefa
-tuhgyfsw
-mjpxrgkx
-hupfjqxo
-mgkclcrf
-jkmkhkci
-nkcrwgqd
-apmfiqpg
-pxiawshv
-ledhpfaz
-btikmkwj
-jwosopir
-mgxftcte
-phkbcdex
-uakftnbh
-fnkmdecn
-swrvbjwj
-hphskevf
-trnpfdmy
-odvmmqss
-akvqgemq
-zyqlkwdm
-nbnaqjsa
-mbnogzyt
-mchaxjxu
-tcqqerqz
-ayylasgq
-zqbrjfli
-ccjjnfat
-lvlpdjqu
-luiabalt
-qsvkepvz
-dtyobsiy
-jkulvrnc
-thwjbzkh
-vvhrwbkx
-fhxejrff
-bacuriaz
-grmtyude
-feynnckb
-hfdepyjn
-lvsfflyc
-xfrgfgeh
-vqqybtba
-ntlfjqjt
-zadauvmg
-itukkpqf
-mrnnfgmf
-hpjqvppo
-dshgwmgb
-pzxeoymv
-nlokvrio
-cgcaxffl
-dvimsnxu
-iczcvwho
-lkxumswj
-satmovog
-ujwknitl
-halkgpaa
-pnttnodc
-adsvsumi
-jwerfpko
-yhsjqytk
-vpevemez
-yvjmltwj
-vdoeippw
-siouxait
-ftrspdpx
-hptwqlmz
-haewgrft
-watbdvqz
-eiptzrvr
-msvbioso
-dnjeoucg
-qixvmlem
-mqquklfq
-sszagakl
-khfbexqb
-uysydrlc
-inawynse
-whuonlhq
-eshukapj
-vtrepdxm
-pgjjcisd
-puiunlts
-replddlv
-emjyyhmd
-aahwhond
-laneyzsj
-jnlkdpyb
-sqxrctuo
-wmmyybvl
-ldyvqldz
-bzbrsdjr
-ekxwhzte
-gnpqywzz
-afsfbtte
-ggkbrgds
-dlawfrbp
-opypolpc
-cqpxcfgh
-ynmtlgvl
-slfmicyv
-ooguwxjc
-tewmtlty
-wcdwansw
-ktercyvw
-qrgxrzne
-wvbhflls
-dpfjwbmm
-uigmcaow
-ejzhkxic
-fbewvcoh
-jxbtcmwn
-ywiktjqn
-rftnjqpp
-yalixnnw
-srdsiwgy
-pdpdrynx
-ioroheqp
-vpvvnmad
-tqksxfsp
-snzxciua
-nrhtoskm
-crfvapzk
-wndbcxvf
-syffkzmv
-nneibkaf
-unuvhnli
-ujhdjkvs
-gmyqgvdr
-jedfxwje
-bcshopnu
-xgiprhyv
-onibkkoq
-riguljez
-yodzrfeu
-ogbwakaa
-ymrltbxa
-ourmuhrx
-yxwixtuv
-ptnxdvdm
-oskvgexz
-fbigwiaw
-xctckzmy
-khwiyvmw
-qbqbtxpr
-kavzlngz
-bbklqvzt
-rwlzppbq
-upirhhca
-ezlaqdgo
-ieuynchi
-qmjtojzq
-qrricseq
-hxkrsfmw
-nssfpnws
-tiaziudb
-rvskpahe
-pplmppvi
-jxpyidio
-teudseap
-aclyhavi
-yqafhkyd
-drjhcqgu
-zvfcfbjc
-sqfuuezn
-gwtsupqk
-czakgbiy
-wknfzbyj
-ooxwycji
-wxymanlx
-ewbtpqtl
-jmwnxydh
-ceqdllqb
-jhdbejmt
-mazzsanu
-uypyqlvh
-itnrzbie
-miuegdjz
-tqxeipin
-kbareizb
-jgjxrycy
-epshhech
-oicruxsz
-ptxgidha
-bmgnvjtr
-qvwzlmgq
-cvwtdffi
-ibzasmru
-jfenrbjd
-nrkgwvcz
-hlmghdgd
-emhdaicl
-wdwrzocv
-spwjcrud
-dsgilvqn
-phvmafqk
-iiihsfff
-uvcqgtyc
-doxkrzzw
-hktdpsbv
-evqojani
-kzapomdx
-ewtbrdtb
-rgshzyxq
-ltinzxld
-cazrrlcu
-irfxunbt
-rmqcsbvm
-gddexbsb
-qladhkpd
-xlvzpmab
-wirftlbu
-fxfqjubx
-sgogtrcb
-zlqxxwfy
-djgtbihr
-gslssgsu
-wytydgje
-vmovsmdh
-ogyiuirh
-mtfxzrrx
-kcpfbemc
-blreqhel
-zjsjqqyh
-ciqwtpvk
-yjcinpaa
-wxbxagui
-aqbjqmig
-ybaeuhew
-mjzpnttv
-mevjcrqp
-fpmgzgco
-gklesvof
-jzfssvvx
-aynfmwhl
-euosbnhf
-lcebcalt
-kvsuuyyt
-ltranzur
-nlledtpz
-vqdrgckr
-yodxnjpt
-uyznwnni
-ckczwqkp
-uxtjgoee
-otdoyaxg
-lbccbfgi
-mhzjujrp
-cekkthvf
-fbvpuhog
-nzfannep
-rnnqusey
-aiocsiyy
-uvcbtfwr
-bzqirxrg
-qnmfgshq
-inyevvbn
-wswvhglx
-huxqxwwb
-fdutjnfq
-adajhsjk
-ahllesij
-tcfawzgu
-zfdgmtry
-byznvpfp
-duunxdad
-kgadxmdf
-ptfaovzv
-uhuvlivs
-xcoqrmeu
-nnnlvmga
-zwrbykek
-lvpumidd
-hieivrnt
-vrwqsvci
-npbplsvm
-ougzcgty
-rzvgzooo
-iehafkto
-rzspzjne
-dzvvhvld
-fgkmmfda
-xjsnnlmd
-igvjrsuk
-narcempo
-xrhoiugu
-ghxbpomr
-waxtcbcg
-tmqgsejx
-dobaxhel
-mpzgjyww
-ehyfvnaz
-zxrdlajd
-hfquyvok
-aqxxdcqv
-vjbukram
-rjvttibk
-pryxgzrd
-hcqpxgee
-qjgqvoal
-wmbuvcty
-zpgxmdiu
-foequjps
-lmdjwyfj
-mhqudwzv
-lrzkttsw
-owyatnru
-gwppbbfb
-fvlkdsjk
-pwhlvjtb
-zgldiibp
-sokjzgvq
-kfourwqm
-nfqoyvsz
-hdiwmrhk
-nnapsbht
-blqjjtwy
-aknoauti
-uhgowkyx
-uypyjorh
-blfeioot
-kzbukpxk
-kfmbxgle
-zmegahum
-upjouzrg
-tkedvzfy
-bxwxuutn
-rrwxobjp
-jdujkhox
-jkycewdx
-ivlbibns
-qjshodxf
-bektjeou
-wotjfgfl
-rjrcfiug
-aklhubjf
-kwpnaezt
-lsqvzdom
-pxzvorct
-vcxazyzs
-xsszjsjq
-ydgfsukl
-gqxpcrla
-rvsoxkhy
-rschupcm
-ivlpikxi
-etrnyvkh
-byzymjms
-qagdcqww
-sxnausxs
-giuitchj
-qgolehtg
-keeskeyb
\ No newline at end of file
diff --git a/advent07.hs b/advent07.hs
deleted file mode 100644 (file)
index 2705b9d..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-import Text.Parsec
-import Control.Applicative ((<$), (<*), (*>), liftA)
-import Data.List (partition, union, intersect, tails)
-import Data.Char (isAlphaNum)
-
-data Chunk = Include String | Exclude String deriving (Show)
-data ChunkV = Includev Bool | Excludev Bool deriving (Show)
-
-chunkValue :: Chunk -> String
-chunkValue (Include v) = v
-chunkValue (Exclude v) = v
-
-isInclude :: Chunk -> Bool
-isInclude (Include _) = True
-isInclude (Exclude _) = False
-
-chunkValueV :: ChunkV -> Bool
-chunkValueV (Includev v) = v
-chunkValueV (Excludev v) = v
-
-isIncludeV :: ChunkV -> Bool
-isIncludeV (Includev _) = True
-isIncludeV (Excludev _) = False
-
-
-main :: IO ()
-main = do 
-    text <- readFile "advent07.txt" 
-    part1 text
-    part2 text
-
-
-part1 :: String -> IO ()
-part1 text = do 
-    print $ length $ filter (allowsAbba) $ successfulParse $ parseI7vf text
-
-
-part2 :: String -> IO ()
-part2 text = do 
-    print $ length $ filter (supportsSSL) $ successfulParse $ parseI7f text
-
-allowsAbba :: [ChunkV] -> Bool
-allowsAbba chunks = (any (chunkValueV) includeChunks) && (not (any (chunkValueV) excludeChunks))
-    where (includeChunks, excludeChunks) = partition (isIncludeV) chunks
-
-i7file = i7line `endBy` newline 
-i7line = many1 (includeChunk <|> excludeChunk)
-
-chunk = many1 alphaNum
-
-excludeChunk = Exclude <$> (between (char '[') (char ']') $ chunk)
-includeChunk = Include <$> chunk
-
-hasABBA = preambleAbba <* (many alphaNum)
-preambleAbba = (try abba) <|> (alphaNum >> preambleAbba)
-
--- abba = 
---     do  a <- alphaNum
---         b <- alphaNum
---         if a == b then
---             fail "Identical"
---         else do char b
---                 char a
---                 return [a, b, b, a]
-
-abba = 
-    do  a <- alphaNum
-        b <- noneOf [a]
-        char b
-        char a
-        return [a, b, b, a]
-
---         where
--- Â  firstChar = satisfy (\a -> isLetter a || a == '_')
--- Â  nonFirstChar = satisfy (\a -> isDigit a || isLetter a || a == '_')
-
-   -- b <- bChar
--- where bChar = satisfy (\l -> lsLetter l && l /= a)
-
-
-
-i7filev = i7linev `endBy` newline
-i7linev = many1 (includeChunkv <|> excludeChunkv)
-
-excludeChunkv = Excludev <$> (between (char '[') (char ']') $ hasABBAv)
-includeChunkv = Includev <$> hasABBAv
-
-hasABBAv = 
-    (try (id True <$ preambleAbba <* (many alphaNum)))
-    <|>
-    (id False <$ (many1 alphaNum))
-
-
-parseI7f :: String -> Either ParseError [[Chunk]]
-parseI7f input = parse i7file "(unknown)" input
-
-parseI7 :: String -> Either ParseError [Chunk]
-parseI7 input = parse i7line "(unknown)" input
-
-parseAbba :: String -> Either ParseError String
-parseAbba input = parse hasABBA "(unknown)" input
-
-parseI7v :: String -> Either ParseError [ChunkV]
-parseI7v input = parse i7linev "(unknown)" input
-
-parseI7vf :: String -> Either ParseError [[ChunkV]]
-parseI7vf input = parse i7filev "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
-
-
-allSubstrings :: Int -> [a] -> [[a]]
--- allSubstrings n es 
---     | length es < n = []
---     | otherwise = (take n es) : (allSubstrings n $ tail es)
-allSubstrings n e = filter (\s -> length s == n) $ map (take n) $ tails e
-
-
-ieCandidates :: [Chunk] -> ([String], [String])
-ieCandidates chunks = (includeCandidates, excludeCandidates)
-    where (includeChunks, excludeChunks) = partition (isInclude) chunks
-          isABA s = (s!!0 == s!!2) && (s!!0 /= s!!1)
-          candidates = (filter (isABA)) . (foldl (union) []) . (map ((allSubstrings 3) . chunkValue))
-          includeCandidates = candidates includeChunks
-          excludeCandidates = candidates excludeChunks
-          
-inverseABA :: String -> String
-inverseABA s = [s!!1, s!!0, s!!1]
-
-supportsSSL :: [Chunk] -> Bool
-supportsSSL chunks = not $ null $ intersect abas eabas
-    where (abas, babs) = ieCandidates chunks
-          eabas = map (inverseABA) babs
diff --git a/advent07.txt b/advent07.txt
deleted file mode 100644 (file)
index fb0a641..0000000
+++ /dev/null
@@ -1,2000 +0,0 @@
-dnwtsgywerfamfv[gwrhdujbiowtcirq]bjbhmuxdcasenlctwgh
-rnqfzoisbqxbdlkgfh[lwlybvcsiupwnsyiljz]kmbgyaptjcsvwcltrdx[ntrpwgkrfeljpye]jxjdlgtntpljxaojufe
-jgltdnjfjsbrffzwbv[nclpjchuobdjfrpavcq]sbzanvbimpahadkk[yyoasqmddrzunoyyk]knfdltzlirrbypa
-vvrchszuidkhtwx[ebqaetowcthddea]cxgxbffcoudllbtxsa
-olgvwasskryjoqpfyvr[hawojecuuzobgyinfi]iywikscwfnlhsgqon
-jlzynnkpwqyjvqcmcbz[fdjxnwkoqiquvbvo]bgkxfhztgjyyrcquoiv[xetgnqvwtdiuyiyv]zyfprefpmvxzauur
-vjqhodfzrrqjshbhx[lezezbbswydnjnz]ejcflwytgzvyigz[hjdilpgdyzfkloa]mxtkrysovvotkuyekba
-xjmkkppyuxybkmzya[jbmofazcbdwzameos]skmpycixjqsagnzwmy
-zeebynirxqrjbdqzjav[cawghcfvfeefkmx]xqcdkvawumyayfnq[qhhwzlwjvjpvyavtm]sbnvwssglfpyacfbua[wpbknuubmsjjbekkfy]icimffaoqghdpvsbx
-enupgggxsmwvfdljoaj[qlfmrciiyljngimjh]qkjawvmtnvkidcclfay[bllphejvluylyfzyvli]heboydfsgafkqoi
-ottpscfbgoiyfri[iwzhojzrpzuinumuwd]orfroqlcemumqbqqrea
-zhrhvyfxxcsdpris[xdqecoqujrnqbgla]bpwibmrkcfbzigf[rlqtqykdltcpusvc]ybtsglkxrhucxwv
-msaebhhuxyaevahov[skkhuecthcqtrvtunw]bzlvljpsapsezchptjs[lbcxoczqbyysmha]zdqlfydjdctfnuetghr[owwhfhnjmpekukafw]qqitepzwooogqifl
-jhdfwesnofrkpse[mkruficpgplktbmoo]mnrjpuvsauanolvzhym
-ucibfxxivatgxlupp[rxlbgrqostcioowo]faiimhdhgpockadenua[teomupxzwrernokhyud]ohsfljkyjvkfzwus
-gzxcgjqdbyvfndfpw[ypfsapvecfqihnpuszq]mvwxgfkniekgqzqid
-fipkggpfwvgrqiwosi[itadifxotejgzkt]szwurlcbvffhgse
-ketltdpowbxcusrcua[oonjssgqvcgwvlz]otjxgpizqfpcriuco[mgtgmwcjecomtdkxdev]dnrecyeyhqcpausqzsw
-lcototgbpkkoxhsg[erticxnxcjwypnunco]notoouvtmgqcfdupe[hubcmesmprktstzyae]unuquevgbpxqnrib[egalxegqwowylkdjkdg]spqmkzfjnzwcwgutl
-nesmourutitzqtolwd[rurfefjvljejcufm]jagkqdwpkefkjdz[cctohikipqxxbdjxsg]badmffkslhmgsxqscf
-vvbwenaczgfagvrv[dqjzprtikukbikojlgm]bkfrnbigwaitptbdcha[llnwgonsrsppphnnp]sqozspzzfbeigmw
-jzkzjzzghblqqme[fsqzyykcotbavruyp]vjzohzsunrevhmpi
-jlngucjirfgdgorbgb[nvvkvebcjahujrwjmy]cfnlrssuthgusytkqt
-kegsdcxndhtlskseb[zbtcngduxclffzlw]wrdqbtrqbcpbeaiqvx[svsyqhkrryycnkceq]ztrawvffepndijceeih
-imtafeyfivrcegpagsl[tjzsewuwboushjl]mtnyptormlwiijlds
-sblhlpnuutqgtuvlc[jlkivbtbkivklrnr]zkzcykzkyjxarepzvrr
-ojuqmcidxmsyjkhuh[gsegkxlimzuyceo]dlhjiensaurluhul
-sxkxluastorxmnd[gwkeczwgmamhjquth]yvpdadteadabxgsplmr
-cndxxzfcmwwtcibgktm[ntsvmiwosuvniztv]onnfaenxutizlbxdk
-eqiwaqxxstamxgzc[vnomzylvfpmcscjar]rwdqevxpeqvrmvliu
-tvzbzkhvpzedqtp[whzeqaisikjjbezzcow]hqbizwaaffwbtfglq
-ajwpjiqawievazmipkw[mgfhwrppaxagfdgfsa]iaqcnovhgearcutadns[anaukyaljeflxdnucbn]bhqcwrkeolrhwdih
-neakzsrjrhvixwp[ydbbvlckobfkgbandud]xdynfcpsooblftf[wzyquuvtwnjjrjbuhj]yxlpiloirianyrkzfqe
-jugqswdvlbaorwk[dfqvlubdcigzpcz]aqhybhnoukoyxuiw
-kkkfysfugyvqnfvj[ahhqkrufcvhfvapblc]jfincvlxbjivelqrs[mpoymhslpyekjmy]eicbqlzecwuugez[tsqmqvjiokqofbp]senbbdxrdigwcjwik
-ogiiiqaxakiaucwa[ltdchlxwnzefocrw]koxethzfvlsewbqdt[qdfqgtzftqpaxuzcruo]fvkgjcglmmxqnifv
-epmnxkubnsnyeeyubv[ydzhcoytayiqmxlv]edmbahbircojbkmrg[dlxyprugefqzkum]svdaxiwnnwlkrkukfg[eacekyzjchfpzghltn]ofwgevhoivrevueaj
-vvwvubpdeogvuklsjy[psnqcfnqhxaibnij]fwzpkbdgmpocoqp
-pjdxcbutwijvtoftvw[zkqtzecoenkibees]llfxdbldntlydpvvn[uaweaigkebxceixszbh]xxlipjtlogbnxse
-zmnirrxetiwyese[cedxmaoadgjjvsesk]nuisspyclmncqlasmuy[zxwlwmbzbjmvubgcf]hfqniztoirmsdwz[zlffqhttbpehxoabzhx]upmydjqzzwefvgdpqu
-lwvsssgvvylrvqh[duxjrrqkzchbpvnmm]pckmefvejytvzavgzgc[dcekfwnrzooigwio]pmutxfiwfowlfnnggl[lzytuzirtzgwhkz]yzgxtksuqrgvvgfefon
-tpmyecqhqjjpertn[qomuwmxstmgzexds]ftvqqwsvsrnmvpg[vtpebuufpyieqbhuu]dorortnekxkwnploro[pzajzflqvbkhautupl]eowpcyzmyvnntvzmvx
-foguzgeasrkncbny[tlyweucylxkswwxb]jtzjubgewwhlddar[dkddqrpwaqvlhdp]skkegnatbjubqglwu[pkwscrmgvjzarzb]ibaagrqwnxblvtkg
-ejgpdxesfyoyaggmymi[axfkdoyoqkpkhusfwe]pnczsmszqevkqiwlfc[dqhzcqjzpgnoknmv]ldrjdhopfyctlqtn
-gqhyasteoryuofc[bhblyxlbiqtzzyzvzqg]dtvxrlkyuwxttyw[qvvzvuzhkemwglh]bopvfttkwtaeckq[vvhkkgrddaoxnzctwar]gsscsjuictekguq
-sviwnvbtrgyydtadhz[ipjrrywkoxwuzmlrzd]kcxruwyisqvokporkub[tvarlltnhjmcuvvcck]raafszljrhconjqsqi[snbxmvzrkojpjybkgpi]ekoeuottccqbxrvpkb
-vtouviqjarqwnoexuy[lzxhegzxptktueqo]azfsikzbwiajcrhnas[hvqxgtffjyyfgsjowxy]ddbmpksrtghvvypev[eoepwehfavxzwgt]igsulpdhrevkghzh
-fucimprxzsubuuzmk[umzezmmnkfzvjlela]qxzdlcryifsinmkgeha
-kauzjbailyzpvtji[hgeslalzqgpdkpuvomw]utsywinellykvmuawwr
-oacbdgfaszolybf[hsytrkjoylrkkduzfz]bmoelqhppaxshmfjl[cusgbbuydfqtbbmsju]mcftwalxlvfvvpeu
-ybylybngqxxrmplf[mybpfztzwnisfpfgqmb]fsllclehoezgthek[ldxhvhwniqfpqbl]ebybalwrmrqldukb[okenxoqxjgrenrcjd]kluumgtqybryflqi
-mufsafgfxiegfgf[ydibrbrmiaulexjek]ouwchrlvilmygbuppjl[imyaxsiodgjteppdyy]ugondbuqnhjrzzzn
-idihouejjocbahe[mclnirhxghanatge]ubwhxskdzgkmyrp[vksyktucsyumvxoc]bregaefrdlrgmtwt
-qnsqwkqttdevlnzg[noyxiueharjajsalnhu]heaxmujxhpgjddqur[xnqwujjeasceovnroiv]hnrnwuogebatnfsa
-evruuxfhpivnmknolsj[itpsnnhbtrrbllsbo]gefodpceljlvwuahz
-ebddlswrvbjohtnkyip[qkssdudizhcoaazvyow]xvnqicorrkjrnxixp
-bbmmzbebuexzmtbr[tpzfxmwgamhaikfpaeu]kraaocehdtalyjrf[zzqqtjplepyidohpvx]kzehgejueimxlqglfj[zgysopfdgxtokkdxwk]gwcfaflybmhdgoxjq
-xztpwfipuczrtoyt[uwnlokmtopkhdtemm]sdfmvgvctgwbdjpmvhh[ozjpkdigpjqzqgy]yrkwokmkrevauzroaqm[vctyupmildfnnjomue]cvagxsievhrukgyqzg
-jpmvqhuabqsvroxgmyk[toieqxrazxhhsbrm]wdwhoqdddwdacuo
-mlaqnefjmwbxeetyxz[sziklwesunikpiqjark]iltkcgfzmhvusdnlr[bmfprkswemctykvio]hhsmvppnztgipxij[kvlbovfklljaumwmy]mdpaiazrlputabj
-czdgmoqwzhvfnulxo[mlbkytxjhscsxrgchri]veugcvavrzihzencp
-rbjtyudgcswzezr[inlznakcutfnnequc]uhisbxotgqqtzionoq[hzlgqtkpeubvudi]qqsryagiowmcijbejhr
-wkvwdohwocizssun[kimsjrwwfpilzpkf]ruqhrplgugwhmnn[iouhwbjnqzlqyewxof]exjuguxwmphfypvsivl
-bcnuloxdfhnyesgtdky[hvmgfzcjhhiiqino]sfipughwbebgstwrua[behnamammdxrnnok]ttpbmbflilacfvwiwd[sosjbmmjygpbfetziv]qcosdgrbfdsgqqrlhym
-fbmthzppxydfxiipo[zsyfzbueqoaoxeueado]santekllapuywlmwjkl[yfsonktbvuyilcxf]xjerezinsamruvn[cceqpogyrsztadfap]fiivtuyynltqoypypou
-lfjigofbbnyrdlhxv[gfblbnmkfnpxbio]zeqevpmpjowrxtw[mofuoyllwekzcjtxjhp]lnzewigzwruzlbjh
-xjgdfbtgqmgazgvtif[farekeencwufapef]dxjltmtfxuiydactuko
-njaolcljynwvrwy[qplxbpadtyndosjcch]fscxierutuanappsqiy[jftravlojauqkmgludp]pkfwxpdfcrjrmbucf
-iyotvokljqynxnpjsfs[lfwwocnwcwstidfpb]mutsdjbqfruxxprzrnk
-kpvxcagazjsxgagg[sabugyxucglnvcjb]uvrdglycowrjddy
-zclgitkurpfdspcbk[yedvkzgbawpthoyn]dhvnmtxbrpttrdrio[drdahsrphffqsigrlmk]ykghbvcdosmtcgxdeb
-rkmajkdvlbqwtnuanue[brdlutivdnfekggixum]pbsgstnxgghrygqwpf[rlqzaflmkbvvefdoc]jhbtzkodsfglsaow[onlllmfziapizsd]usvejrxmziulunvjux
-jqlketojwcgvuce[ftcxdqqebijrnfzjriq]ucwgiavuxrxokmvxgad[zmyusreluasvwgzngmx]semjnvafnqvwtvkimy[owvczdccmvfohtbijfu]dmhbiikbzcualbbs
-roewzhbnwyvondnn[ejikyjgtzpmepihnnl]yurjuztavzqkxqlrle[mbjcyqrzfuhhsnipzx]fcrtuzhrqorxrdmrcn
-ycznijylnnqwmqzdd[ycnztjgxgyapvafhwaa]pzdtesugxpchhdb[sdruhgxaqpitoxlncc]exnhjwmnvqmquvclhu
-iufdjzqflteyvhrem[eqiluhtbfuegasby]ikqccaxrpnjjrevdsev[wfluwngzffaxhaflbf]wnlyrgvaxzsmqvc[smkdicgtwwwxmdizdi]joaqneodtgvioxzg
-pddsupswtnzture[pehcqhpltqocptr]ymzrvibfbeasccxh[jwwhastouxzmyhh]xsllfxcuzbtciegzcd
-rnnvfdyavlqnvwze[aistrderxrrojbsspnu]hfkzgodowrlajmmeq
-qnebfycqdylighjpgo[ablnwbutiwhdcrmwbg]hnqeseogqdsdhith[nmrgaeenxhizhoqper]tjxbhutvqtjzpyzh
-batsftctktgebkvzv[rovosiyqqpafttgdmoc]ynnztvhekfnexdcuq[lnevylboilqebnkf]udftgymwddomqmy
-ybrcyivzafzoubcj[crhigqvjszwqflocc]aesdfdfgzcnyxsmzg
-oskvnzcbuyaytyixp[ypctohskpfoxhpydwpf]kgkbxhyfncznsar[vulxrgolpxlqzkknzva]ightbuekpmjodxzfky[nyjpxhpycxjrqdno]jhvrgxgfjwarwzkmfj
-relqdjmixussrbijgqj[mfsyrfbtjbojcesuyw]wsckbuhopguszeh[unyhvpqjxxgfbgyf]dddjalolfjwliasyezn
-xahbldxnvsviywko[ucmjsyoejvcggbtx]prfpnzzlexpolsgsmsf[bgocwabottcqekxs]ijvpreqlfejnqhfbi
-qtcopopjmmcjlyfrtot[dmnfjowrhqtqhevs]pfczfmefcnnfbxiovzj[exoentzecnbfjsy]comgdcvnlyaemmya
-plhhfkjlotvzupi[ilbcfjbrxuildya]uuvdzteoijumhavq[tcuesohvzusidbgpw]hdsgdngmjtlybnas
-yoifccopobbguvkytps[xhkzrdcfsyhpmuujbt]ocidhllwycinggwu[kouoyzxtwiwknduclv]wkokzcbbqvjxtubqg[plgujclgyfmafflyurt]rpjrpxriaxyinneajvy
-jbmiqrqkpbjasqhvwcv[zlyzpnhzdtqiorod]dkigqgjtzmpleja[ijenfaygzeceopbmxks]iwzcpoekmitcckbxbzr
-zixveaipmutzulr[awdlukrjbyxtssfksb]hreqwpgrawaqwtqpt[bykxrwwuypetebhs]xhtujigporvkxqot
-cldscqwnyjkrzvyegsf[zwsvoudppoalxeja]dbqrfscekpmhmpoellj[xxxpuyedbyuihdzdf]bmtfdebklpxvuacq
-ohdqlkppqasvyrkkjm[hevshusrmyhuyyo]qbmrotalialbvje
-nvwdnytzqwrugam[pflhibktydncffbnlva]lguqdlkusqqwovr[bgufsrqjnngbwxnhuco]uanvcpxragayfoj
-zkvrrzmgitfjnit[gezdzgcdvxdkxytcq]avznjhxyjldbqpfoua
-mmyxbuoieontkaxvnk[lijzkcghkhiryhceqc]zuouxoicowwkhklyp[baqxxkavhepnpepnj]jcdekzxrpfucavdq[nxrhabcrumlshoitzba]httcbsbgoyhjpkv
-hpzoxihsevceefdjv[nxgkyykcfpjwtlz]lkszzbxqdrwyktr
-djqunzvzcyxmjqhy[qapfiyujulhgqipfm]htqbtlhlsqxnjyply
-lilhndsdretyqjojrn[oxrhvlpgqiotmvruvh]hgdlazecfzdrmegmnw[alxxixmnnjkyhrqjgh]mpbjuwwcyhdfxynyk
-fcrwgutcgcqizev[nwszwhfvqtdhrymgqf]iiahiososrpdafnt[gbkrardsossgcvu]fmudukrxbiqyrpi
-xpcgsvaeydonptb[ewpsimxlttaeoth]gersjqmmdamhikqtv[sxyvukeegkkbbarjknr]sohijvshdnoawujw
-vnjkhbmpsmvxkdt[yrpltayaihgspvnjxb]ivhwkahhjjlwzxfpz
-ofoancxlupttxku[hkedaqsibrvtvqu]zkssllvuecmgtqvs[eklsqwgwuhucbxykl]ioompempaewmnco
-nwviejwlkyokiqhuvo[csddbtlbfdwtakxlmss]fxdoqlbdjhoslraj[shasfhtvpcsajdsmxfp]errsdzqcqzbrfnkeux
-gvmytvlyluvnmemhgjr[bvqbhytqwpyemefwo]sygljhpvyjnuxzjqy
-zootaoveazcrmtbda[qlxlwntntbkjtkqve]vffdsbekufzemgwomh[vzllvqlmloffyyldfh]alltnttrzqrchacoiqm
-ksbuxsjkmtzsfsy[shracmzkycsuqrei]qrmgsndwzkqhtojsn[innhjjhyfsffgsboglx]zhwuwgyrwmucjfii
-dagldnrnugbavjwiiq[vrsiyprmsvuapxvn]piirprosbofdwzuuhn[epdsrdcpgzkkzdjle]jylrtjltlmvazfpmh[rqqteknolbyzykdysvr]ieejzvgtumekqapi
-mtamroysxwglblwmjn[gmebbprtzaogucvyzv]tjzuzqyyfuihjubuzu
-pcfbudkakpzlyou[zznswrvmytntytfkt]kvudoarqnyybzeddvn
-moelqaykzlstyntby[qmpxihbeysykajdo]omqcjgdbuqvvydd
-ddyczdjdwnoacci[wpgjlohduqnlrifih]dfwcghvsdezgdixnpxe[ohhccenoirazgekq]lqtssqpzgusrlvyrd
-ewirhlfcfhkqbvmvi[ixrorekrimzzkckpel]ihyukzubvqdpnmqpgu[mbtybrusfomfdhlg]ucrcmbvpnjbghnxdo[lyajfieycgiubui]llelwgnuopqhjax
-jpltuunwbrijwnudg[ejxyrxniclwnqxxnh]krckhlysnmqahsz
-hkdpdpshmftvxob[fsdhonsqalgpydpub]dirxpfxsxhpxliqg[tvbhlcqkymtbnytjp]xuvawokttfililgwgue
-mdnmunbnueofzddapl[wxfahokzfixiapig]wekvqzgvufgztlgldh[zwglgerouhvhtbrdib]xeogmvaqszvkdvxv
-mbqnuqonmkxmczjo[ueqnkvfdskaqwesufs]zmoqtlzfcwqaxdnddkk
-qoaqjkdsftjstyjyqd[fyvizziweplccjt]ryvpqznfcdvjxuu[syspurpgsonxbbdrcc]vvedpafqmoeugwuize
-ctdgzypcrjqxirm[ouyjhaohcueqwdez]kroowbthpspnnzgzuau[pqijczlztofszvdzhx]iccbpchemtflqnhdrnw[esvbnyvlckqirev]psrquqfxaotuzsojbt
-rgukaurlmsyzovie[noclopxqrusykxpix]zbbopbxzogbeppp[anouobvemneuuztti]rpnbuugshsxxbbkhauq[zpqywyyxjfabzyppw]ecdrhvipvzregbgl
-vmbtrbtoajfkswgy[kailajjwltvmwasynoq]goxmpryedtsrgkx[hljqifnoadoljqtub]xucplzmspnbxvliaap[tfqpmrhbakiidoxwa]iceqprkydjgouemqsmf
-cvpnedbnibipftign[cigxthfejgyjzvspaam]esifvgljjjbexwm[uspsplcqhomoszleq]qnogejwqjdiznyfellc[sszzsifsfavntyghfs]btswodsrhcrrbodmtz
-lvxwpuujqxypkhqfymh[wtizujakvxzrqwpols]jffeswrfpnhhakyhwlz[lzyloeveicgwixnvdx]uvwhpnjlszclssbf
-noblqdnmgtyjbxjq[chxjibegmcbmljibes]edtgpajthcmqgpz[qafbzkjfqbjzilzh]aorhwssnugyflolh
-hunicsoijinxshpfskq[lniiseazhvpjiyg]wirqusdwvaiyatimhx[jntjijtppuekuvvzz]mxebkmgiqyfaglow
-wvzgoeqwcuudhjlc[nsjqegpxfiwvbtyuo]hehqjsarzkbbidy
-ncjcjhyagdubxcibe[qpddbjyualjarnnpkf]cizleaqaaewqysxwys
-jqslpqaqntewoglud[xtzdawarqxbigpuf]qnxdyobxvfsrwoaz[snegbwbzchqcbavh]kipasixtzznhgkjskv
-hptaschabsnqdgmuzoj[satvzxkqetnonungbjb]gqhigqimupvihhwy[nejqgulbxtzfjbjlya]jywahuqdzrufxenshjj
-sjgpoxxqtfsltzk[jqwzhblplilweukbso]tgorxisfymrcgyr[tfbebfnnljlpcfeps]ahpjfbonoajtohthzri[tdgaokthtdhxpsg]ajcykosmkhftnrjqphg
-tnwtnvvrpilvadiy[taucexvsohfmaxd]cfhrctuhgqwjgtll
-xzzmvrhyhwvprzczwz[lnshilvbyfjqgff]qfkoodzijhqkpuob[iyyvvfibosnuwlov]fhbcvpuqvpxmlolhry[osdmjplktygtobvt]msazwlubhinqvyfh
-wanhwievduqinfwlcou[uyalesnoaqmajcc]zbdddgzmqprwiia
-dfovljmseevxcfarf[enpclythxgepfzqcw]wechankwzxxkkutq[mvzawbhttzrauulkxvd]emcdawwiunjraebra
-sylgfxqcfrqgeeuh[dljwdydnbuddmtdgp]fhenkxvmwvdyaukaxa[xcdbxlqqfgqtjyhoi]tbnpjbnpoxxaxef[rlnmcnmntjlitsmn]vkculrpgrmqsrayre
-xexefhsfpwtpxuygp[omxfywhnlcapmpalz]foblbhtxieggkgpcru[lscwcbkqvexwzzbri]ipjoiumgoyugfzq
-hbeghglpgqnwpxqio[pcujpvhzhghnyjkmppe]jwcnwmqwctqgoxpj
-apqmhkpxrtrfwulqbq[trthojavkcrlcgc]oikizlfqpukeudv[afgmhbusoqjubra]ajbuhxzuhecopcxm[lowqlmwiyvmdojjla]jrrhjmopywkqrhlgicl
-dxrqnbrkijtvmkwq[dvtqzljjbreayipqgp]erhjjvypeyramuaab[cjedbzbceteuydrps]kolgelhdemrbeviu
-gwjakwyuaxixflozol[omjuyjzbtditgoznip]nqybdawthoydext
-lcdwaahhbhajoai[cszvgduipwduhgmo]vpsgnhmtypusbgmhwnb[qitqpalswmqvjiu]iyjenmmobfasnzqefci
-tkxizzrgmsxvmrdawsx[edbhkciwrqmoflyang]nbuwbbspldrfhic[guhvpvocfyjpwwclv]olxhqqgrylvzzqxxd[cnhwdegsxurungopo]rdenofdlpgilpiuvmr
-wkadrydzokfmuiah[mihkmnzzjladulkvb]weqzktdsbwalcdijda[rejzrqqdtbvrwgbgojt]ggruyvfdesfdwenyx[jjyyleykqeskpfmzl]ssqauxmvzygppvncz
-djzzsqykcfbhgfoq[frykddayaohlxmkem]kawloxhrgcpronph[xxkgjvdfespwmnja]jddmrdznkctmsmaxih[uxotxlcobxfemckshh]irmewesnknuknipl
-hzojrovrbmfobhsau[itboujfkrmpgjpsvsr]qgczawmbunmisxs[dtrvnzrayqlvdpyzbuy]wrcsquxgcxpvbwwzlqo[kqbfajfleopglhfui]bsoomwrdifoekal
-cntxerwyrvbludhaa[fclfiyjfekdtavmgy]lnvvlflygrewrgswx[juijxzrpwfrmshbttg]yjeuhzyjbmbdslbdhf
-gclzrtvgfbqqqcl[fdkwmnpoansxtklyusn]ywwzqahbabjbcbzd[kuiejkftwfuzmjbiify]tabpjhaiwzcdnzvof
-hmshguykeqstxgzs[fsnsxtrvkdyrlek]rkzkooteryozbwmda[jyjzddadewtuaqulp]gtprcoocgdsfbtduekc[llfoixzevsmexhuitz]ppiutxxuvaxhzgiib
-ouvpvcchazfdcljaux[kxqnkynylosbuekz]arsuffkkpzlwuibqd[lmmxhndkoldfbtyfpw]nvcrjoborzogjhgwn
-ojesaevpprrzqaksixa[ykxbgapdjiulhmxgihm]nrxxnhdwodfgqoeproy
-vzbltcugyxvtlxqnkxu[fcflcasuyaljgewcynf]azqaltkfsglwgkeh
-urcslegrolaaalf[grobiijzrtgpntne]uhpzjqkslgahpkehix[prmevyrajmgfhsjpag]kwfhbrhzkojqazxjocg
-zwfeopovkggasxxb[fadbebqmbxwktwfdeui]ftomtaogfvgkkdrkc[rdkdznntsigigjiv]warlzbzbnfbjjsh[etjzyzfdjztsfsyi]dulnqfxjoewssxgkfb
-nvrsqzcyguparczn[ewfmgkjaibzjoiex]kpooaykofbtkpawayfh[ssuzuankcdhqvold]qaeuwxgakqvcugn
-rnlhwrnjgxwleghohuz[nktpaaaciwyfagkpqw]yeyzojziajnryse[bmpxxtaljjigfiv]ojzukghfhfhykqrcdyy
-doqbqcwjoldvwtws[qaxghysnphejfacrnkn]iqyhfkjogmrkjpk[hfjqxqeuzwywwmnzj]uzhpypjadzqcpeibcgc
-kmcmhdptzlhgqui[cpluzrcwihnwxrsdoj]czbxutspkzdwesrc[fccnqmeaqfmxtqqng]fitsnmdmyzwsifevbat[fxhgcmqhxrudtnleoww]yhxgwphkxlzhxzjnvcp
-tmjpplcwhmsaxav[epfnxqdzfpxmaztdqn]vwdoatnafiotogpsxk[lydghxujguhqcjqtbbk]mtvqsesoxvybfrxyoi
-fslvgbiibdkhchajyb[zpbhqrokrbfuqrowop]gqqzoqvfsdfcjcdurrs[xhqfcfytbbekivnvod]jxjwuxivnyhppvfhaol[evfnrmrjnnhychtpv]emiyjcjsnojxexs
-gqaygymjihevbsps[iepworrljuepufyvne]fzfjulzebpsphczby[kxaohggiqnjpdbf]bsjfluhncewudkumaxj
-mvjlhovwivdanexv[iaphahshtwtnhoeoqsk]syolycabjeiwtwtec
-ikhcujftlekmcnmcy[ubsoslmlaitakaqb]ruyiqnoobymxiim[ppxtpuphuisxnqumd]qxjhzfwvixjjmfgaqej[bdjpilcwzhqphfumpny]itvjttbjsbfmxppif
-xhemwtnqvfankrccdtk[bbjzsytqxhxcgtedp]ksfozdggjvyvpoyw[tberajbwhcirnenwv]juojuogrifenjsbldn
-bczvqdwkurvezjxgrg[yjvuwvfypobetomm]vtfujjaergrizoots[snwcbtqylvuhnxyvb]turadiqlfjvclpvbweg[mekdlejerxpllbf]bgkveafnrceyxufsqj
-duqeascyrgxyhlspebo[kzimyrleaopbbwmbi]xsxqyleqvoscazopte[debdbibiuaosfdyioum]vjaptdzpitqctukwhf[jffyamdmvkrggbe]qrnqpwcdoditjixsc
-cuxdugzthpcubgw[qjvtzbgagyebkobkhf]tsbcghahxswropcgj[yenmfdvoxlqekjsk]kjdmhdgepvdoovzvg[mafjriyxqtotmhxgvty]mdyayljihzqxhiga
-ehkhfoqcdkpyxeum[xvjaglxwocodctbzj]osufidsaijsczhtfg[rvmapxxierwnjkc]pgshnzbphxdoaitou
-wagqtjalswmbehwmuwm[oarjxyzwyhxzhpgilh]qapupwvuflcoryf[hmqhnrjiahzdfbaz]kuprvbaykjhqagnl[wfxatijeapdinkt]hadtvdjbkdduycdut
-emfkovpbnkaxykrmwjg[otoxyqlkgczzivgdt]nsvpzdvcbsvrbpo[vdfxwihznfpxlbsju]xbcniikjhgzelav[opidnljejcjawbikt]gedgtkiksnpijteviu
-fxbpujpvuboflfip[dogcwovzlakonhdyww]tkzftiqvyzumadasjtu
-rqtkvmbmqtdrqsahsdy[dhaassflbjfdslopp]zetcyybbahysvheand[uncbkqyoidhvxjf]mxqjozeotsollwolhs
-pxfqsysywqfsmername[yfcktnozutkhniqyp]tjzzakrnlxrtscena[bitenzjdqfopqevroqo]zujogbgemdxiaven[dtxlpfkysfcivyrxqt]fsgjjgzltbnlvdojqvk
-guclyozvgpvbuhktwbh[qmueutcpmdebodbilp]vglsdvkxogzhzewjpl[guoovyobczavohc]jdguogegerfiwrxthui[hdcvpajqgpsoxuoawmz]ztwnqkdjnnwazrdzpc
-llcocydhktglycn[aqvpbqqcyyjlfspio]bfwtqbvqbywnhvn[bdkrsfpiokzttiazuaw]kchhszhegdhxega[mgfuozyxaqcxmillwlx]mzcerkylhvawvyujx
-jceiyppxbreywlqlc[fizmzubzyefdntbmd]bmholmqrninpjuux[wkbshvxwlfhlrpkbk]bnqhoqtiqqpsibgykwd[ajvhuevpxmsrjrdwt]ejcwhcsechltmxlycwv
-lhzgbwzjykgdqwj[ksxhpuzyromwycwqtmi]fqkgkgvjfshsltg[ypmdudbfamagwadtia]nxqvzfdgxlwbbkrssc[zqmfrjzhsztnqbdgo]dvzoywqsqizywigsqsm
-vvnbnhvgcpquhzbarub[ufazesxvliazvkcanib]agtuglmgoxupumcispr
-mtpdvvydctgradgywc[mtpimzrgtmnlcge]vxbxcxjkpticzboc[ffiyihkovkviqjifrnt]yhxctiahahicybqti[latcrvinlucwkxhmc]ajivvpmxwiypcjtevwh
-dpnjvkzcoyyzmgvvs[gtjdsruwdhyukkx]qndpbpmhkdngjmab
-raugsxxkqxpsglitbj[ncskiewbnqnhxvojfx]qnqtemgvotsgnlgxyb[exshfmlaagkpxueykd]vgcwastyxsoddgu
-vtmkqugezjlfpad[ljdytmxdmcfjvqus]zwkxtirtowwwoqybn[wwbggxlelxpmctsyio]ojizduyxsklhvogj[wkjkwbzdmusrmnwuq]dnvercuduocxwzzqvc
-kcuaibmbtowdpkk[behnytmljmvkfzjzx]vwmeazoaavjnyopedp
-jzmgdckgiwbhbits[qapkyzlxkcinhakr]zymyymfbxgiypcn
-kbcfgsoqgqvurokxs[ygvbgzijbgfeylxvl]xsjucuevvfddgod
-unfolwpdrbsrzgoo[xcskhiayzcpeegqfoe]sqhinsvvbcdboctc
-yclpzeggejjnvkssg[jaxstjrzmutqmaqq]buvqcwkayhypitxnmp[hpxwubjyepaqhyhud]qhqlpdiqdhhgffsgtqw[ijhwhbvlbixaeywd]fwpyiwyrgoquoeuicxp
-jwgenomewntwyxiawpa[eqcukoqwwwaruuaeoaz]przxcbqvsrozygtcyl[krwnmcxmgcgfbvkj]pcifuzymidokmsecl[wetuprgdinttljgam]wiiixvydbevhtscp
-vzuukbqyqsivwpeeygi[bsfyvyrjgidexcfzq]wyfowikcidviqqnzcw
-nsvfdglsbfbwlxfpfs[hdfyjgnwdgeropdfian]gznlvhnfjawhokhugz[klxeguqtsnydunmtj]gaauhesdugovoftjb[agqwktizuxyqgbvt]zhbzbgfwnkahvueja
-xcnkdghtgpxbfefay[iekwzcvfquaynjpflf]rfmwtjyxputzpsgr[rxbiyhzboydmvufaz]vbibxkxeazvkbzpnrqv
-efxnnxokdpeqbimle[sygsnwvurqpxovmfv]bfkvfubmjyasmvc
-pvyunauqgvtigep[ypayrmkixxbagcbawlh]gsvqfsxbquttcaayobo[cwanbliqbdzlcur]ckdwzoeeeldqnmpnzta
-uaxiegivsmmvixygiih[bwxhotmjiqmiffwt]ifggldhrjitovzh[wtrrvwjwudasapqdal]zegculmtzsyaxytuhih
-hvikzocatynjoxxzjrr[yowwrajfokqlojraj]gvquwhdppqvtcvd[sqcangyggkdiljktl]fpjugbjlanzohbvfylb[fxdhqobssfucfmeaz]mzrtcejhidkqkpqc
-lcgelocktqpqhjgon[vmfhipgnrbypfellki]bqgdqxjnlynzdjogpbk[ppgoudyairolaaomp]utxjqpmjzchqdhz
-mtfryyrtmzzlooy[qltyhniowpskiqmolx]nuxblfnfrcqtjqfbzi[bdslgcpqyowecpp]vlxwrojvicfzzzfb
-widpcxggzgbkofmmtkl[bhvmncpisdisugtk]azxcnslcqsbtyufnt[lqwxnibqiwuwzwkf]iqnupikuhmhvvhf
-amceoqorrqtczywlb[znieihkpkxkvvqxk]rmoexicvufbvzrcxisb[nrrbalocuvporahypgm]sapytlndnufcmsmnl
-ldbwysbqqkcizwlkqk[kxbcvzlolkrtyzou]zsqlgwgtcvtkmrc
-bejhbhwlnmysyqgzk[gombhcspwwomoqoprog]zgwpzkhgbgaveqpe[kldisefosjggfqzo]eiyzwmdoqqsrpekrs[yoblfghskpxbimnq]ewghiykdpitzdsydl
-uxdgjfelalnofqouoee[obhlfmbrcdwvtgs]hgtqhblpsfyxxdmruq[amhlljtgsqandpxg]uftttypexliymsri
-xwcoczwpeprblqvdsze[fcqzupldpqdpibi]peaetflnafpkrqz[aibobqkhvfzpwaajxj]mzlrkrfslubibbu
-fpofuivhqvybvczq[zbhaursvrqknspvj]zlovzphchihqwko[bxcpnqiijtjpypqk]hmdzgwlnervibxuz[hxskzadaiwuhkjrvia]fqtcewytffzarnbdid
-kqzfapnhrgdwnrxtwcw[keiqggcxbtzwrcvrvl]itnkudvtbvfwlcvguev
-folpqmauykgkbtb[sajzutpltmpwuvzu]qgkgeonxzucthfluwfz
-qiniyhvlxrpcbscgf[mmjtkliysclrogfxsx]snxccrqkeuqchwfi[wbbptxydvrbgemquc]uyqttlcltqvqmhu[sawrjbeubszmuwsjuj]rowkyiykcizmcgha
-xafcvdeuuhyxixxn[abpngbyvpnkmojksc]anahdcroysddmoxf[tasztimgjqwkkic]fiycikeddfoyafacbfl
-fzmscbkkolwovgnjeb[qzholetigkxxmnmkoc]ffztdtemtdnustwuu[zjrqslegqkywtcaqod]qdtqbyfhwehdezedf[qqvslpytqtjuzrkc]knqvowafliildhqxgex
-hicsgtpdpugetplbufu[lzlwcptzokxrsxtrl]smxnwfvtzttcsesdu[wmucgluptdavbca]xggqqcfaxxcagagkx
-hwnfzlhdbchsmjwaytr[xfggqnxtnpdjzuyqm]efiweqzxmsxetmyjnhc[mgjnkbfmmvyrwyocr]jhviqqnrgzjsdmidsjs
-nvouetegmutetgw[keqvyocxdetebkcgl]qfhnyfdnjqnklpad[swuvsfhrnzsnatb]zjwqmrmphlgwdnms[hdlfprihcbcemfn]lrraefojxvtpxljil
-fowkqklueytawgdxklx[pmrpenfrmskqjttdqiw]ttqjijvoxxfxrrdve
-nsyzzlnqjssmirvejh[gpqbubkrsqphkdjwg]gvzcxqgbvhopkgy[nzlfaemkjnuwvhul]vxdiuaimpogvtkx
-pofmqefryoxboubl[neoxktodwrswfsxwruj]frlrumshrtcllqqf[erlodpkifgfpjlbl]bbfocfbyqjagesavoc[ajasttvajmlfwec]enqqcyveejcayzw
-rqtdsfpdgwrlmfj[nmeovqshevzueyvd]ibiplfpvkyxvacl
-wtvwzmpwviqbzol[oqlqunyszsyebxbm]ywqypuyvaiegekaok
-ijcorxkdzocwisjb[qvcjrwytrzftjicua]buuniicmziszwzikph
-pplaiaulcciebujjsx[hlyeskfzscwmeqss]tuuolvvbnyymfmo[trsqblvfyagxmgtwfk]kcigogbmkzsjlsrj
-dbsqyxlovoghbra[lwqmeeclsvfsrezsed]odqamvyyhsmctpqegav[xxoamahurojgqse]tngvfzhoprhrxsccgnu[zwwglwyqrieusmlfmrv]tzfresqfmfspigfeo
-tmnutczqpsydibk[skiokxeqdgilzjq]rfkxwumjpjulbkiz[folgircuujlcjhjqxa]snhsgynrkjecrsu[vukuvrankaiilqegzup]clzyhjlcbrfdbjrzlu
-opgifufncugjrflllk[epkqgmpkzdijtdedk]xmvotyghoniyalmmg
-ovtwjnqubjphsgapb[cnrcpnxrfclncasoeka]duqduyvmbzwdopyxp
-imtmstorxxvbvmz[muklxeyazsgitgb]sjuudyrlbxgtlph
-zbnvlmvzeitlrvclu[rwlyxjkxlvgeyfzdl]uzlfzyvmybjonpqay
-cdxryezdoiyoopuzgl[rnmncixgvbxromitr]jgqlptcrlpzdrqh[sstvgpzcldcmoslnycc]cyrecvckpuyjqifsuil
-acjvnpfqosyvnvzbjyv[tmnczokfkjaxcvwjo]cszegpeuzanwadl
-knqqmdktrcvcikcfvcg[lnsoisfwtfpizbpo]xfxuxthdxsekjpi[qsroiaojvihodgq]jaamntgiaqvdasnz
-mqefdyhtbqynychpbh[rrjozrtcexpbrpvfs]dotleanpfblcxfltod
-coayqpuuvtnwmxzhgnu[fyjdjtselprfevq]elfqjzpryzqsyqykkb[utrizxtivhakgjoeryu]ozeuxjmcorkcejprcr
-ybbgylmtmhxlhqizp[uvknavcimbacgtcaq]bcmdwwkdvfnmnunyp
-xfdywwnnhzqqvuywq[drtdcfuoxvlflptlca]oimttatgiboynmu[sdgkeffjrteokyiby]tdiaadhkqdginrtqpq
-fbpfhfecwfprygkwu[hvqikgwyrdwtieahmt]dvtcvnchfsienpasxw[ybkvqrxztwzpsnz]aecndxpzpamjkanchaa[gbjwjnipsmepfxpee]wqjnfjiezpzacmgf
-adwjbyiantljqwsixso[wpjjoobofoumdxgrxv]rkvrcmmrlditmjtsh[vthldqtnlpjrqbobzs]efwiuqkqzfdxyhvgim
-hbbvxnhhxsvghuh[fcrgvyndxojknfr]twczivatsbiynqjxeby[ckqrjoolqrxxjgejzua]omspfwphybvgiqpsc[hmnpdaumzrmqrti]sdysxoudxhpllkknvq
-gfussckpoykcibjnoi[fqnfbkgojenspavpz]xqwvoktikoqyzpofg[xhdumbvmqllllthhsrv]vattqhipurbfvlk[hbebbjewrlmxdblgq]dmdhdbknmkouvie
-tupwpbmrvffvqbfiw[rqpefvswlzjnphduk]mvafdoftaeiojrirv
-bawbqabxqwpswzezv[cjmoppcjgifyfignuf]uawfxptpbgjnqbv
-sekswalpvwmmczwdxbf[wmcngumevhrbffuzwp]tqwvmkfngyrhgknowv
-dovrepylcvtomveqe[vzzskfllpjbvrvrkryl]byjsouhntlopqffti[lqxrgcqywryeexyao]qsukbxhzoifswmycw[rktzizqtdvetwyrchc]vtsdazzrpipfcrnxbk
-ydnkchnxezkalny[wlfhmxcboamfrry]rmzprrgselhmfbeamf[dssnudvuvyhvzyacu]jyzdefurrnaqrfzq[rnndewpbutqgejcy]qxuganmeckxcpdtd
-xhwdvxmfxmktgaz[qfzqjtuqokjeznwalq]ddgmotioparmkkudqef[pkgzogoaxvcwsao]cyebyhigpzgyclscf[qehxqzuztsluyweopsq]tikkkgtpkewkzzkdu
-cygqebguktathghp[qlkscioiowgqftpd]ytftmijxsnhgacfmmf
-ccuocdvpjktkdceebi[pshiishnrprqohwpt]bubrhtrzuabpzzvbwrv[msdeugbygsvewfxco]nzavazcgkniyxva
-coscymyrfqgisrge[oggmfoqevlabvhm]xfyhzwpfzhhyhimqkhz[cybjjylavqoqjyyoy]igzwdivoxazgajmiy[kkxkhfunkpsgyvwp]isgotyzlmyzfqrij
-vaezncmuzyyjpeomif[lyvwvohtlkcdyuxze]wzdkddeqkxmqbqet
-yxcqysoxpbwjlqjdp[jinwxwcdeflygawd]hgdgruqilmuzuzhsg[ivpimcyrtifudwjgso]ostoopidgdzcrzzyzts[vvaiuzzuzywesuzk]ccmdnuyihasnldexf
-jhpygjolrfstkxwt[krdivayaqwfuktykopv]dmposdxasvjkzjesg
-lcprcppxkrnwuytdt[wysluivwtmytfgqpks]orlmxnkipofpsdteaa[vroskwwxeeylirbkna]zkeahngpukldeszwuk[harebfdcelqdbfemgo]usisvvczvasjomnjrip
-eybojdjnfockfbsdjd[xjxxevnxuwjdamien]frogttytivtegcy
-rezxczwcihbkywyq[sdzzflizzygfiovwyw]jhtiwvelkbaqhvnylca[xpnwnmqbaawlyqz]kftcwdejxaznztqsbhy
-zitlyztihmeogushh[wpsygveulmddxdzvwvt]auvwghiyvkvfxyzf[ccnkvkboczqbgcmekt]hkqnuaoeffocspxkck
-ucliphnwkaxtwgnma[wxkbcziemdvopzeq]nwxnkykbefamsdo[lveynsoldnjkcdn]kluaaaoiqsepyqfz[bgjuhrlfjgiyngwkwgj]ofjimzheftgbbyrugn
-hshzrytllakuifsbuap[znsqxjzxbeewshkb]tdiohjkqimfsaijvmvf[wxvmhzzkjopfxhshsol]qgjutmxlputvudf[thwwxcavnensivbscm]dounftyvyaoguqzy
-hktpfbzotlbrgddcff[adqmcoiraqbphjpag]fxxdcjqhwkftprk[lfeudfsbvnqjvywynfl]whirlnojvbkpyndhyv[xpypetlsykaucaibapl]gcpogvgqrgensxdeyh
-afbiuqpasfjkniuw[bqclbergutdzfdqhdpm]gcgpimwjmvopfjhk[geztaacbsloyevwikqp]jjmlssrsuxmhbtnq
-ojotaeydgumtjrfdtam[gpkjanckhqjvfjewt]zonzrwxnucpwtrmqyhv
-llkryzvclmpozerpao[gfrhlpemunmdackfmp]fbntrvdilgbposhu[koksbsqnmtfdsyifpp]eswrneaxvurkzfs[ixjekbpjqsrhnpgw]pppbdmxsdflptotr
-vbmibdiednxxbammtn[gqvlmbobpzpiuoda]agjiighkbopkxvwakva
-fnlgxejzkpocaonnloc[ojrecrvcmirtehjfcvi]mrafnbifqfcqxpmqdrb[obuqfqpyrkeinweynd]qceebfqvcmnowjanh[ejpkcpwkjfbvyjmyzoo]hhjyeulunsuagwq
-nubgjzyeuxvtwcc[vlpjhggsyeiulml]evysofvjmwxxazzr[tapuneqjkzgtblgy]gvbvijhcgtrdsybt[sdufwiyfojmptfruns]zqzvbotgmrcynfyq
-ibcblmwnlhhftwfd[ajuhvgkyaqeikjgju]rvuwgrbnjxvbcgdpy
-hizeoqbkkesksvtjotj[wkvmcgctdzwhzlubt]aegcgfmdneprdbw
-lqyvebgqsrsfbcdccps[hygatrvziszspyihy]ratonoqinqfwcmm[pfieelpgzrfzhdffhx]zwaytmidpntpolajcg
-admawesoilkvcfx[rqurmchqtkuifxm]tliyyitqauzegwst[zwpbngnlemkipcku]hpxfncvznjgfglvugk[ruinbrosnwmxdzav]adbvgjbxedbmxbkpxa
-gpqgezsbrdmqmeihdr[etboranxahpniwzr]woeyirnlebizohoa[rufjzeicrsxgitspt]gltoxcqgcsnvlys[dcvxqvoivyuxxayd]zkxlasittnitmoisr
-acoxthwyfwbhszfoz[wphyzlksmfenksfs]hpzmfaofkobjpcdxzs[sncrftlydahuqmuvoqq]ojvuhabayhrsynq
-nxtmkatkddomlbnxs[qdqxrwoaamrztvkzq]ycyqxxaijhrpzamcbh[japizeqvlqsmdqygr]xhxvgqmbzgomhsm[kizldaqvytagvviondv]tidqihojfrzvyxy
-lllcbzykxbdewnyff[iomemkjmyaqllvcx]vjvnigrbpnhdrbi[ukmffsdgnyqxafwstg]ralpevvmfxtqbzyii
-vphviazdmmvtcyc[dcomcirqycymvqkm]meeikjmqliqraeqd
-jcgueeliyoclqera[verzkovhghnquyndr]lptflbxptsugmbhvf
-rcdghcuautflhme[zngtjffrvagsmdrxurj]mwsuxjbytlzyhinxyr[cibaxfqjdkmdwxr]yikrelnmbneqrsg
-jyvaeqjealrbvbvekn[yharteswtwefyedz]wosalojtbxzaujpiba
-cdfzjfycznejinx[uhnuxxhxgipoujnarw]bkwbisknvmurfnhp[jwbnvuvlvegrddzf]bkeykrhmjuphuvoza
-aalmyxywwvbwwttad[daxeeneiiiupzvqz]cqcjxzindssjrqb[komptxyxwgtnuedefro]xfbjflfujclbqflke[fpatdmophhvpcmwfj]cqbuduaifbuhwiy
-kogkhuakigjclxbjoi[yuidmmdeopwzvatxc]qdsbzscrwpmnloga[xsnwctwrdpgqvggoian]yayspjjhhpdsyzkkzx[qbttlvpkbplhagtb]ndnljzkxhgdvclz
-rojijwgcylsaspmmrdy[jzptmasniljjjusl]fslcazgojebnrrrz[ybcsqnloovizrxiwal]ghjlkcnvkjjlqodusp
-egzqbmomtlqvjfo[cdarustihbcqwpfpcv]fzxqpzavyniyjbfvc[wkmiofpbdcsnbtj]kmtvlxnlvdjflivtuge[jvlzovzdpwxwbcak]hwbtpuolbupvwfcbh
-drzhzwluzurvcjogd[haakukjmwslumvgq]cmwkhsuahrqxfae[kugdxfrtkjmyyfheze]dyxxyffqsfctugyca
-mlalvviidgseekfkqtk[rmltlzesxldtmsnyn]xdqfkftanryqfqrqkhc
-vkajuyjjhekfhmwwek[uuanfibpmdbwxesfmsk]dxpsqnnmrnspifpcyts[ezmjkdjacskqhhbaupr]wkzxoqszqigbajudnq
-wmpzatzujoibyjdle[awbuzjartnsdxfqtlh]votzdrynubyfrdip
-tstuekiwimhtizzlky[trscvkeiiriseqj]glbwxwiwdqhndmnku
-kjgjcnoipwnlqnk[hpukxdqokakrgjgjpk]nvinvznddzuhupepemb
-vuawkeimjefqtywj[mgdvjppiouqnnyhzz]eeemepklcxhhfot[ktiuxquqhzrojqo]zcwlowvczfjucqeo
-zatolywcfoplujidaz[avcmpullpablbdhusiu]bkwehsbzcysrauzz[tbgkmrwkzqfysfdh]anakunhzskapvmq[cqzomvulpzbizfuqug]untygoozordiywrnkm
-ozynyagffvaeava[lvsgzdvrtdifdoxgvwy]pdkwomqrhfolkmj[fhemhaolmihgxlehn]huscypjzuujagfaqk[deqkgecbrdfhskujqg]grknbktwdyznqgrwm
-mywakayudrxzofpri[qlywfoydoqmsmaoygp]xpwmtcqqfqsmsys
-sdwltsgbumfnbqq[irstsqsogmppmlmkont]lrwnbdnpkxgfhjeo[eqstbbwumfepxoqaszs]fdrrfpfiotaugunbdrr
-bappxujhicaqxhwiaoo[bjvhcmhrnldlwyrf]jdxfokaxlkbifuwyv
-jlziyvwcuubpsziikv[mvkolefxtgoarsk]tpixifdoybzfwnwle[lpbkitwthyxdbvwflp]eyuzdxvhuukuiaqfp[xcwvlmoqpjnehwudh]sqxbifjmrgwknsno
-rblicwlpfezecfhati[aqqhagfhathupym]vspyjiyytesirim[rqjyqiviftryoyychs]voksponpgjfuwsp[tmsccufpnvjdtgs]llptwgpugyjizqfch
-admwljcwmrudrrph[rcxxxswmdlllfdwrk]etyjbtmryjxeajzccmq[nivhwmfzjwaspuon]tslmnzikhnbtqwkf[xnwykihihgkletgdy]mrtryzmlleorzwpi
-ibgqtdglmjgcdfsycxt[ruddaxuheyvamwyi]neoneshgxmsbpydg[ytpshrjgditzqmjdlz]nlvhgtzsbzoskiva[asuilfpsgtgyftgtsho]xgoevzdtjemapbnady
-appgubyezsrmwec[wbqyvobthbuperojt]gqxsjlchxpwvdfvdf[xlndklktmbpjkzuo]molwavhkvungdkvwywm
-jusgjqhnjemncvbvy[voitjezdotclvwaggg]ffunuypbjmopbbvoh[lhufstqbkhqxqiworpi]gnhhneydiasvmbvbga
-hvboappbxdqyjvxqyd[yukgymhpumetulsznf]hgiqjmlrezzsfndrx
-jkovbtabgnbztjmzsoa[flxcmdoflhlgvaio]qjxscacvdykhkxclej[taocvcbcyfrjgcxlkm]aovpiymrcdmebktxwfa[coviwkpdmukcsixdob]trjjdhlgwwkwtegkqmp
-ibnaxwwqjgtgxnlax[zozdkkwbccwdbvbpf]dwuzbcgeqfepczlvwo[pmlmuysuwyudzjam]pvhpqtcigtknoqxlib[kvwfykhxumzltcxidt]hybnroedkguawhgl
-xqwhbiiflggraco[uwhisdtpaprjfji]dexzbtghefojvtt[nlhtexyhufqeneytdtu]fpskbqhfhavnbkjxwn[gtxmsoydrotriljoov]labmxjlalzgybpdjm
-ibxakiwqconeyudxj[mwzjwhmnlaobsdy]gvxbmnzqbrzuorla[dvbreuhggwgdtbjet]hjrvpdrakncsfejis[tstdqmetsguihzdws]ukllrzriimevvsekrkv
-ztiyqybtvliidsq[mvhqxpqunpsqouvgrbx]qmhkzbqhemycwxeq[cdadaodqyhjhelanr]rtrnroumhiwdadrbe
-nswbgqjuxdygjrihvn[mkznbbryojdlhwee]kccwymwlzrsilyn
-sebujequsxstufe[romzdeirdhctzkmemwt]vqcobpsqzelktljh[twewiabushguyyp]mktiojirfewuoacey[tgnliawsrpkhyko]kaytwdodmxqandynomu
-qvfoyofzmhctntofr[xcokguepiaisrpwewng]lwwzyewekuamxxlepz[vybjmfsierveheb]bzvvxsdlcohnpmgir
-txjecoixmxyskgactb[tvgiyxcbgzkdmgb]yvjfganhyoguuygau[vztmvqrrheqkzasss]mngxndysymgybqw
-ptprazbzxzrjpnrcbko[qtdvwjwftefqzaw]ajavbdsfdjghhismds[vvouytxwsxpkttqr]kobwalobjsrwmxz
-ucvupuxupiasbzxsuo[hnocitmtlqgttgdr]qghjdvyrttaklumszdi[oyeqkgycqizvaok]xpnaaapzbfqdzvcqhr
-vvjibkoyadzluivaen[cesqlbhxmigdxphcr]ztmuzxnzeprichmdsc[daemwvspbbljrfc]jmqbyfpmjcddlepf
-ztncnhqvomvfnkhca[ohbigcgrevrnpvuwgpv]lnjucgcpghvtzlrgkh
-nsdamwafqwcjnslx[upwtncktpxkvkyhd]smtcegxuoakvjrl[dhvmeqrfgnbwqtd]zwlvwesmxdcnywjdb[whrrgcaujehwqcf]ayjiiktvzvxxquszmh
-vnqareestxydfvuvj[psgzifyszldodtw]zkrympmklegtsstov[gblinnqlnfqargqx]hfcchypjbzvbleabbo[xvlxasumenqxcdgzqo]zyhgaickhrgscmo
-jqaahcqcjjtinevp[kkntdvvdghnkloliin]zmrsdzabbeotokuz
-vnrmthshyygudsrbu[yjvauysxhjhnmqenmkd]jbjlrunbjbzvilmyqf[gnoejrqddyzsdixecs]qipibwxkrnbmdgtevfx
-uoqovspbksjvndhjz[gntlvpnmkbjcbsesyk]thzecqozlhmhrpm[ebvhbuhvuyfudyeyeey]zdlhgafvupyipekqoqt
-hwilsmnzpcjvpyor[pmphksrtsuqgkdqfyx]psibvhgullieqqwyd[uqesmzorfwbvwgkiu]hlxqjuuflhxlgrub
-dzxxmdpesgrpwhw[ohdfatbpppptmdyia]pqxvivkjxrisnmzbrl[iilqjrtayjrvxccs]gwfohsvsvsldpwaelep
-vaenounqqmpnzww[duovdncntfceyoqojlv]qttmppevxurnlzde[jhwuqoqwdxjwilrgxil]ehuvfpawjlrzmssbzkm
-wwxcidipvnqzxsvhaxw[oivkplzzdeoyqlemho]qthsqnpnbraqqkeyvk[pdkqargzfikxoxwsimn]biqpfsweppknwjvuwx
-yefdguujlfuicqqiq[hqlabsggdampkda]tccxpvlmetflxhnd[oqnlgkzvzbhvnzzwz]rfugmbtihisgdklb
-cmapvofvmxpioycw[wsmfasgncvdkvjnodyr]dkxkldjxlpdineg[omntdlldszepbdcynah]swcjxnbotrewahi
-awbucpjznymkfhjaa[avrrlftouhjbnle]atvuoxpckhvplxm
-wfrfilbmvnfdjycnlsf[thxhuqnznohekfern]ndjiygqshnkfehr[jpdgoiqcdevzyrywcp]iuqxgoskimjzasbvsct
-crckwgzymgpzhckbgct[euhwrvuqcknwnfwokiu]muiqtteekeqzajvnuc
-tljyrckyrcnheftu[xshakjmkjvzulic]mrloxmdpqnxcjhnwh[yyqdzldmfgsnmph]lwlpnskgxbkivqku[bwyxcdoyizqjmfvmc]reyetuasijwucrgylh
-zkisfuqufwbhfklf[nicopfmlcpsvwfq]nmwkhlxmquqelszgbe
-cqnuuhyddzalcxc[fjmqzkljrqjbexcxxf]pbjsvyixepnkthndhb[xztvuzlknucygyvegxp]nwxzswdvaspdufotcxs[bivsecxgawosnflmfd]bvdtxxionieorvecr
-txqpvnrfxykothvao[uikgxsmnyxwlobod]tddprkiwjtdcwbobzrn
-qjgftnxktteviik[hsnjrychdzepxamtfop]golzdtnptijzmpo[gfgevfrczlektwaohmu]vauncttcwnozkrwc[ljvbawzsqbknkuktnn]inwckpvsipmunmpo
-kqxvmryochlslekzhl[ivuyfsoefnqqtwspxtu]bytaafalzlqvjumuleu[apezlzoaspstxvknv]mnkfbppakmectmiafs
-vungsqgzakhfjlbuwig[cgydynonrrgfswomgev]lkyqpvlplfsmznc[kttzkoqpeplpfaoheek]ssijcynyhenhnwvd[hleabsbwqkqqnvdd]xbbxdphvgzmnauj
-rxweekbgidxrpbcxk[zvguddibzffxqcmvq]edhnueezmvxinaxyo[mqhjuhujxklirvkm]eaozfcadmhsyfpoj
-rcdwnquofraczluzh[gvtnjtocgohcsiswush]gnajmbxnrzppwobfjta[dckvvzvigupevbt]veqtchjayfclaltohjl[mkwsfnvdltripnzdkwr]jhdwksbflywaaul
-iltlipfzwdrsmefm[brcprzzhfwsrzbk]dlegyxlpizwtlts[fcqadgpocjjnahyqm]htwrqtzfxoeamiqgeq[utrgqiasppoxrbhhv]hwkrxhaxxtltgbuvj
-ljimkpaohzhoifdaiko[dkjxnandaghzxflymm]szzkmlubraphtnokpcj[irrxpfhtabogipufkev]bjucnqsbphjhekfvco[vejyxqrtfxuxeuelvmv]muygwodxspxrrijc
-inovovgduyohxdw[tbzvjivtssmlxyc]pimyxafhdeyomgeu
-ivahljnswgwewyhhn[jvfdvgftpukjcny]rtisgwgamadavuw[lmwlmlrkckbundmzjvo]eqjgikocnpbjpdh[mdpfdbxenzwycoou]uelglssvxdcxlwucz
-zolsnrosfihzzhu[ravlcysbjoagcvaacmk]czfdqdbrlvweyyvbq
-vktqafvmirobwwhtr[iqvczcryidfihypuz]adgkyomqrwfucufmm[ecbtnwriqiiaurzkn]vtyotrwlidvraksywke
-oagqrhpfnkdvvsqemp[qsjyvadkirmihtfezev]vuuantqauwqrbyzxpev[mpaqvjcfntbdcpdi]ghgstpggptgbvwnmyiz[hghmuvsvhqxvxmmnx]owoulisjbqpndzgt
-yyyrtktdrrprfdtbyli[tqbcxefwdtzllez]uaixdyuensmvobo
-rginebxdxtfoudqwqx[bvnzfxfxsztzqyyq]dfvdsghoihksjcoccbe
-avmokgrhvdnoptv[ngynfydflwspxifoi]lcdqccyarzcasxrbue[navvkjotgujkewhrx]ogzqcdvefknpghfjssj
-sshuolwwobwchug[cwcurmfcxqblopvho]ghvtsqgltvvlsahwqpt[skxuphjregpzpqm]epmegfynfypbewftism[mwtakvgutsuppqz]tvapecuvnpedscjkfs
-vsqfdssjnhoineb[tmcwmioejrnbdyrq]hlclokouzhvmmywskkk
-zuxeupjvtrzzlwezm[gsptwvqfzpvkevapsvq]pvjuezgybonsblmmxdv
-dsyuvmvaisuqxff[vmguqxuvvtbjrrva]ivytyfdovrfmzudyzcw[kwgjymkeadjgvdvxarz]rpizkvgpobjriqutyt
-rpetcixepthhnydtsx[dvivlhhlgbxftlw]ensdqrwytpwniviwh[uierkmawdkijrbrbb]ywvqqtldiulgtft
-iruarpzjrxupbdovqlk[cipcsklubepettbee]jfnvwjcgypepsbnauh[ncvfofkqfotujbat]moqzftmyjreztaugkij
-uqqijwordoicegmn[ihceutxbgzatiwhtd]hxqgbplciimactv
-kthovdomnavxzkrtg[utmtbhgqydotlxos]rtwopdppoocytum[ptdpdrndjiboffigipy]fwxyvpdnlhjofwjtwx
-vitzjdhxjjossygyje[vzysmvvgddhvkufqb]fhwstpatifhmyespsay[mrpnqgygncsiwial]cwbbaisjnqrpuzca[taqkhmlvfdelcrzbryp]kwsdxlkmoplziobgct
-iwybfvkucobqwagtdf[nafgfydrpzzdujp]nzdzwcpazorvzncb[niuturhwvakdywurves]txickuysfxeaamhlv[kpiwhdphpimfnmjinua]crunehowomfdmznrc
-qololsmsdenfcxmtqxo[orjyxjutzakvhok]wgcgzavspuxtiyhdds
-fvzbruyrecjzobgjfnv[tfnighcrmbgeklgaq]eanwrgtehcxvxow[hrmkbicsuekiicxw]pmyfavysbfzttzncxbm
-frjvccazhabvndxri[wrmbltymeeoqpqtx]hbyuxmlxfrjrzifpj
-nkasezsbfuldeolo[wshypstyfliqxplkh]nsoplkbnmiagngvusr[mwpwshlkyfrxlgcofiy]ycplnfgorpssaitngop[rtplyrqezwrwqhc]houlrclmoatskoufgti
-cmsmitcywtmhtimj[pevbzyuhvaqftnugc]rjaxtggjpjvayzmhx[pvfplwswzpusjzhom]jmaurmlkkbusduxd
-tshzomvzzouayvevgb[esegiphlwqwlkgt]letvbhxdhuzidevee[zngibooquknjqqxnxz]dtnugmifjztkwjpqd
-uuzovqhxwovqeki[ddwwgejprtbquodnj]nafunjrpotozufcf[lqyfeicklrejcwwrvxu]kfxgdnpvqdmvvitzt
-syawdtcaspkeubwty[vyxykmhcofzktwfex]fmevgmpetmzurpou[bgqqdkgrojeesxj]lhnvraueoksvtjz
-hkyhsguxgsejarhub[kuluosrzpmogndwe]wzqvcpdculcwgqldxm[uybwzbsgzjqfspayk]nysymudwyxdocossgu[usnahkjspekuwvgtje]gtjxtcjsdvtzwmf
-jiuygraiggbzoxz[wopmhgtzdwlkyzvfhs]kquojxccygvgujcopbq
-rmdqmtbvzoocsjddyj[mmwewpzkjayrxkortj]cznmpvsiqtjdpbgbbf[dfgdncqhajjrohr]kjsivnolfcccyijyd[smuudgbnrfqkxzec]zukmasqygzxrjqoz
-zvhafubtbxcnggnnec[khfuhiaikrpowmg]udtuciwamjspaojuks[wlzjqwtmrfrfxmxcfd]plaqjdorfrbkkppep[exrlzahsxksdqsllkn]fooqtqpmnglrwokq
-rilxjscompommcmc[qpdxzxqycqutfyj]xvoufpojhanaloymvez
-crvrlgjjpprknkurjq[tuvlylfiibnpkzmi]ghncayxzzrrhwfe[atnpozkssbyznplv]elzhtwbiernezqns
-yvdbhamisqligavziqh[jcfjonwpgcszajk]xdszcpfvefvmlduoo[vqszbxqazfwgrfazh]geltrpsnlfyzzxjsg[usmmfawdtvkvkcm]wqimqpbsojuimmf
-fsgjpguxmrmwxeymhjr[gsunymylqpnrbmiqyi]bwqcxjzweyndcslvxx[rhtvuzqaxazgzhhwp]lqiceppxpscreytystv
-zdzsidcfertfbeifye[vdttvawxhnsjirsifn]abpddikgqtsqalilwl[mgqwvkdulrgdgni]bqjuliwrgnvycgnvcr
-jrrmfvdpwdborgjxw[uqsuxsointqfsbunl]qosvmfqnyadjfhrc
-huekbtocejhhjud[hzglqavqagcxaaksxp]afqncrfalluiiqzfo[mdgrvbtzxdzaztpeg]lsthchkkrvofbaa
-lsehhfmwrfuqzewvxkv[rjrryjrjwhgtdifux]nnhqgwmoxdcixsna[wgburhmplkpkrgmpco]hrakazqqsstcrxupvv[mhacbkzqgskhorwf]fbobhetgehykvsbmb
-cjmaltrbirusgyoirp[eipxzkuhukkdcdh]iqyymukrkwitywb[dcvtitgqvetxqip]sldydwlrcdcrljhzu
-oqpgfzdkcrsrazei[geqerlvxxatddmn]igakhcntksmsttyqsv
-tjhfyftjaclsdwzby[oiinbkqwzmhzxeic]ehyliwwisegufbhh[sqmpgxuqhsxnzdi]whwxlqgetakchwht
-ukgmtuvowisscvp[nhzgobykdniheamz]ekflzosxwmggiuuudz
-sqbsxlbyunhhepfx[okuhhqbyojpkahiz]hhywggdmcojawfpvkhx
-xlqohzjcztxennv[cnbtlwijpkczgrk]pwxkxivbtxzovdn[bekntreckjtfkrsihm]ouowyjrzyjbgsygj[cbirdomndbelavpb]ujdrausbmqhnretkhtw
-jaowfyulkleymkdpl[yxwftdgbtfzugqnnzwr]ztmzcodybfzmfrv[sttkedpckbjaxmqvhds]fidvanwfqvpywervo[jtludguqxuwucvzcjmv]mfnoqzvgatqhvteacyp
-txyjtniwndqckudby[jbemysikizywlxbv]bezhcvssxmbmzgpo
-gcxfeqprbvpwtdnrxcx[kvhziidtwrxlhejxm]kxzumooacujxvuwsiui
-vvzhcfuecgfvrxrnquo[oqgutuxthxlcxhpke]liqjotlxzbmsassyxrf[colshvmiwbfjansdg]vggdkkyqrjvthtvp[dmozaqtceghrabasafj]lnsoewepnlbqvibyk
-keehyqsqydfzlqrqqu[obaslijmtiakxkc]wmrxgysajmjymaqpas[tqwlwdqldidsapjtzct]mjeqlhemnwupulj[xdnkrxbbtlkzeapnat]btxcxfncwhdqlhmh
-qwdiosimjitfulva[dhnypfmjunifrhopd]plrzlaakgfirzcccif[strfuwthjgfazeoq]lvhimnjpbpagrozczhn
-adqktintsuslnns[mtlbicyrgqgnxuhqcd]mdadfpkvbkvkaimvghc[cvqgxjplvvqbato]lbskgsbvqnvndequq
-brftuxdhebezivqio[yukrabpvgetpxpylxj]ldgifnehggvkdtq[pobhasghdmctwcgl]ccevtzwnziffjhqu
-ibeocesspzaammu[twfeunwtyqohdtz]kiknftbdbkwrzhrdj[ywsjzyncsuyykqgu]yqbjeqoftsblixeozlz[mmcmncavhecsxbxi]aumsmhzrbxpjqrxllit
-hieqiicvqswviniteuv[ubxwceioqqhagxybrl]kikxmdnftjiqazj[oyvdrxwqbljzkjbh]mejsqgnksglqmsfrlf
-zjeouhblfsglaxzz[efenlnptrfbopulk]tbdiezqxnkiwmifiyy[pylvblxazwozkdv]guaxwfuktjlovasatlc[blnlcbxxlcgddfquwgx]jkemembgzzxssliiywp
-juscmzarbykdkbcf[naosptvhazhfydzz]yflhbtlxgowuvmf[bdmledxprwnfcaflpf]fvjeubkojokjcfnzoo[bmmclnpuykellsdywvh]vibjnjgmtpoyvdw
-kqmrdsifaonqprpach[chzxtugxvhbjujlzgq]ffbjsynmytyajcbsyn[jsondannallzwhz]gjrnybnhyxjismip[nocashryyqnbsszebpp]pbugutcxooiznkwwim
-vfziparbxeibtccl[efwcwvbtlutmoltmrr]fjwkgsaambdhwvefs[nsrvprujruqdlxrls]ivmnrtvdbkumpiio
-bjweouryhlzxnkfj[uuqptwyhasahjmkirh]rrxwiqmpcbwkhzr
-bgdivzqqpztnswtd[xwfurbswsweduce]osimciokvwbydgqojkk[yyjvptlwdknyxnzpr]cqiztxdhugywyclvz
-ftcvabkblehqjyqtl[txwnhqhrsrnengcl]skhszkrtpljsgiylab
-ackokzybncuxpku[xzpocuamnohjypcdq]dwroulahreyhkraojf
-hqlijbwudkycvijqs[buaclznmftiadyidde]jxhkyqsoqbpxcjgsus[atcehpnpgwuchfzekk]rvyzujpclugrfyksmk
-hnrkcioqaeeqjrpg[cowbmmovdcsubwiltd]myuwiosvtmymgfyav[yvyjgtogmgxxnawpda]saqmtvyakacfwsvtxvd
-tyanupyqajrxmuk[bkxkehodeqxpclfebq]kiupgpdlxfvzydgs[rvbbrqbdsolzrgse]srmrovuaxvxvzmrmev
-pjbnyjsxcwyhjzpvqkl[qtgofokbciwsszwa]bwvnbcneuvipqaaiyjv
-ecxbamdgtlfpmqhi[khvmvwiorzygnitsbb]znripfwspcqgsdzosv[nfhgdavrprmveeexppv]uhzugtmfmipmaznbby
-jdoggfnexvkxovwiatd[xzxovisxynejpyxhfz]ciehyiyumbbwwxrc[nozxzgzvotunvgnhhjk]umzgdkvcwauvkzr
-qhdaymaijahfkqzw[mbjhxuvbksqtvxwveau]rkvgvfqsehbynbom[keygsbhockgurps]nzmhlxxwjlpjhzbhw[ujitcxihwbjrmrep]cbfpxvdzbljvbfpzsw
-wiuprpjfojcowmy[vmrpruwhtzbwyciid]ntbkrodejcrwavjfqfa
-ctqdkuxwiricymu[wexourbkgedaqbybfj]revrxjgaoalievfbj[qtvcolrhwgqtjesuvkw]ozphhuwwzzguldf
-bqpwrkyhlysqvwxga[ghyqnatqnccegjnkgw]pdgglsmagwkwemidd[fcddsukcrksifkv]cyutddgeoqcyopmm
-mxmpasrqdexjpqfapbh[rqeoslcvcwqteki]zpervmncbpfbhwaxmd[rnljbhhtgiyluaaetx]aycxgjfqyxhgeraelo[fukyvtlgjzupjjrxvt]peumsiryqvhwcsutrj
-nbdnniplhgrqkrcd[thcyuekybfqraxspek]rlwhyqiavfrfglg[luswlglyiuklvbuqe]mdgjepgjbhuyqkcs
-lwueejoqpguiciw[kpbyblloubmxdhk]omjurxlkfpsdwdmbl[qnifmaxwapfvglrt]vssmqdzlxyyrdgkwh[ljslsxolkkivoakh]upwkosogsrzzuej
-rfqbvdzxrnrbuhvw[wzurtnrnslhoqkdoaja]vuxsxofemkrjzqkk
-pqslistydhvgulggwbi[nipdejpoxqfmbeft]frepgyumygqywwycjl
-excgzlqtguboybi[guywktnzbmkwqrbp]qghuyihqlgjrdbuljs[zrkzhirafcadgqnifuz]medyulldvxdtpmqifpg[lsmokycxcicnxcyfpe]cobezkjtvpuqyqu
-aajcheqlcfjvktswy[lsgbzwuxqcbgicd]skvwyyeawvlzzfp
-afnnxrxdhbqqixcli[msrrsiakxynnwiard]tzanbapzvxtabeuz[rbyqhswrxrofedlykg]phyilynmscckkxgbhks[enrqxrwqiotksdor]phnmohcaqxspqhv
-pjyiwunebggfgpgsk[ovrxnqwfhtrjoxwi]lmkquysxzdebvarwfxu
-cdztgjverhjafgemi[aogtmpdwqhazrij]dmypauxszajopbp[sdsrejzmjvpjijq]okitpugefdhpbfnzs[jyospqqhusxbhfuuzp]btfwfpiblknocxncj
-djgkwjxzxrgsncwd[iuaqmffmnfklkieaq]agtkftischmbszqpo[conozrxbpdsuonpvx]mflbagusvgzybhasrlf[ntidmtstsedfdbfwost]igffrxgipzxzzyjy
-ahfhhpqofpjyshcus[lrxchnknzrjtzkgt]hvtqhnuzihgxovj[wbnqnjjnzltdyvxswv]bmppxzhzgwdsckuo
-ghwlmylxxuybkpmo[bkxcurwihedpwjm]ypkvoiavnzgzlkahlp[lnxohqbghwsnbeqgk]vsegowbzcrqwcsgy
-whzaoswycajecyuw[nwzgcizbidljdtoull]zfyczyjiqsqxgzsjm[nfkpyfcjwjijtnb]dabgzqajwpzsczrfzrl
-sitsnxvhgjjnlitqs[vvlbonwoskugqxo]bqitwdmlvnlcziltj
-avgdblmcidneynp[gkjdefhfakqungkij]eztuncfdkicjhaytdzw[dcfldbgzscsumjox]okqkplzsscszdsxejso[yihmpxvcbnsofchozr]easrxwgppwzqern
-cvefvhycaorfsfbmi[fkvzdrremrlrvdl]cfcjirtcmdphvfircx
-wegfumofnzigbnhy[oqkrudppjpvcuvr]fzyxsxrktwkgrvyiwz[jkporwybtotanposc]exmwkvygccdurwge
-iqfavtweexjxhdkz[drnsnxjziacormb]yftyjvtetmuvwew[vlrdviggcdfnribze]xzykwuzopkedwfqjxo[vnadxonxshmwhvk]mqbtnfjmhjmfdftwm
-odyopnscztauzvjvbfe[zpgqzgzcqclarhkkc]lfuvvhwhtlypbfv
-ogaqzpgfwlmdrjgo[abvqsomptscdejeyfg]rukgbtpqwyyvnvrdz[bcvgngjhgitweuc]bljvftlzomvgvmlkzsd[yhpnqsmblsnfgfnyv]nvnkvwwllyygxcdnef
-jlbnwewczmvtoshkwk[rmtpjyqhqxturbfc]ulsjqpziwqfjccmdpgy[neunvaltjjkcxvf]opuswwcrtqbkqyq[wzpxgeaohprbhvamaf]ybxisfhszawrtgsj
-mmrbaaqjvgpshmn[exjdqzgpzdalrwmtha]qrxggoccbehivaiegs[udbyzlbkpvwfkaot]vfbmvytjziptkyv
-pjtbkayljttjwyztu[clbiouysqsjbyjguhe]srltvgtetxcbkud[qnuhjnuziihtvqtbeyw]iccppmvrkzyehgiv[lldvqxdqvpcrizue]vpwqjhbktcmiyed
-vxqpmalvgeaxtkpv[elquojhkjsxpmks]dqvuljielvjopjcuvsx[yoklegkajhhpatv]cnfivppgdnkjzmrr[vnjebiwfefjgqzle]aqkvijxvgljbxmm
-lhkkzniihzzsqxdr[gvhbztmgmlicdoasdxn]fthfehxdcnyjhdwvsx
-sthxexgjpexecjzr[semwlxfagpybhblcq]ztkmocjbxsqnwfs
-tsswuaezqpzyevei[nolctgupccscwsj]serolamcjmqaawea[qgjyyldemhsqivwmvtn]rlmxvchrccptrgmmbko[qtiqgvilvevjvlkxc]jjcnzdjdxycczflslq
-geiglvdxwpsdtyt[isbkywwxvuzljpnv]djxvppprsgjagqtfgl[wmhnkumvdpikdjhmt]snjqvydpmjqutduh
-ksqeegpqcodzekvp[htprcliyvqdgjbqv]sqykqimpyqiwktnq[bfjsisougvnyjoyha]ixghemgcvicbedylz
-mwomvddjcxrdzmqplow[fznhevtpwhldwpo]ygskvziyhzxmtbcikbl[tjhieqjuukoqmixm]mgzzrsccohxzfgak
-xvdiafigrvgrckwol[gttxgvtlreruvonzl]fgwyzafvtwaqdwuo
-siyvzqpzfobnlgtxn[zcgxyzgysabhpvsviup]xfdpicxyxyjgxyxd
-tuyintcsfdyhfxofk[abiuiwquiscebxbk]zqazrpoxqqswycjwvk[hayvaaykkacbakpom]bwwhqzhuiitdaed
-ckkmzdomnglfwcbeh[avqftwjqckajjqe]fkpgyrqzygfcheoctfy
-teuvnsaipkrkmuu[rtiypvevtipwuelkzxf]xqywsffobbokraw[oonkmkqovksdycu]noxwpblcqqbikpbck
-bwgmejgaihdorgcqq[djldztucejcjizv]nuuzvdhlgqscyrjmab[nwcglzehbfzzvgr]aybubdihvypmvqmpfhi
-gxrmeqpjnbegqjeuui[iqpcaqmpavyeeqkye]etydxarxyxculok
-wakuruxdmenhmcsgt[lndpybwsvzyibmd]tfabajlzuxwwhofz[msknqgraxzpzwytjx]lfoqigitqufmhfmgwgi
-gpusiwyruzmkoluea[ofbgogetujmjnqv]dzmarlipdqkgwdzwzd[uhsfvlrawossxvxyk]yeseypubhoapfgdjom
-rcmnwwzrimrifziyoyg[avrikteehxhxcqhsq]yklfcrtqwaxmoepr[lahpskzjdwrjonqg]wddynujhryzkunrokho[ixwzkdpcqefelgcoabt]arjhdevhgaqcohbut
-zkcxzfkwxxdtbumymqv[qgaztskshqiukhwuelq]wxzpzaxuhdtfbimub
-nlgurkzredyklilaicv[mtxzdczugdhoowtp]hnhcyeygqrbqdnsc
-pbbcmecbydtmjigfn[giiambqbdgbgntq]zaaqvlpkysxuvbgbo
-aqyxolkflikpaxr[iqrnhzdtynkqymz]rwmgahzmvwtfebyguxh
-kcxhmwgrvommccee[oqvsuahbhwioqeunkz]mhcyripmlfivqsimnpk[zptnyqihvavtlxkq]guacutltkqoixskg
-ldpiuuwsszyidqxqj[tsmectapcwuyhhy]slauiehtpaocaeqyd[wbhrligadmsgznlyvd]nyvfiipvkthxjuoubc[zplkhqbtciuqnhjhiwy]olcmrcsayukgcbf
-tzcpkpyrdolcerqnwu[zqvhulfxfhgaehbwf]zaekvjegdligfrsh
-ghellbvwbjaummjjoss[pevgyftbjzmlsryfzv]kjdgnwfofftlxbiabir
-pidtrxbnvaobubqwah[nftxjicikdapqexh]mwssisitrwjgxhk[nghedqdzfdgxaqacas]hvehmhbxzfwylzdrjf[bisktoqalmaapoomzt]lwkkhvacvuqvmsv
-bdqjqlmohbjvqlson[mupepkeeoofwydse]ekylhrfsudqdcvkv[joofkljfkmpknazry]anyojhejtzfofcg[zcvpdeswtvtngyqleri]seqoyrfsqawkrudmg
-lmjegqfshvauxngz[ysmejumumaurgvgrsy]xrmslpnljfmaidojz[mtvwolafkcxlwjjthy]yjqsssxayanfdrel
-qmmiampdlsscnqml[ymselibefbqnqakirdw]uzxhisxyqljsdvhfe[jhjnivjgqdfyeqcea]nxbqpgyhtqzcwoptq[frlnwadwwyfnndeqv]qcbefaxmhgspalprcdo
-tavfmtbizkrpnerc[kmenfsatjafincrwrlk]pbbxvydrsqnfyap
-hwrkfzaovfbmrqhff[qglmybgnoytlkma]ibbbvmtqegqqxdk[gquqtiaqekcwiudebb]ozhpyabnxipgwfs[xqcajsdxhwpkofa]ssaordrnwjyvmcmjtp
-pkyhiseqcvejtkbqcgf[xvgqerenvyizecof]sflyqnazxuwbyexzwyq[zppuknfnnngpwihe]hacwithomkpaveqjrs[whsspxqxxqihxrmqxvn]ifsktqmduowpuhck
-xqctscaefqpvqcrm[rqbjdsxwoynqeoubwz]zycfrxbkijaedhkr[rzzbvjmogwxgcqa]hpzjokedwwmsbcrggmd
-hcbohuwdyeacvgmbmea[mmpvzmjiryorskh]tydknyaqhgcxafmqj[ejadhaojfjlsfxs]duohhgjdfjffvwzcgel
-ltlddqcbkkayshw[qdedbdppzuqdhfaxt]doedeeehsibaylpsnk
-bywykrbttmmpyacsoo[ghicjobuumyckupnmw]wzxuueyajmgprxe
-gejngdvsephfgyawm[eahzdehzhyymhcwx]qejrbkjhhplzgbehwdw
-hobcaacuxkoxnutlayu[yvsylobmhtczpxdhvh]qpwhgyojuomiubmahcd[pmspsmyxaqrdvcpwnwj]ghdvfbhifxhphkseh[ntyabnyuoadseevhvpf]opibtuiwjogylqzt
-bbuecmhireivvxmtw[kkvuwrudhmpqpmqr]cqrzfeasrpqapvtjqnz
-uxsiwqfamsnemtcqyym[wemijyiqgxbcsvdz]tdhlutowbxpxrkrlpx
-tnnlwlvfrrluuxjnvx[fgijrjghghgrkfmfb]lslknlacvseuzwy[acexgqeksduhjpf]enxevtqjetnyftgrad
-wiegevfedudnajr[uryivbxbutbhfuh]zrpurmrupgeggdyc[tfykavyeulosotky]ahsieiakxnitxhaa
-cdymukpgwzamxpe[ihvwjlomeozhnxq]zqlglkiyekzhkesoyui[dqdkxlczjrxgbdfqf]pdipsbuxwhibjytdb[ngoqkjeboqlsuic]efcostvlclbxvzhloan
-uuavzipkjlcgutoxrbc[orpbrqapdzdsagy]hbgwsmgmyowonxftjl[wrimpmzmwyjjtnkaf]qmlpvrkqhqbdswyyvpf[lpjhsulqumdzgjxuajn]yocpoqqrpuquduay
-wivyimuplkhmmkxioub[vqfixqklclmrbume]trenzswrpqljwctfat[ulkqyvjjpchvkpd]mvlwfrclcfqziho[pbmrqudqsivfemt]osmrlwtwstidtwmbmzc
-owpgvzzedsxwjjdeuz[kyqifdbwfxcphnb]kyeaxxmsplabrbd[gayquqvysxjwpckzlvj]tiuxhodkebirvmdb[zhnicexwwcgbbnfd]hcxwgyjpphxocggfl
-vrjvymyzflpaqfy[fokfgiaiyyzruyt]yvfrfomlsjqkvtps[mprfrwzeokyjmdetnl]znjipokvzxljjgqaw
-opczfzhpovblsevqcx[twcavjnyjerbqfqvooy]tmyyybovoyqcygzzyk
-gpifunuvcpqjornc[wcenyqazsxzksun]dijyypqoxxmjiyi[kdzvguquhohgsghqqko]tzknqsgldnnbotqnocj
-xtnewbseisluqott[ukktnadfrptzmvmnmwe]nfevmvifmaaubdrytcb
-uvwgvqvzikkvvaltpbs[darnokckfpuiwvaq]qjgglscrdhximnfg[cplqfytiupsnlwjnz]tjjkzojxijhhghoo
-mwvyjvnzfbptvndlui[dvpxdnwzdssddngva]nkvlbcdcwjumrqmjuw[xgrpriwhdpyxvakfpsu]jzugamflkelhfrzswca[hvdnwrkyrvcdkep]kqyiaalprdowzeudqvt
-zahhurbvayisuhkxluc[dpkhtfqcplnlwkr]moobahksmsqtmxasrw[oyxemzzmvwvxrldebja]tqnquzqoslugwcqcwtr[vibjzqdbmsmtxckkkn]ylujuamatwbexgo
-ffpiprpoymeaccwoun[avnvjzwvzowgthwymt]sakvpfnqtnzdyhodzud[egijncssvgvsofu]dplbxmzfihrpopurlvn[knjefyormeaeoni]ubcbldkemxgefbnjcbj
-fpyokxpcrydmqzkgr[gprmekopimtigwz]fobjyaxokhstzjsgkw[njzhtjqrhoynlzpiw]svrqxlhgpckwoat
-srrcdyevzyzhxnx[bbojuevgatiabjudws]zoxxvzrngllhtrtfm[rxoiyzmzwoenbodp]keodzdiobtdfgrxzgye[akofrgfwqtqblvntv]rfyrjcwbfblulkw
-kxuswiaijpaejqzoxes[cgyhiwbpjrhaacwe]uqqocaxbsotoaei[runskhbiegmjwfyjv]qgnmhdcjcbgbsztap
-kvzutkvgsyiyrab[zhbqkvgbyqzgwvfpbf]nhtaiwzmvrssvxsrdz
-tncgsbkllaugseepp[axryamrptnzekcb]xcvqkfuggjcfqhb[mtmzyjnvrgyuwtev]xziofjwvnbsothqzdm
-hmjthvqdelrmghgnvxg[cvfmsllxyxchaglntl]ikpeldmfhjdtnvaw
-sdhirfhdcxlwhxevbv[rfktrkotbfwiolxd]bhbkmmbdisqlclttbi[ueaqlmpvdaoxhezzg]baphbkfivkwpmtj
-crzkarxgbgpitxjeunw[xlonohiojoepwnuhd]kalfjqpazwmwruq[erssxjpfzosbcta]exvgtqljewfuwioyq[syaeqtgrgswbgbetkzw]ofnozzjtykajqcuc
-xdojuclultxptlxgci[nkmxgmiyhrrfgoshmeg]zqxcexaabvdjcaiarw
-rewjiwxykozqjzneh[tczrbiawzwtndtqnew]yxrgwvnswgyxjvnot[khomcpuiavkhwjsl]ksqiuqyarwwibcssseg[dsrplcalbjojxlecjdo]falbpuscbjsdxvyn
-dusvvyynezzobcrt[yrikyxqxqreoqcyyq]vkjxvnlnmleqybmgt
-qzmjfdvoruomeilaejd[ksrwqvmnyiessfejo]lvhmckdfwzoxwmydxm[icmiecrnoqepcuzctl]unxwrfwxgnijdxqjc[tuwcbylgfhpaveyak]qslgbtviucbmeluf
-djblesvduxlxfxp[grmuswjaheivlqvtst]yrqstsaryoqejwkd
-kpyoqmyglnrmxculu[tuyuqjronsgluls]whuymvpcdxvxrimvmow
-lruqeoicrisykqejy[ruqwiitwyrsithkyo]hbgqgiywqwsclcsn
-pkpmmddfcezjrrs[rbzbxotrbqlnmlpidpu]aakddaqjvbbafbnk[sendmtepxbcpttn]udnifsqhogqvszi
-foqjzmqhghzmymeq[isvvkjfpmvmhquoidkk]tskrbirqdtjpxolwzw
-pneojhviynihvnv[meuldylhohlfwsxp]nmdwxhxuexorktj
-gpnxdnxmueucaawmctx[ggcizpwllvbffytwv]riqcitchmdekosocp
-kcoafhejmqsopizo[lyoqftddzxuuerafco]zrvrzbmnzcawaydwg[bhnmhrnwpzmghrprzzw]qcrnkmyfcdoymceacg
-chcabwcrpxqnelguile[ckxfqhnrwlulnfgxjb]toauhcbsxmeirtlyy[cfgmasaieapbabcgdd]ijenfrqiaeiehllwpvk[ciymykejvkzxsbxy]iiyypzaxohmykgbzej
-yeqhlpncjcipsmtzpi[zoidbyeatjrlgmi]rcrhombxichyykncbwh[wtduqjwbefekhnwo]kqemsisbcrcjaqzdzw
-nbxvvetblqcarlcku[njrccfhdvxtarpj]rhndgwlyfzaeubc[imtcezhovdlfyixzwm]dwughoowqyazwaziea[slarywwdukqwygnhre]efzdruetqfoqqxusb
-vhvbnbyluqqaqzolkrs[fbfwkawbihbzwlrhd]npfzyqkoxlgkklgxz[zboinxtlzrqbwcqo]jqhvalbjqaogtyn[razwnxfkshezamemtr]nywqcxpvmuudyqo
-jubvozjfmykufhrkk[qhbaxcvcpyzbrwjlrij]itseilbvjwvzlgqjfe[lgxynowzlpqgoyrk]inolsbnzxvdmvbrvwqu[hjzfopqwsuqvqhb]wffwgmhjubihiqkpuls
-rqnjadbwfosviivshb[rutsuesebrktxitgy]abukeyordcrrqvrgf
-bfveiveawwoqyluxwu[trxwkfvioqzltgafma]swkyqokgtrprzzit[kuziuekaorgdgqjgi]zudaehzrjfzogiwb[fyxwwswqrbwgomriqo]sqfjrdskmdvalkhchc
-pnrvpotetwyvodue[xwkxyzxflrvxdfogk]kamxypekoelgwktq
-etjkovmlbwryvhv[wvubzziqtxbjvua]hmrqokvqrctugqdazz[ykobpstcxdqweotsi]eiczvmdcfjpvhdyfnci[eeklndzunbzipcqubp]tjsktxuorvbnisy
-fnexznsqqbhygrm[jgnmivchcvxgssjcm]klqcaszkwyzzecve
-pdmzjundpcsxbgplk[lbdsyrmgxnatuwk]nwrhpgieqrtzpktaiqw[dcxtjtkzvlxpibanjma]djszxtofdcuyfpdr[kzblikjgqfiaykr]yhiqqurlkwlrrjo
-bwtgmmjbtisnzbnyedf[iniovvuewpetwsg]dgvjyrzfrqcozekvp[xsulvxvvtwcxuvbxau]vvjyodjlbbjxigdxvxv
-jcanelvhybigzhplc[lhgjkwbpdlcybzgacya]uwisdadjoniyerw[kzcrorifvylivkhs]ssicvecwpkxbdwq
-tuxlnjuyudvhazlxdf[oknheznyzffrtcb]joozaraxuivijskxblf
-rvfdfyaemhgyeynw[hmmkdfdhadrqkxzzmsj]ugfozgghllznjhdxw[ucrgusuuqthlgxx]ipiercifxtkghbkf
-jgzrilirvzcocaphnz[gyrvhettmmhxaxbmyg]ecpwkoozcgtpoac[iretjtqyscaqfqziu]wqjckfkbfoqmmjkuhqe
-pswuxyynrpckrquj[wfbedboaabsgnnzzzwl]wgfrecpfkvlvjzl
-zkcihebtrfmiryqkd[ybedpynfafkkrbfdm]ovrsmnhexyqblafad
-pbkoczqfumwdpfu[gtcvqjuwknlrfxre]crpyxhawudbilybaomf
-pnagrmxhmjftwltxh[aqlhxdwuzrvnwjwl]xhmgrrajywnizazyrdc[hxdxewvthhrwhsva]ckluhnyewiiqazzmvd
-amjksgqzgmoavvxtov[ekqixufaaepczzusfga]fvlmiilpsqsgfgg[gzcyehzgpujyquhrkm]caaocajhmhqzbacvpog
-hitezskizncharbzyz[nbwuldsjxkjezjq]monndtwsxuikupvi[iardznrxkorquvyvwlk]etzyolkxhyqsdirbaj
-ocsxlxpsgimcvori[gawgkxlilqzeakhzds]bodnyayaioozoeg[bmaukrfdlswrnvuwy]nafolaiqfeendahms
-kseklqtakbkzzhfd[ghivxwcqlgfgxeot]levjimgmcfpgqrjjic[ixwevpbqkyzthafyj]azdxqlromttwteeqep[kxyiyoxyhvgqlmvscwz]zxdujwvngqyoabmrio
-elgbshsnykhiyndouao[nhumkawagmrztsamd]fwqupmyuogneywsyhub[zzcemywfdswhvjpl]ockclifwawqsyzt
-hyetqdpieicmycip[ciwciijtqspvydxsdu]zjrfhyctplqvypy[hdewteddlqfaoifgy]murcplulddvzheegmgd[rooqfiqsnkjeelfjcag]pdzzjacxzdzmmgmqwu
-nufvveulfkudkrvskbg[cdrvqfofoxmqwtv]jzgfbywojzvwumo[vvshcsjnhobkayk]gkwnyerwhezneuze
-qhmjnzcokmkmvclhfh[ywruoexbmjwuxvrk]lswliylmniqdgybtyx[yjrzasyfroiuaeps]xevbxtsyjknqmeuv
-crwelvogceorioqm[xmduhdacxyzodslgtv]wilmwenmmnwgqteftrx[zonwpkkjimmmhbrtls]vfbovjoabzwjpxd[jjxievceapgflzeldwb]onucskcmpkgsryl
-ujitrvtlzcrtazmghgm[mculcmczwibnuhtunnt]izqgurxwxhwboygvmf
-lespfnkqubxfoqa[exmzkeazfrfrkhzufz]xpunddczqrkxtgorc[ymsbogpyjeimnuola]kufhnwzukrdayts
-mitdlhggspwferwda[fcwhldszpyfznayp]rbfzewqihtcwtjznsp
-wzhbemsmffcmcswdvp[jcbuktuymokdqfjj]zyhqthqbczupmcmkhi
-qulvtldmhliyflccbyg[mqggwujrznjefvjw]sduatqntzkkvgfqel[fyxdewnrtlkkils]utxmideawxrzpewmee
-ggpinoooeucoxmezfi[ovisfbmebypyafknejc]ccqkrmaimxmvxhtain
-cqezdujipgzaara[afkpzozyzuitollf]srmeiyjzqjruima
-ivbrwakbgkrxpilylu[eewfaajedkwjbdrk]stsichtqqsksydtubf[umxwxeikoyehrou]kwddyduytdhdgdbyn
-vowwatzholrusydvmdb[jarugsbvowdtznwx]oofschlksdrodakrk
-oruwtttstrcvcgxz[cvidyuxfxluddzxuz]jckmrrmvolclrbam[dqptqpdwkpewhmcax]rtfmeakahrcbazlzsju
-vjrkcrzvefpxgardmqb[wxmurzwunsvjaxfhik]meiaafxurfgikqg[dkoextitsnfeorgoihc]diohmorpmlhisrs[ibtzwvoovjmdpfi]oelairhwcbbltmjcjdr
-miafjehtxwnfqzxg[nlovpfjpeclnmlbm]rleupmgzewtvuewypt
-osoaytxzfrkcljfjv[bbpjqntkuuwpgupxsy]bgryerdaukelujvayjt[gycrjaelxuemeosc]jgdfpdoltoqnmow[yfwoyzixdzamgqweb]lvmnjywqfjfvyxhb
-oiksidcbtzhhtnegqa[vdxnacjfxbcsjzqdq]ixvwmdqdaleuzjniki
-ngbyqfvobuxdnjeqia[ksktvzdyzkvyvjrgkos]xwuslzgntfwrnyqrod[cxmkhhwyremunrbc]hijkgxizhlyzqfaay[ljwayjqxyrduyoebm]ancrkgmzboqtwkjah
-kxcifwahsdmqasrmwi[aqzdihesmgntomgmj]jkhmcqvxqxtshprsy[wgewbxfsobokszgsivz]zlpavaqlwvauvedwf
-ibhzychwgtvobvws[qaestubbbtvyylbr]ovsxlggntxnneirtot[kgqrkbiqracxbnbi]lzpfersavecdddsytb
-abjcqoeeqfhvqmo[eferwxtafaxzidjzbr]qztbvxsaiyqhcsdkj
-uqqngbvhyfxovmdods[zwyybohwrhprvxaaaio]cgyaactenmhiokzh
-hiqqvjquvdkfcjwmo[jzrxnmbrqfhjhvppdxm]mwvibfiltxmwroeruo[fasknewgpsmftnx]aubymogtwkseupwmr[xnyevhhalilxuxqqvya]mastwtyfihocpbjngaw
-aqvkyxqnjtthgkjxr[ahvjgtzfqetvqhz]vcaijasfqaygnxmdba[loyjulxsgyldkotlefn]lnzykvlsbkyuvnqb[iqjxfxdmjgyxboyzr]zbfwxpxbthtwtnjdaw
-iweumcmplhykolkazmb[zgzeryniuwebpka]hsuxltmwyxogseiogl[ogacxzbrbvopihzm]ipogfmqtohqqfvowzl
-hlvbzegrmbrgoepemyh[luscnqomtcxbpxjmxvx]tipsuhgnhdavsubyqha[ozroemaxbdbcpnydjqs]xqdwngpkteoyyvkq
-fgpmkosjnfnltkfy[sxqzypihbntsfnryubc]oygetjhbfvozerfzw[nwvofzjfuwdzxncwvo]nvbtoxgwkmhnyox
-kbqkyxwacrffvkoxmb[tqfooaoggaauopcanz]ptiakppuyxzwzpua[tefuhyaqzyeteexrsj]hkuwublifohismiqg
-pdbrixpmacobfnpg[mxmgtvdlsuyhjnjxz]ghuebmnxzqfljxyutl
-ichijthjvilenbfg[zeibnuadotzachqyvej]qogvchvkfeskckvmxw[plyhbwjrhhnvdumajut]xazlyayoobgkmevrpho
-cbkznopiuqsssvle[gecuynehzvcmfuzcaxz]qfihmsdjfsxymvesb[jtriyipbkkpfnazcj]wbcwllfdxxdzrimwues
-ntxzlslwvxztbmola[duloarwqzkzxsfag]nzrsxasndnrktih
-fvvowikdydblgts[xozwhuhhngdjqnbry]hkcwbqloymkqjyzpj[xfwuoehhuljposct]ashitwoprqcooweytiw
-ynbifagloxgkzlydhk[qoxltvqdpmqhawcvef]wfnbtiyjafaqfujr[crcuopstahopywinvgc]ppxsgbvevlrkdgsv
-tdgutgskbatswuizuv[zpmhakbnxnkehhf]ffuohvkaxpiptot[zlykjduigarhxygukw]bucqoskhlesclyzbpd[igdjnevmqlibrugc]seyjwcizckvbncjwon
-holbjgzpvhqirwrxts[lpvaadhoqjjwvijk]etjusqwbrccaqea[livhtrfodwoxnkvk]dmprijbirsnzuptikc[icjaaepybpgnorie]imtoivdxpujjmlegqn
-ljywtdshrtzqzrln[lqzqgywtrpgszaigfv]vjyyvrbkjdiiminfas
-xfluerhpuqsqnrq[rtxglsxbetzajmo]bktotbhryqxdqfaf[cptmsctjrifdojglh]qzpxnniqwxlbvnexlg[vooexmzwbpulnxxv]eumwdzoixhfxkoavu
-xmomvhstjavjyisvhs[suremlzhaiwhikzzojb]urbiiuvmveiapcybgz[botikbmkcfsghtgtcn]jbsrxdkpxnynfibgxyw[agdmtydfehaujynym]xfpytnqyoafnuott
-xjzhgefdlodsdahv[ihwwnfbwhcjdbrdixy]kmsckqifucrgpocyvc[pudtuuaebkvsrflz]qjfwaaylzyhzerjbhyn[fsnmlxncwzsdsqp]edevlblbzmwkgkfluke
-qxlppzrvoymnsiyb[ybyeqxwtoberzwvcdlk]zsofrmazkapwiuxwjjn
-jbdmjeyxyksaonmswm[vhxyxtashfdrzjzytoq]jpkbmclxjtprrhmaz
-vxishfigjpmdwufh[oykzgieieiypyrqaxdx]etgleieyrezvbcg[scrtyttykipejzmuhy]oxnektqrkndltaixnj
-jnetcyoxmhjfyfjxm[dezndcwpoghexum]xloobrzxrvanbbh[gvcaufplrrstvrf]jgdhedqsxchoorlai
-enbtwxacyokhcwyhxp[ahjgrmfhavhnhqoqsfs]ahdcbzojcfgzkjfe[gtjphvcbwzsiohlha]lwaphixwqbmbqhyoccv
-arwtwiiowytbbjsumh[iwdhsnllysydgbcuxw]kummpwhpyydfdaf
-laidhzhbdwoezqhi[eccvqcxwasyyzqvhrw]oobigxsojqsyijmjmu[kinacswultmqsxdhw]xlildtoykeuzgzl
-fbwcshbijakfapcqzj[qktwqwrlnuktxjvuvn]nbzsrphskcxzuzho[lrbnsyzvrorznoq]ewytfrszdyhcrhpcx[bmzudjktpnqxqwmblf]xtwqqocsaxoluhsh
-xgnhvwkwhfbprypnak[yuwpjkfdxygltniuepa]mmbkjavsboilcvpp
-hprznssbfrukcvu[mojrsfuktavnbhzty]ipdxnxmtbvsazyx
-tfdicuergiqhvie[wwpqnqkyfyhuqlb]wovoujvgcwuptcqhkd[whhyzgbflhplrff]kezriqiamcvkeifegv[kcbdxrvoharumkgzufn]xypaikbmpsjqcbxrrp
-tkqpijxftrvwkam[yyajdcxgzrkhkroq]qfrbvprhxlpgunqqs
-fvwgqznbhbrmcaubz[lgsawqyuhadojbqwrwt]gzbvdgpwjuwqsgokqy[zpzdukphcvdqgpdoex]atanoaretkhxbyzw
-fispfedprcrygxs[xqiggqkjgjhaskp]thgqnbgscmrcfqjckbw[tvueixxvxlsnaupqed]lshjncmwxgzzczjssh
-fplljoayuqmjtjs[vnlhbmvowousilhym]emygvrnfsofwobaducv[flrnwxzgkghpboubuh]sdndpovsuohytnq
-utkqxfkbxtoudnbh[bjatbltbacnlwzlbjk]eunawwbizxdytndqc[arhtjgntcqetkeikojq]jfooeguervzgzgudb[nhifbismjhcwqyt]xwsxwzwwvtqoadmgvoe
-bxbifxmedhwkesbmjff[ncfbdgsqfejalnqyar]oifushwlnfxghktjhtq[gnapwycvocshetc]zzslupkhadbieerb
-rrotstdgmwqowfmf[zlddfgpxgucuestu]dvlbhinllnkxdybha[aovlzdyhamvvcgm]dzehxcilzoxrmcyhiwb[xkeszyasnqsumpx]bnrsppzfvjhiyafpk
-qgpylzwwdjxmepsc[bumaitztsvayatapvl]gotathwcrjrsknrfuk
-odbkgubddtpxdsgmhvh[mbgpgqafpcrymkkdpsd]ieabelyvewiypbkjm[psowbfplvsxifqwq]szgntjujujycbfy
-urqwuzkruqfgejkdoh[qxxkamiyhedlffzg]hnfntvahsaivnzmawf[mxcrmrqtgmnplma]gxcsbxvqcoxpddj
-qzkfvuxmfneyrpysh[clufxjecvedwwegflp]rcxzfazrzbgogna[ogoplmljfwvizwniudc]yewvacqgzcjgdnmasw
-mgweqpewhvtdjnjdbu[pecantesazignmq]upotybqiovoujemqg[ipzggdcevkbkvpyz]wqtflwovevactij[ednlhfkzrtfwpuignhd]epfijiuwnczwxdmgvzd
-lavqyaejctfofhdend[enxgzalvzelvvxdt]dkrlwjpuipwnqvuv[ishvyxwuhxdxujbgkev]euytwzxkpwccexc
-haibamsiwfwmdvzu[aekmrvauzoxdbtury]tfgjabbgdrwbzde
-gqoyggrpzhfgrkjjw[kwhwkctzmjdpdoeey]ngurqljoormcjarv[bmvadfmdgpwpzfiiv]fkfqchwhedeymsa[etqtnxepdmolklpa]tywoaqpoowybxcoqq
-vnvmbxxccmctcba[ncggihzavxxxrhb]mblrxjgtypycewg[syiizsazwqrhsllezvs]tpzocblnycaokaphz
-ffpbdxvenqkihvvsi[bbukwnounmzzxody]bzfefymopdtkpdm[sjbemcyhrspadzkuwi]xlhinxfjjeajzuqjkuo[zfpeikvvdfptpxe]dhsjhnwlzlcxbkz
-gulvdtkcmjewjchf[auqodvrekgvzxzyiwee]rarumiavqvnbyqu[xywssgnmbeefrqgr]lyyjmkpmqxmjbughzta[avdsmuyfdwvzrzn]qvhfqmazlactaxtxi
-vvqlvlsnrxwhoxfnac[sablzmrjccqvauyjfao]avdnqlseflqxtgb[masnpoqnvjtkreifrvy]lvtoftpiotxcstvu[vohbaippdypuwpkuip]kxffhmrvrbmvhecnui
-kclmgqkaprofpmdm[bhbitgjmddxhbhu]hmasnpqsttrgtmuq
-tvqcqkarkyqtpvea[fjqrifichijyykq]qqtmxszpmovzfvk[xrcoyhzyxwmqwujxp]nzlgwxpkuersepyhy
-zalveeaqakqjhfl[uypjekwlbcplfcasa]sasiztlswzyhvpd[weglkkwlrrvdvfd]mvsdbveypnjsymtjka[kroszrkveyammdqqool]kgmxohwwgmvcdludvdl
-xbroawhwunnamvnaogo[uzdvwckcbkaahqltp]bxudkhzxrykrkffaiiq[ljfeimkibushcpclbia]wztapafqrfdpwcwpyz[xwzhahnbnaxjorpkaj]glhfrkaiizzidtmfi
-cycyarwdelrstoi[rivlkfszzvyljoa]hkjtyvycydwronsgyd
-mbdqighfupmzacpi[keeoafjlwzqeoaryo]vjcwhcjkjkandqir[auactffhpuwzgzm]ybkwzkxyevwrphq
-cpiuxmmwrsjzbyqkfms[buipqvxsetxzsgqi]tzwpfhknlpwmtxzggc[nidtlxvnowvutuqv]qsohatjnnizngzsqxxr[klnzvuognkllhhr]clpjgdupfpanyxwjg
-hhtduiwmfhibnpmhjm[emakclmaqjnvjsjyt]ntebrhiztekglpmhsrg[rgehmkrotjobrtah]gzlybshvhkoznupnhr
-hyzvardyeiddsgk[vszukhazfkwqsodz]psztzqehiwcpifdlna[igstccorevbmgfae]vdapqjiijwygxap
-towtxxuitgwhddsua[bydcnwqycygmimbrut]cvnvgtuiuduzjod[gpazublcnojkfnnvn]rozlfkywwjelmry[wvtxeleixyqstxjqed]vsuvzaskgyooigoczd
-uywuytlehdznyxr[goerwtisqdsinimd]abuktfxdobkfqabm
-rolwzkzesawhyxddo[yuuvalxthkptulugzh]tagfpsdniekrekzkt
-nstbvilzeselffses[cpgyssgpjimcevp]ehfkumlscjuocclfhel
-idvdfrmadfyhafvyixs[igsqckpzuelddtl]eclbbakcdyttbtse[irchopmhiqbeloiqq]lwbecblskhopzyw[yjmdufblseluvukftkv]nnawapbepipwcsfz
-thqwduckwmjtxwwmj[ppnucfmtpcsawxvkago]vojtdpukjwwlnirsvle[cscyjfrxjlgxhyu]fldolxqfbxhigdom[tgacpmzitahxucqpzke]copdqvctocklhvrq
-maseolhlyrjuoqdazl[klgwgcdfwhpwmnlklcx]jycbhtwurlwwsjyuubt[cuabclvzukvmoiniql]pzockwxqjbtadsspl[izzcraalbnmcopcr]cqdxcrkdnwclxcitizq
-ucyccfdgxaciwhx[txuygxhekywmyuaaina]szfdjuddiopneadpot[zpjsnpjtmicknxkybi]lfirzuldnatglheyhnw[rhgqfyfxlaunabfqxl]hplszylhorbrkuy
-vmgeqazfjldqcfif[fuepxyjuuzxkect]ywoxrfdxbyjomjo
-qacfshruytmlwyj[jpqmllbdypmnzqoe]sdhmtuefjbrmvmeby[xkyplnmmmcrcmixkls]motyvnyucleirbnmrys[zdopkcnnuvxmhrg]feeagfdkgorsubr
-knlaaiwxponscqwtqla[jxilqsyolsnanzxvqi]itqqqbrfpcexbnecnkw[bpcxykvtdbxejlcda]mxodmdxzohrturffnwf
-txvqlvddwpcysvkctlu[wvuoeprflcpycbghfv]ksbpnggnitrxkua[hqyiyucnvjqsceml]uwwwbxrjvodohwznlx
-oebxtpwwjtewgkwjbv[omataxkuqenxmxolwe]aiepvclknbgapqh[wywlrbzliilwwvebxbl]ljsiuvllqbjrvqzh
-jznegbplekeeohnf[hegaqbzbjwdhgkouzja]msaozvrtyshcajexwen[cnleoafnzyvbvdfndha]guawhzetoxlxmjwt
-nytoqgolirudokcgok[qjtvenvrstrjjlsbvzq]mwhkktxfsokxxqb[pgswnhmmgzcrgjbqcx]amhrxgwmcnykgpuzfb[dnihosgggajabkoq]jtyxfrifreihydzwjdx
-bxihyluintytvypxhl[kbnizownozfekbhmsp]sjgxqgjbhoftgmbck[knoibzmlipdnfca]ofyxruebaspanxxhakl
-xhrlcwziflvahls[babpaszszfgfywj]gkquumhyqvozkgubcs[gkjczyujqykeifhsylz]fhmvopfsltpzijdw
-ntyxwcfpdgnsyau[eqjxtsfneseakvrf]sbzesbxxrrmpmlazhi
-lwakhsvcamfxiceusua[ymczlpqkoiophom]fiybjcxhftziivsrsok[sejyfiorjpptboakf]ipsamdcnfnlhger
-ncgeewwfszytkag[kizbzwnxepsvdxsbzbm]fofhxxpymrbqvcco[swphuoqvhbpghtku]hvxqclwgtxxqywhhs[ibvpkuiylqazccin]oftqdvkbzdkmycntx
-yhnhzwjjsiqngmhe[jtkcipgiclbqublpfs]glxyczwidjilkqoa[ytsphdvgnawjsctty]xdofsnhnpsylvmso[pmjrjgiwhqfegydcs]ylfcipikfzvmpjn
-pwlhyvxnneepoqexj[jsnwzbjxibgqnpjgdf]qndnlnzxewcrjio[hccvunupvbcyptqdihc]rfhmapmentuhoiv[kohfhnoakeglvnasojm]oggzhzybuuupwdrjrtj
-eyglfycgaoqwsqqnue[woaxqinxtvrhsbjjvnk]cfnkhvorifhxedbmbmq
-nrqqggalpihpjyu[dqbqopedkxhoqqnp]qguazmdjtenlvzgoemw[ccjlmsdaajwghuikrnp]xrjcyfkrrfxddnjn
-wkiymdlskwyjrft[ovucvqbenolfvvu]tzymrvmekxnlptynj[dupyullbzepmmrmgwe]fnjtcvrvzstijxq[elzfqhyjdyprzfxa]uszwjwzbbzgpcavynk
-jrdliqwwffvgzpu[mxoivfuwuqvtxqmbbs]tvtlqzqgwzgshkpw[hspnaspqnjvwybzfzxd]clkhutlibvxzxfrgg[yujteartlwdhzfgsn]lyfrxjqcpkcvcsnsw
-gtfhmxlpptgvgwob[xlzqaoawpmmjwszqmhm]xalfbbroilfuzzqm
-gqxmhinpeppmdhbdt[cpoaeltrlzmfgsipvg]iqlrhncmkmjijjh[xsbdusetrksrxjiofj]zndjqyxwvmsnrbcyrmh[qnbxczovjlrrvilks]rfpihmkwzmgxcynu
-abcncmuhelkxeph[crlbybjylvbgtsk]yvnbosicedmzurqcm
-fbhtialrsrrtpwcxxh[pisambikwkesdtbsj]zcdseybwrdrkxeiylg
-sehxfywgpznuuypj[upswvzwnkinocjk]nabhugsxhitlhis[ilrwksgypfqgfexvuhv]torregbntatolgchv[kkimpdkcxhsxyuczj]xpfacbmnrhcxnbgwis
-hldgiynbgrfjcunattg[nwfovbxygpkwmxnulm]xleqlwcajqwnncww[waoaudnttcfdktcd]yikfvdmekcexcrhsi[sntclwlhouhyjrob]wqpclaistsngwfmf
-izblnsxlmqjhxvx[qpmqqzakbjpbapwtlel]vmriwjoqlrttqpoxay[ylqzxxdpycurefadv]ftcuduceaycwejp
-jqjtnshmtsvokhwnpr[bxprgnaltcsqdkceygx]udqckcknpvegeryj[zvjfvligrqxnpypoerp]zhzwojzkckjwgdyu
-ohxpnvtduqvsihjt[eczkrdqlgyddymrdjfj]zzqhfijxsgoisbwpd[lysfkgekxvqspagq]kemxkdqxetnkyctjp[bknjdsvchfxflsrkuum]wmxncxrwwxxxgza
-xnulgysrzxheppsiril[hdxgzhscbjhkcntrmsy]vhedyohrrqclnoe[nnuxdbtlbjvaddo]xivkwdwvmkplsvfaal[omihwmflpvrshkcoci]hekqpjtrjlsaomfd
-hfyusspcypxdbgzb[cxbfccrumbqqqxb]ygsuxbxdfkisqwstqp[lqctoagvchrmggtmo]dgmcjusbvlmlvkdmnpu
-vmpobkctlhdwqjyb[dxeinhrldspqhgeu]ndglldouuoawkiwtask[szkthuhxdkmfqoqwwgq]zwjhzselzvirjadzvr[rholepzsidriqmlepo]yhbxhcmbkvripyusams
-mzscivdohxhfkdqet[imwvpkunuzbhbaj]tohxwppjtsjykxrj[nhonsbadufgsqiysn]cogovslrrwexgzujn
-pzsteeyowqmhzaqao[qsbohgqamrksizzs]vscfiltkxbxwbdlold[psofpwfkxhsxllnz]odwbidqaqpuchaew[kruwykloeqpcrjzon]famaoipldevywnouele
-tuqiapyobwqwpwbqqu[ycphsbdcwbmklro]medgafihivwegukhfof
-lficcecamifbjwk[sdguwtafkigjiapxagj]hmeqrhxptojctevbdbu[zvxeefaytjajdpwi]uliqtzilzcnwmbfusnm
-pvyzncrszmuienoptx[bigapupzitygcxstqx]rqikselsbelyfjdm[lyqmdmfyofksmecg]wjceogefnlgelpguu
-hmddytvxqrazumnnr[hpeurkbdfejhlfvg]pedwizmuhmtpdwh[efikgkrhnagpmqypzx]ltlncfegswhwcxa[bakxhwhtvxcwcxtmofk]zwjvbxyvljlfaie
-oxgoszggsifsgrck[gruwptjveewmfewguku]otchieijhojsyxi
-kunxbbrdhibhtlknrq[tmtsuhwakksyets]xdugxmqcstdallfqgq[tticbbqirncbjtx]knkygxawcwdhefesu[rerbfffgddyehtvl]yasblwlhikbvjidgku
-qoqnwslopcpytqy[zngrksptgviifcwbw]nuislpzizqikmgn
-khmctigslwdgzghkbk[veaqghpizqwjxlwcf]aymehevjgpjgwruhyc[hzgzilbhyoazljsk]jocgjmooxqxayzsa
-xodvowdhvnquwtma[kvlbfwwzeuucthg]djlyemkbpudpjlnrkv[cbaqlhuwfwwfvbdewx]vsjvsxsizgwsakpx[pzyowqndqdbkdakdney]eeylqpqpuqvdyyr
-cmdykdqavxgeismtlua[iwviddbtauhirfcabh]fhpsinbnwrcpxdho[tdbgrmgscvzukjl]rxupjtwbwmtgnltbjp[vgzucvscpzgjnvg]zftzsshpmizeksiz
-kfzmwzmzdpxabvi[ftkotbrorpkpfxzbg]hgbrsewdgnnqhxvueya[lkjknzgrbuzjqxwqseg]oyzaqahfuqtpbzi[yflzhfxwkugpetsqli]nowgjqaquqhrlxz
-ktphtjqwsitgbaii[tjwcbyfrpupwkvzrol]smlczhhekwxtlvxdfn[mqfupholnlvfhuv]mvdhzncezgunydrk
-lrvdftzasxbpfgb[pglmengmgfbnzxz]hbasbstksqkkqpwkcbp
-siheyyvdmjiubhlapns[xfcaevnaoexubdar]pgbougfzkmlzjqygdta
-tblrafqbjhwzbwbe[iefobcqdrypwnwidvm]olrzzrqgkwiefngf[asvmlckavcwtuosgkrm]esqsgwmiyxncjjqsqp
-alvaycnbqdlvvnwcnq[jwxzjzgpnzmcampkye]hepmdlzjvxhboxh
-mtfkavmnrxyfzvkes[gmwvavomsyolkahey]dnqosibjkplwzjojus
-gbckujjuhwnvovpfqw[qwievsrrtusgzbscuf]bnrjcovodutibjtq[fxteivdfkpixonphrog]mnumbxikkkyeositn
-remzamtzlhwpndrknl[xgrbcgdvlvrcdrpi]tnzimcpmxzaxsgpu[klvglrrepqxiiewn]lozcwxnclirneaky[nevhtplqsmuhykzqxf]fgmsbwdgfwjftndzi
-aybmjypdrytigyyip[zafsvprjirkniuwr]wfdyfncywtdtzezdbtm[umbxrtflhquwdofgut]lyjixlycobwpwvhfp[xoxtkyhvwqgawmike]bfqtgcxvcfwtdpl
-tugswvsgbsfbiyzcm[akmlddjckugylrea]fyzltfupxnvagbshlb
-lcgvlozzzzpzxeoee[zsvjydznyoadkvyxlsq]wqmgagbkerqyxjnnx[isukybwewezizpll]odqwazjphoaqhzltms[gtqeysqpwuuohdbhcnx]yqtvojobgaluizidrbn
-agnxxgirnprujhsk[hagcvuqcwyhmkdqmn]zehvuytegijhnfqnk[ytlokgpipjcviulp]hsomdskdngoysnbmg[wztsneomppnewhrl]gpkauttapxhcjrsicvy
-cvnowinufvrjpiqtq[kuavqbtrcelpcuasmk]poksbapbwverccds[qdddbhewvxgfoldib]mthrvrsfygbhlwlkcs[zhivcpxibufugkpigzs]qffdjnrsoigwxqhaf
-kovjiaxxjvzmzvmn[cmrbwjccgphtstvaiq]onqfbpryjertymd[sgmcnqbseodopnnd]gbgealygrgjnamdq[yrjuwjfvmsmgbur]ldiztdwrwmeqrohy
-tluglhveqluxpiy[wrsgxdrzuigwzfsby]bmhqmnbecjnyutpwlbk[iifejjworkzrsaj]illltueflutteej[adfixnftjenvyrigmkv]zgsqagrctomzublltjm
-fhcnrceynkcnnjxj[jrevstsodmhopao]zqapczirtxrunfhl
-rzmxbxurpdmzgef[agevdburkuvnsrof]rhclixqpruwxuanwxct
-vxejrazzpddvobzlq[dpspaddyabqzrjgvv]elcpgozzkqjsasufcv
-iaodnwpcpresylkhyy[dltvlrxbvnqslzzyvox]qownkehbhjprbzf
-kqbwgctrhxwrkkedau[occltggonhshykttsrr]snshslgqtlgejanlg
-jpesfmiguicqdcnkm[oawppiwdsmoidvkcre]wfifgnhqeisplngcjkr[wevtsiuznmpapke]dqgxavmudniuaml
-ddewtwhdfjatjlgrt[ceurnauksrgwzondnb]znsvkdkwsimbmdxfkh
-hwjwuhdokecprunbju[jhftguwujsuetdriyu]vcgpesthcnwuwpwes
-cgizaalsahfzkcxab[nehrqohgkmbxiufyco]xbnclpuepsanwrwjoo[kvdifptokbtlihgx]hgynbeebmdwbkwrfbh[rlypefyljzefnft]wwevofyexvbojyc
-ckxkzlpwrfhwzuep[etqgjhcmexxvaccx]qqkhjttaudjpbjboeo[gihevbqqqumfythcfm]hraqbarwvqnmvtiy[cbnfqzxyjcpmwvu]lrugefybnoiopvzi
-bbmhfnwnuhvdgmoibjq[eugipbrefcqiniulz]frkuvbhbdiaoaqdcaq[ksqqrrhjltlxvet]cdjhqazjzfrphjzjr[aspkvkpmwhkzxfeic]vkhbjolvoddtaasvs
-rxkbkkhnaiudojzsr[ecdvrnjjyzyqjxf]uxctotuqtvambwea
-saknwxxhcybeglwr[molhqlfbvopapnuco]hbbaomsdwcfwvoi[rlvhmvffqcyftricsyb]pkeuoigxjpwfbffif
-pylywhhzktocomu[sehthaaqwkyerucg]cwfmpqudeylrtavze
-vmawzgbfmmsivwfqclb[fpvwdbyrfjgmidxw]btatkdonphkxtprxfsj
-kspofpgsttceoft[fcqagpbfoujjulhp]fkbxvsbuwioyngydy[hnoxyyuhdviahwsf]gustmoflyrtelseo
-xyiofnffruqapvtgnr[wmigiedeszezgunm]vydqpobqqrisgtt[kolobhezpsiolofxrlq]abrzbbmtlqvuhxl
-enzmvjyrzypbbtmbvx[izvhoqpjgqgmmvricf]dbghstbtqgqawqjr[irvprevogenchjy]gbiwvcxncbjjvwmshsx
-uavpufepuqdbjedp[itqmeflkorinwdpjwp]hlrnsxymcnxwulsmfk[bayxjuxhtpcwafadefe]srrkibtivlskepjxamu
-dlwhxttrwjlxlit[atmcusmqvonodkfwqvb]ilfdsqjtjbimpaqht[zsbqjwsrgxlxbjqmulb]feblytbapctmfuao
-zfzicvjnuuugutgymp[owgyvyjfhrqpuukkgok]dfkfwodxgvrdqelliaa[xaumszuhzjjsxwe]ihaxfxpxjxcbhjg
-gmsgnyadjfimoemyzt[fjtprppdzhkorpqoo]eyxayeizyntiumrgk
-wvdatykekdfednl[kwpjrdcfjjklpdofpq]lidlhawqalcyigapvv[ukqjuzvvxehbwzhsci]rdrfhnobcwtvivgcc
-wvqxpnxpjmzfnfy[xgtkzusumupupuqvn]vmxceafgkxhnosupdkj
-ypfaupbycoerlpnhvk[pjrtdmwsmsckcfongoo]bjxlfxbekwvfruvy[uccfekaoczxlyigfs]gnvkjcwikenkmvgrpdj[yrtbyzxjkmpewjpbstp]nfwcwhereraqwxu
-cqxbsrqdgqudcci[olptuqqvfgunmstjc]xnppdflvdcjfviaemlm
-asywjbgrfvbfnkhnc[euubbvzujqjnsxtmel]gwxqasfbyjazgqodfh
-gvnexriimytwvefmo[dtuxofcgyfnaiibqx]iaaodpjwjnkbrqsmdzp[nuvnumldfhglafg]dpcqqfdrekqdfyfe
-hnwaqtrqgztvegfhj[mzqkcvhmqhzwmhlkc]kytpmyhzrvtytwvfkqk
-latjxjyjkwwnvyrbl[bjnilknxprpwziowcjn]zpdvccsjiuhfwrkn
-nowozzvrysgsfhxd[lhgxyitirlsyljl]nodxmmwtydaqkoxvu[vgbjtbbjqgfbssytsk]gpzprrvyvseifydxz
-sjihqhaecgshhhdrbto[goawszmxrrdtoxq]qvywgrnewpsordounhw[oaxydcsvrzzunbizz]nzisqsdrmmsaqwt[nmyxmrkeainaqyfe]eacdicawhfuobezyao
-oyztkiwsxqcufgqk[iyxqvktohfnoymgisag]acfhjawamdhawitvjg[npflzsugezpsmunukqa]vhhxnunvyxjtehyvv
-jzfmuzdlemckyiccan[rykdnvtoavzjtjxtx]vcmkcuioriltvpzzxqb[jdgqayewkwcqpkg]ulsujrvqzsmnpqgvg[lshytukyfqhnjehk]cpwbeyiudngpkrl
-uruvigtkkoqkfdbqkre[wyvcwnxixwkacuu]ajvziogdmzueetqzxxx[fyevgfzreomzjbsumi]ahbhcyjbadiacwjplq[quesxyjqfbckmnt]oqehbkjyoxsyczfta
-xzqfptkjpiknvkyzzt[hklpsitbnhlozgp]pkbgrwmqrbhohay[mhphptvyseydwfq]ehswmqarsalmcatb
-ohahitbjjxlnkyb[umyhhgtcasbfbxqx]dxyhbvpjjatkwvpkyry
-bcixbnnzlqxkisv[tapovjggqzlwlmc]vwnosivvmdcfsor[uaapwzmzarenaplcjp]jdcpazyedcdkdinrrz
-kdofbgwblzpnocgpq[scfdzdrueknbdud]axnfckaaghmrpfmk
-fisxkiplryvtnrvm[sypuemhvxvohsapkccc]exrrwesixcvnhzpopk[hpsilxrztuukzksyax]lixfijobrlgmonzui
-zjnlscyhmjmoofha[ezglbbmqulybnvf]qvbharzbfbbustsm[tdeqjfbfxeiknfr]chpwwntytidtnnjf
-qildxsfzfukzbmre[jykfpbbfelicvkqov]pyemzfzobutliokrrox[uplajddwknupdnfje]vombwrjguiukbiwozj[kcutkvgruxqqcuykn]zsbonxyerpjkfpnxchj
-pdmfyadwrblhcvecezb[fhqgurbenzitepyh]xhhtisxbusntgekaps[yefgbqwocpsexwq]emmlcuwjwvluecbfo[ohehzdjljocucatf]zmgbwenmeuiftywp
-xhrulprzdnbbzenux[ptzrrcmdscsuryk]ognjzqtletsyrcy[snpqabmryhyvcyztmd]lhkwhjylportbbo
-xphruwdeuqibzdss[ubuaiomstyuqgcgzyn]upkpgfqmamubaqhkao[ohjojarsqpjldirf]ianntdwcgclwmyzwjh[qqeajbudidxsqfw]nenqeljkdyjucrqnsgd
-xuydzitbfqwpaafru[jasqmetengbkljylhse]wkqxkjwkoipjfhkafnt[uolbyhzhmtupebneng]pcjjrczeczmoenefu
-ievtjpcjrlfqwisl[pzhzabrlrdeadbtpyec]sowfrknejwbuvgs
-qcuiylijqwfcqwjisqr[icjobpbxzjzuaxc]pcrdpfgwajrudfhxb[oiqtbvhfvitjvuts]ctwyepzbqlrtwuclz[smugjsqssswocjyc]lhlncivlmhmoexsrd
-yqmqbdhiciqlgdmf[rywqydtlwdocdih]ofxwyqckxktvcrlxsx[rxupkwzkvwrmhuiz]znbksfkkqxephhb
-bgzhbpweidflkmmjc[gxozhwikjiygyrm]vykpmxdywyfummana[mcqteiumnmmoyiwtcqw]ntczagaqoprodvhxbl
-gvtyicyxseltoqfgk[eozvokbnjytodemeo]ogofokdupjyhzdgrk[fucnzhyuqkcakflcky]zfgxqfofzfdxyzetc[kdgpxyithocprbr]rpqlihcmgthswhvz
-svrwqsrlntabucyssj[trbqnxxvtfiatqd]isjqyfxsoarfetrtgmm[lnwqkkgqucipvocrk]cdcsuvgwvzurnxleuus[wqjewzmcvqhhgwawyo]arzledaetbnpjmwjrl
-jttgsvurypqumflcm[ccznbkqklwsxmva]ooughikefyugfvz[rzsyqmtahohpmnq]kyotvedmsjfshan[bwadbneyfitukleqbyg]oyeonratlyvtfbcrs
-rpbklfvsjmisbnowf[vupfpfstcrfdxipqi]wuftflxmtftrcrb
-igqcfvsqbbvpmgflu[kremgawldkinlqnr]ogcijqlgvrvbloj
-ncjbiybzlsophbdemtc[zszwhtluxpobqclp]unvkyqmemvucdtwt[bzmibpkgwokausrgo]btnixophsknmjrqozwt
-gxapkeestvvhodxnp[xlvglgrlzjdrpjrps]sephfhztipqaftxnqp
-zalwvceeodddhqqyrk[znydhdhxhprlmip]bjijtiotyvfgyiou[odtkdhdrwuzpgwkf]kldnjprzjewdeyzmdua[wsdyljqvdmfdenajaks]zcvlwqkrytjsryab
-schsgvlniqevsrjfkxw[drtzpizdeopipceke]bduaeqelcxyvykt[vhoefhavfmuhjkgooub]tzgcfhwkfuvwcif
-wocmjawhtyhxksjiktg[hftunpxmlvyxauvnfj]spefcqpimqgjhnou[gmzejgwtyavnatavwju]vccngpxjmmxlruac
-igqxjgofompnnrsaxoh[lmmrwzhovfloeps]loixvtpiyzagyvgq[yaiiiuvpjpuldqk]jwpjsgmvglkzuiepr
-jgvoejrytatxvfqwt[hinkejefiqlrpqy]cgmvjuyjejpinjunld[qcdmwbqbqusirlxh]udhmheqsvmqmczbbofh
-qffigxgklwwslnts[gwhobujjovmwfmrg]menqzjmmxrgchttltek[fwegvyhranuutxgxec]fwzgoobvkjekogpfscr
-qlphzfkuyrhvkmsfxmb[unvtasxalhelbiw]gwqjfeftpkxtfiru[dhkyfsvpktyrttk]mypdaocnergxlnbodpi
-pxdqzshlqhkrhzwcqkb[tudazezhnktsxxexyq]ybzclsifzrgndcaxq[ewlslzvwnqqwvljgo]nwnyptvummeraaoow
-ysivygqkobbtznpxy[ydbgipznapsnkzfq]upackoodqdqmpvbgc[qnzvzwnbwrvgvwn]imcsgjzzaeltfxyhbx
-hcqlfxoahajthjesrdy[nammwfgfdqnjewunwz]pdzecgfgatymrrntt
-vwpdygtfuvbryipr[ehziaqbphyzzdolbfsv]rqxvfvafrauzncapu[dvqlgdgkzgpbjuihbl]sdtldsvjvvtlvjdgd
-rajovnvmoxozjldjd[czqnvirgxkydoaaxr]dejvwkgmpwqvnvnzzsb[zwxifotwvljvpkxae]taoulidxuvefjqxjdu
-jywqykajspyzvcw[jkqxjzfmvcrsqszgim]fncjgfxwbvfdwujhooa[otrkhmvyonynxsyap]skgdhtgcwmzixpdgmjh
-wbkndoivecgnkrid[tpdmkrufmawhpijryk]untkposunbiezua[njngjktbavkmsozyy]dqotrtnnoxxejcz[nyinrkqzxnsaahwa]zpdibcyegeumjjgowz
-gexzzkajyulforpnmb[mwihfmwsdpjjsnaxmme]xavowvaqybvqcqescdq[hjymwnhorqcdkoxv]myycpwmcpxinhru[koqbxfaoankdcpi]hgdktcvvxvoolccqcy
-alpcsvxjoouuhjrgzo[blnjpvnbtcufzsxqn]ipijmuwbljfwuxotk[sgpwkohrsfeypqc]vqlggpiytetmkifwc
-ixbszxrkuuzvvstrn[kdgfwhiapjrtiervwi]iugjmuvqljcbnmumal[ajgjfwerxsqqyrxuvob]qcdagpdvlnicajqcooo[qtuiukkwxyevxmgijtm]bgfetysdwvceqjc
-pdbbmswfeutwunlcm[ywbxptxhgqpjkpeenbx]wzzaxgyiztbdftpm[lbeexhgaqvezxfef]fqktklfxugwifcfaio[ucpewlhkqnbsigioumy]cawftwrwmbnfmzmhd
-xmtduxirbkbxjrqkvg[ythlqfokwjfwowrq]dguxbidgwelcrbxahi[mdumdnvbcsicvki]yhdgylmjisngrkcnbne
-yzilepuvsfipivcroyu[czocwppwvwxjadgqpc]uoypwqxrpcpdzmsyyqx[mzjaguojtnjobsvpdx]vnsywqfvrnpipenwka[dtiayvtdtuyeqlddh]wpxkwbagfqncorkomi
-qyebzyuerdwfocyr[cayytpduwkezuatyb]nuazweyhjemncuqpp[gwadeldyzfsvyqyk]gqjdzsuylxshtoayat
-eliktfnkrxvywmvr[tlnexbwvbbdeupd]gynrdmuppfbawfcb[dqsidilgsixsudputz]odwsmpcptosjdhrp[mumunqhddegofkrpabd]bnetmxiqkwhtcsgpuui
-wuozzupdubqhnbm[siwvzeelxcodzissd]niswczzlnrokkhrnd
-bjxpecnvcntfbqdyqy[hjawjkugajcwmouz]ipusnakbyyxmqhyislo[xcafwiwiabdlxpaqqo]vaemogopzemmnilw
-dlczcabztkrsdznjlcd[atcfirjxoipnvnoobjr]ujnimmhscetvevwpj[vnbwetjzberefmavwuy]penzvgcewibypznzpv[rqsqdxopumiqfftcb]qrotltpgkmzcndx
-juqqbnfozoikxscqata[cgretlqkyynhwhmk]yiehuxyidjlzpjs[jdnlbxkxvsufsduoulo]ymrfqienfjrrgraxfh[jlopugujyekjzrfet]hqlqjkulbfsnnxyksp
-epcyjxlwzmxwlulhx[pxjecldoxjwjkrndmir]baneyblyinubutjdi[cufdnjpvlwbfqbulb]dbzgyztjopciduxuo[paqntbrciorikaw]jbpsfzmzxvxlrgj
-euufrqxfhnfdzlawui[zwgpectzebtpxfwbym]btexmfeuilnoqsbgmz[hvnxaanolwzkygx]hurfyrjkanhjlaz[vdmsczzhobknlhoslpg]bgitrvjaildspbz
-gaweiazdfuixwqo[qedebtjxaewtracsgk]qnmuhjsbvqvcnov[aabcxwfcazxjqajv]xlhkehyvjohrqkbzyow
-uqxzgyclomagldxv[amcvkpboneuscronwcs]qbeqgbmrdcdtvsc
-xgkenttkfbysllows[bamxgmibkgysryjebgr]dhfiqnlocykclbofdzj
-ppyfzqrjpxgouxmsduv[euokodyohaiajyvsrz]xfxsvtjasezevkjwjk
-vcsgnfhhjkjssirc[kfdwqpdjaejqbfaxu]riqzqfwmwnsiqgamwm
-tvxtikdqugadgbux[niaxwpplrlwrnipcnnc]tcunnqamexertrdm[xkxjepysgqqdphb]vnxvtxntrsqrfjaz[akxkeqvlxgaorhqnd]sfhwarxbzfbtftuflr
-lwklfaiawghiwljxxow[oqmepnydmfkjbgkrjaj]clhguzdrfrmcoslsghh
-eqtzgxqoviujmxpg[pkkbcdmlkvbcppqrm]zjzmsjmxdkaknido[sellbmhvshvqdsslyq]xuokcgfaxstavgkni
-gstjodvjotzmvnm[mfvosfrnlksillaqs]riecejrjvhdrjvdl[sznhzufedvbdhbeq]msgvdfzoxeykqyx
-ivwoejkryedvxpi[autbisivgebnntgixu]papdjtvhwtxgipbhes
-apzalddmyxxmfysm[cdzptytpjydinlfdxa]gnjxiwepetlucfl[izgqnvcdaqkzgtpvwvk]cdxqaizjmvdnxigkmvm[cdybhclfttdchsbnyzs]xlqahfrmgnowlgba
-slubhmrmovzbgdw[dehwvsngduvcfkontgs]zeiqylnomqgevvikm[oubxjfwewqtdjwacb]mqjinmndnakfemp[mccapdxlrmrevbuaas]hcjdpjgnoguztrdjgbt
-vqeogkqjnfuayfpioi[rnkeynfubkpmjalnz]ybrwpzhiscwtyue[vnhkeaqwzawibjnvnos]ctmmursouxvylixiqko[voqlscgdnaelsbxcshf]azssljeollyzjjwkxin
-sanarwdtnkaemdsoj[ojswyaadxpnpzcm]acjrepbjwnnpncdf
-uvankqvbgxtgignh[zaimktolqipleig]mobimtizmlgqetrxkft[kooknezmesqkqisip]jdpwwsisdorcrryvyjn
-lkiqyvxlouvphqf[wiibwrighxagoiod]mavajklcesvhiytvcx[ntesmbqoxkadtth]kovhcrsmmtllhai
-ilzqxrlibfavovp[hrdmyejnxrlntti]yqmycbqlyitgkumdm
-oslndtyjgissmwhqbo[lguvaxjavhlklnqvd]cbmjzevkakhfauq[huujtqleuzhwcbpxjf]hiitxzclsgphiembgwx[ixccjsoybxmjmufm]knmagcfohytzcoq
-eutljtdlueiugunxsy[bmbgyvpiruvvuezir]vksxzmgftqglhrowpk[wphxqgxjmzhuqrwhce]giazmdryyjldglcivd[nsicphjzfpfzlhfymh]pfpeazmsdcttsutbs
-tmdniznfpsrdaivxpcp[nlebmzzfjfklqixhk]sbusrwexlbpswiyslbh[tuvimwrkchmarbvl]ykhoceojfjugoim
-vjkixsnkgnhzcsj[eqauuxevvcbzmlrvxk]owiikpkahbpkpuhkmns
-yiomyydjxljwyxoeh[rxyahvmloktamapez]ygtodyeyjtqusou[esemeduybcbngynmzl]rxszjfhelknuyjq
-hayzvqcfdjowlfeavo[mmcaawmtqthurqvmlfq]kbdpwcduhsjfbskcin[sueeedwjrdazxpae]drtfzfbefgvneiiqtsn
-lfsgnugdavjvstpk[usjflghmtbzdzavzgos]vajnuirkzezjgkst[ixiusdyawuqkbnacri]yfhtwiifnoltnygk
-fqvyvpipisvelyjfa[xewusykjjogfsupar]icdydlsidbisscyn[bpibwwfzoqajtnxlad]potpbswobrhcyvy
-wozhxjyiybczbhbqvd[kfsajcbxdespfdewbjw]afcsihkfitjosfwxb[fngvcuammwspeglx]xizamsngscxtprjwkq
-kmakicivcpvmjokl[rnsobihgweztudwrql]wytavzsniyqrdrxu
-nawqmyenftpbvxo[nsztprtyzoacbxy]jiwvrmgzztoisveafzh[kgpykqugwgvfkztnnz]qqmehjutfdzzowkof
-mxddcacabljlmyxmpn[zdlffviwrbhbjhl]niubaphkzsiybwkmh[ysxwkjpjhpyjmosgeo]kkhqupjsegymyxfh[sxxdsrtuwgsznnvhuy]licmdzzrtcxkgce
-hkvugidmuerakcmmsn[mkmrvpqxfoghbyxr]brkgsmexzyvqztplvgo
-inbjfdjjfofwckfckfo[nhjqvxeoedsfzfpwt]snlalnxxyjihecmxl[qtoxbcyxxtvuliams]bijqmocptaquusurml
-wmwfxoaocwtzuhvenl[yzpbmaoazbchjxozl]oulzkybjweqqzml[ydkamvkncxomqsibme]fcuomzdfejvijxeniaf
-clyxvevuyzylpdud[jmwhfhkzrzzkawp]nwcvtlwlwnbebgdz[cbnfsolnppgafml]mxhbrzrialopbbk
-ekyvudgmgzgiomwt[ebcbzzamsuhycbcvc]gzmmgrqbbuvbzfebh[lyuflvjhaxkfxkv]bvnmyumtjzismbtig[nqoxegjljmzarvyowo]rldakoyzzgansfefpwr
-wjhfgmicaoysnhmcer[kocbthyqjwsefyepgqh]vvzlwheralmhnixsb[adysumyfpsahmkntv]bnzgyilfgsepwvrdbdo[yqcnxfvzlpjxnvv]syedcecdzbffhmpztd
-qdmvnazvvyyxqjkm[lcmgrtbttzwijqf]gjacmuqivbcttnp[uduzbmcdayazzpr]vabqjkbgwnjophdxwvr[yyljnrcxwwcehamtg]psdjpizyavaebua
-fzjlpppzspuaflfwtv[dqmrdnatqlqnvowh]bevfgmojlmxmvfqb[smrcvucejxdrppkldvg]nbagvxquhrilbzi[dtbbwkaqepopjtgsgnz]zebxmxzzszbxtqeyjmd
-kipuoxmzbydfycmkxcx[bfmjtzvthijzhezx]aiwnfmjhetyrdahmi
-hiekvarctkixnmypau[dafmuxavuaosooos]czvsosvafizsjiouwi
-epzppyfkcwcqiirpm[drxvceywherxdpnxl]pzylclelnhztrgnqb[qrmfgrtyqmlnsggg]seaeqafycqwjfccuyhv[fnwvqeftfesdvyu]djdlucfogiqnrblz
-ihjtuvxjkvzqdpepjd[xzmyhwkdjooosritpw]rsvwysjoukgevdeve
-wdgepzzfwonrsxprc[oefuycfwngwkrgklo]fbckfdmwzzwfiinlfhw[mjebaresrtulcvkeb]aqxnxzpnqukspcol[hpfnupcjrkswiwlgzz]xbnwmtcsqwbpkxys
-nbaxkwtbtodcuecg[xqoetzqgjhxmuvfvnoa]edvwhehydqhhfjm[xyepeppmsepsaixyisi]txxbbqwefwuffdztlnc
-aqeknneydrvnameefot[dduhtgzqtjyggmr]ausnandgijmikvgd[jjvsfofhypkfrrc]rgzmkiqggfaesoznlxl[przqmabciaxkcunhy]cnntseafxmnjldcp
-rxilrztnhgzclsgy[yaxsuppphljrtcxev]mqyqgjopdetsxzmutjk[adyfostrkvhuajndjaw]ikumnitoxctaqcpop
-ntotlcdwgtsgotovhyj[wgduvgtqijgobem]hhdytbkiplykiejg[sntkfbyrzgguijtwmm]mpxnepfkhssujwhegbq[sxpsxodobizsvppqptl]uqlqlsopbfmgliw
-wbyugpjhymzlgbl[zdoddxxbnxqimlo]tyaobecgkbvrmgajpga[asriovkglwqiukcxtjk]nvjqkrzxwicfzdr[vzqasgjrafilljt]eobbqeenineqwps
-xbtwnvkwrlnwseaids[znlftryxezmidoc]suigxfrnxfzeudpi[ahlshriqmozkpiogtc]zpjiwsbdawhjynju
-drjfebkgnrcuqyzpezw[hnweqviwyjtfrwpu]popubobnviqwkqfv[plaxjplhmhjqjmqjsh]idacejabrvhfteelbiu[hhxwpwgvjcncpjcovv]tqyykiwalnnkoniju
-fwdnjlvptzmxpwvsli[eidmcurldxszfvvhjf]bshskptweuzuqtjym[dpwmmspdxpiqidrfz]bulnlyngfaybqfinqn
-khvidctisgemoswq[vzknkycuuvznnjkzay]rvzkmucboqomxkmtuvv
-ymfxlhojyjfqvctzue[sihfpembvmdtdda]wezkljquqtkcyiar
-cgzdjkbnmhptcggqib[autoeqiibhxdief]zapmbimuvhywdtsbtm
-gilwnvmvdyftcdmvaql[esmtawtmepovyih]quztpmdplotzlszav
-sfsncarxehtgmutj[aqauaojoqabkguvan]olgokvyhpfjzyqgvbcy[fsfdkbxhstvxlkzb]ozwgbzlhrocqpjoseq
-shzexlixgxazcobmdvz[bvrebdcpytgplvii]gxdgzyoqpmkqznz[wuywofxihsgxgpcksgh]lwqsslamcrmkobn
-pkjlltvbsjnfarycgf[gwkayyieahfowbrgr]ccgyjvjbdeoilsznvbi[njniljtubngiuwlil]kosrulvapzdufvq
-clhvakestwquwywsohs[ubwecsjptinhzngw]dvjcvukpkdrgpbeua[svetegijnnbtetpgfu]nfejtethkqavpol
-vksryzexymetdykenw[etxzvunetbovrwttr]pnmwnldqzmxzjldnmh[vnskreneiwajgmd]rwbeletsldocxguy[agccpaxhrlfokpt]wembexaqbprlrzg
-wrxyiatlpvvcuroguv[hfcsmxesvpwfgtpqip]jbspeicucxtbnti
-gbxyskaitzeogoej[drokshekgcpxpgktoi]ivxtocmlrugoguf
-sfzpstesdmegcuhn[drrpxmsfpcjvqerjb]jqcvoeifgceremgz[chsbisfayixexqer]qyhonslazxrkagpp
-bfufgciknfkthfbr[tlfmuebscorrclekjfx]offqunmqlcetebpov[bsbmhnbmmqmdbpnt]knkjsvpmffjqvtqpk[bryxvufxbsocwnd]hkxplkqhsymumxarn
-ftafmqgtmaazvmstfq[qxsvdxplpesqzqg]yrbkrhtzaqtygxjheuo
-xqgmldfvsmitjzhbr[yrwujpzkzksxdbthk]jblnpmdcljgadym
-ijtilnlhxlkhoaftet[rgzfrfsilxhwgpzx]gmdwwndlvtvvtdimd[wyghkhzahfwpaknrxiy]ekpkylqvvxypaszcozp[hjdwslazthbzhdimne]xuptxflgcjgdajfgqa
-ceklxvygwnkfrqvwd[qxjqndmhxzvhicvcf]lvrzumjuaawtgviue[xdvdtoulmeaaiiuqa]xveikrwzicxctyy
-pdvdkirojjubchc[iylcutkspnuquwdc]uzbtxemzazuwottv[sojezpwrsstkdwkses]laokggzzeaobwfus
-ibuowtqicxqiifze[emohxvujvolopghkrgw]secpljnouzblzup[xvpvnqvnsgsnmhwdpbn]ykpvwjlhtpdjlflxvye
-botbhhrfjqjqwdgmeu[itwjgbhzrqnnagvy]pzexftzhniligeyd[egtdkuktihxgmdd]cumzxbfgryzedtsc
-dgvuwphikpupaovhovx[nbwxxhepxfzlxcoma]vypmvuopklupuzlk[plkvxscxriyzeln]sopaaxvckgcbiahm[gpafvifmxvjouczus]uyqhgsdxkcylwle
-gufjlajgktlwahsa[kwtpvwbvjzpmpbstiyj]nqkkgajutaofdauzmfq[zihotkwlyixmfsp]fezlipznjthttsiwpj
-lqriaqvyvawemnogd[gyqqrvivtuxxbzf]xqrrsgnxbpmjsgqqr[zfwpyfwojhemhmyoajq]pyninwzcjzypmygy[qzftysfhztknzjo]zyybzurfxiolsik
-iojvqxazkhdwzed[jnnntfrduoxnyqpeszj]dpeducyducrsuwa[rnfiudvklwbdbho]lklubgxkqldqalvh[ogbeiwjdaeuwjyz]cvhoaaenmeuovocvog
-kxtwtkvaixeisgzjky[cnzhhsipmfawaqzc]gjpptvjnwmbqqbuum[qryazcieexjwwsvfi]cysiabvuldrkvsxqgu[koflanzstuwaebjih]krzursoabnpundffqs
-bzqcnugxfeixhnvk[sjyuxwjdceauputr]tcjsgbmvjklijlowud[mdmuqbpupxhndvfcd]ypgdbaxwopztyqelfis[bvpphfvdscmfbhynf]vjaytjezersopuqa
-sceyeinwgkcccgn[sgxwelfgqimdwzlbj]uvyuazuplvkhpndc[etahwkowloxlylnp]hletqjpvxzicdrs[kyrfwcyoudjlueqrvr]kdqsjyoajsfenmrol
-atkckckrgntchlets[tyebmdckmayofez]hryglgphkgeoswe[jeamxrrzxgyzvmuh]vcvejocdlauybbz[lnnricpcvqztoumc]uggeimsqrjnppskl
-rutaemkjlwrslmsp[jwwgmphxqlggydlsh]xdudpbdjfqtcgrw
-lwddwkagigyjsht[zpizzqoqkcbqmdqfqp]vbvigihfyemwjqusdh[kqgxbnysneqgxdwzkpp]issqguyhzmttxofz
-zzxsolnnbmerygtvvk[bhfexiwvaohrbqbadi]zdsieuxicwijamvo
-lbfovxmrghyzhfdybb[whedwghlrxnjtvqelzp]oezlanrknbaxtmo[jtrlurnbhmuymfwx]puvsiaizbjtqnot[rssajpiwyftzhoacoqh]ihmzohwlncqrfrjpbpn
-mflsnlcufwvqbhye[lslradskdqrueaxvoez]iyrdzgwbghbrctrmdt[bqgxpsiwleisnru]sjwifvnufaaedueaag
-rcdjaebyojixvatc[bjybjvqonbvdtyjwet]rnatoqmpxauyiezad[ltcfporqmmavmsjgmrb]sdiogziluykhmgcjf[bkkhyuslxlarrqbqe]zzsdsepgilymdpnhw
-jikhvuzivjikuxkmlus[vsgrhafeosvtphzg]bjhxequjxbqorsnhx[pvkgxrttjofimfuq]cmrxlinhwqxhrkrdzpk[xugunnrtpxbnemj]hapjbouhnfydllttkdt
-xsvwiruapkldajmkyx[iohclbiotvabvkhkngm]qfvbpipvniprtqjj[ehcphknxkybflhn]ackdoidsuczifwx[bdbekqnxcwwskgxp]ofvzsecshsgbqll
-rnpjfqpbnpfqtlpkc[itzrqowsquwryisqywl]mrkjwermsejxwqubxwi[plxkhpuflnhspjficnt]djldgtkuzafchfwar[auijeassmbtfdsd]etfcwmifwixeffrtpco
-nkqwqvkikgnmwcnos[nmvtwkyhwtwyrrupx]emdniphxpavkede
-tkcdryrjllweves[pqdjnylpftbbktemtkl]qlykuckixcfhwuczikv
-cfjwosfrfjwgwognyjc[jiwoynoxdngalmreoq]otqvhbkwlkpqatkx[wwgwguxuzwlorap]rjuopkpuaftnkdeg
-icgtjqangadcebdax[wyosawgqnexwsdqq]ulyhqvrzrqhibudyu
-mrrdimungjnszyr[quzeqzycxcsamewykb]vqrhnvflewxwzvxwxg
-aciggfsvhpeaemh[xhizavbtwzpsxdkgzdl]dbqpkvkmrbwjcle
-ctxwfkazxjvguatxus[hkcjonilmmvovjawir]ruwyywhbhkrheofbpr[qeknvkabxrdgfxgrp]hymknrdlgolmqrpklal[qbkzigpdxfcgnfhdrqr]hrutorkgyzxlqlujnv
-ocyqsefzuzizjllui[ttpjltsmxnkavfbviwn]ccfanejrzrghpnb[ehkgwatoncpnwfpjc]qkwynkumqgvxuslirgg[vrnprgoivxrsqlpbmke]jdygjgsfkbhrbfc
-necmpldghpppjggvw[vtantcichlsjgrzdxlo]bihypdunzshlhxktuk[iusfpqesheojjdmk]ycztqgqrqsuifzgnqvw[oyjhytgpicigpcf]ewrixdzorbmmxgywf
-tsddziihnzqushtoeg[ldqhzxrgtfkcrhecrm]nnesvhwbrujwmon
-rdapxiunwuijmxrqf[qvekjcwvibpucemj]uidzbyozcfnpempx
-fdvouzrhnlgyemqqqa[rosijdvpwbgnxzzr]moxykttwbfixxvflpje[daadlshdcnrwftzxpjj]pgpphzgfkeapstad[rptqkhjmanvnfuj]drurgqqilijigaa
-dcdcoboftwhtitlto[qdqpbbobdncixqwhmn]cdjrukqmcdbzwji
-fsmzzqlggnjqunemec[oxrxnckqpvilfinnolv]mgpmmemxrkuonag[wsoiyculboqjnux]urwswywdpuesxaq
-gpughkygfkxahewxsip[licxlfgczxcqejs]idnuezcmwhwgryjare
-shoehgaydkpbxwshf[ksbdsdldhfsxjipf]ubrrcyykdsgnywhojya[hfjwtuughentmddwd]wjpsomayxantmltuoep
-srpgizgochbueqgg[qeqltfdohredaspdbmy]cexowllqgvorkapnkc[kfivkiksqxospfw]naiqwxlkjowysnh
-patacqalyfmxulxxtkw[hyxkhrfewkpafeel]thgckmswuwcjgcuepp[lsfmmxuvmiyyzzxu]yiktaounkhxoqzm
-maeefdbswszxotz[sdfwswrwotoblvzk]bqmhwlxmzvjnorn[phhhipunsmqfmormtk]aasvyeqeffypmcop
-fhpaqlgiumuampggbha[tktjydzyzgbpqosq]dpqodhygfzmbfku
-iotcaohleclcmtwp[zirjcaznbsuwrbbspl]vdyhcyoroztlltnsubz[nmnaakmudmmobxzk]xjxybbzqfoibovwhr[tpzyhrmupmrfoeufsv]nfvtlfdnynqiwrmnmt
-bsadpcmsvgfxbpskka[bqcswpjvfijomiajzjv]zjzfrshleucdcwpf[ipqvielmzuykgbs]rsvzmpmpfahujfofx
-fvryaokhaacjqgah[epbqswhzewpvaip]cuveezfvkvejvvaizr[hlhatamayfeqllu]ixwqbzzaekbgxkmhzaz
-reyvoyklzltgudphp[oxjgegadnwxleogg]ljmtypolhtjwpvs
-cbihaubuoteffoyu[svxjexmihzibcqb]jzdqjhmjgugqyur
-krpfvdsywmrzxbusjl[juomxpbfboxgvkm]brhpobarqecdmqkiwy
-wsbwcjnpzputekmilg[qhdrjrdtwqqaqsymipv]fyrpxnpnbowlhwkcwd[wcxmrmmzlznnrel]oamqtpijleztiuknf
-mmjzxbxoyrxkyvdtss[cikixrlteokbezfi]urjcocznnivoqkf[wzqgjmuuvuniccrj]eiarnnhreduakcv
-honratmzckbtooiwan[epebkioukueaexbb]xyakukoiqfmtdhvxf
-auczawuragikjbyg[xqvricdlkrsbnmjqymq]uwinnxrbwluaanvjyvz
-rrpjxhttogyefupw[cidavmfspeeooolb]ucfrrurpkeqltglk[ulptzlfrcvniduqkc]bytebcgtpqkknxpbh
-ateymyqwgrjfwemgg[xppbfkjrlnizskzttbw]genvojuvqaudosfm[psnzsxmpjtdbznh]kljgvgkdvezzljte[ovfuojewcuvcqrfdzsk]kmbgrfpjzllvrbmpimu
-mrvctdetjidibveb[msvevesuydbqwrytbh]yiliwznzilsslmachk[mqyuthyalilcmdpxz]ctawteeyyrsbncp
-xhqazvqcraogaog[efbpamcmboregjesn]vinozerwxjyrytyd[vmzmjnevhaiidnhiuw]nvzsnlixrdzmzvtgfy[veacynylxxfkeep]syokzdwmkkhirrz
-swavkosetgudxoshj[fvzlrzpjhrbnbqsccn]hlvbbqalpdfefmaxdse[ekisavmzzlowfwcmqp]hutgwyxxcqjdiso[vraskyhzrfjitpxakqa]rcljjityeqogidyb
-hidnzkzjrekzkkqqpj[qvvuzioihfbxhglu]nzlgputvbrvwrchwhzc[rimjeexwqbdnsdn]tfzbpsuttxirwszy
-wiubbpcsjjmtbnd[thcllhnafhmdojqr]viplkejozrbrwacv
-jaywbjoscfdifdfalf[lvouibjhzbkxdqd]mcxggciwqqirwcyps[ztiybfroldnlieeg]vwnzbrghyfatjsxsvfl[jenhflndcjmgdojv]uyxvsnfigbtgaemccz
-uutahwebslojhtl[affybmhohxqavah]xocumtcofvavgdgl[xlypyhazihrgfwllp]ptfnqjlzbaccyoaawi
-akdzebybusompcsooz[xgymxdecspvdvkgit]dtnhtzkelcazovecig
-jqajvhvbrkrynxg[yekfvwkborakrkfl]bovxzhceonjclmgecgy
-ilythgztqwpxktjrpf[igwywudlvdqpqbu]hxmvjverypjvjtk
-dbkmmuymxedkowpcws[kxtthcqfurgkuxxx]vkypnrqtmhlsqogt[rtixamexlrydluvxe]nbehtyxipwgvefctyaf[cxtipjkxixrgawvomc]ssvdpknocgugwjxpzpf
-fidyxymrgwqpntyg[loqqjfrzmidkxskyfsa]mqilmzklkzhzedf[mitpmedchdhhzxdqpl]roerrhbijrjwmsm[quhrsmqqujwufnm]layxublhkfpoykadvcr
-njsjelrfstonstmhq[crcgsmvxndyvyfsjku]yvyrpgjnuimkxcutgvh[gwmbqumupsdfrusp]sbedcqptxzhsohroth[wudivolpxauvxvxbpqk]bnfygsxxzqwxumonnm
-ivtobvcmwywqtjkfa[tcfyhhgftbsswpnvbtv]bkuulyhtihhqcckjo[lgnkduoojrzyjhby]uwkeujommiprdopgche
-mzrhrvpuyolqlku[rlofuuumtasfuknrasa]tfhglvunxtkafazyehj[hrnjrlpyjntwosogwti]ixtpihfavwqkjnlipmm
-jzhfwqxoqsgnrnex[ccrtrnroigtbvrnjeji]bbhfsodufjqhjvplii[mcubmtdgwttmmnazhpt]hovifldmlnbzrwqicaz
-hcchhpmerpjppsj[wftljcxoqwtoclz]xihvvfjfhefdkeip[abdthspjojqvwxx]fhffpflinospcczm
-vupulseekbaiaoempu[zupmjydxyobqbfmy]xkyopqxvogwcpuwnud[orgnovcpbpqecljkaq]sdvcakqwdmgydeeup
-wruccyxbyiexpnka[iirsbfvggokpwli]gztvpqcsckeaiqofwf[zdloxqdlcazkhkppz]jydaafpuoznegyif
-lwxqnbbzjlckuji[bzxykmlhlgjosvs]fdocjjmtlhlghzvj[snveavqbuhnzqktmyur]xcoabwwqxexqzakbrh[iqkdvngcdtlhlhudqk]edydfxflcnpzrcjsppt
-eokcsyiozfqhcbzffj[uiczyrevovzcgvu]mniuhovkpklhedhx[gbyzowvpnxpemkcrccc]avfhgxxldgtjxuy
-rxjbmcovdnxoxrjter[ijiplhrlromkesgs]xwtfawphuvrjimntwvs
-uuwjtmgqskgrxrlzt[nqzvntwfmxeptqylma]gbahtqxvunohprsd[strhrrwmxsuoiuvi]nhamfjzlocoufnwbgu[osdxgghdsdkbqcpj]ywmalngfjbjymkz
-vsmcjtzwfubhlop[ttbkmxwjonmuscwi]ikjuxrmqhqldtfzqa
-oqhkopaodmimgikwcg[biimzvsoczaxfdy]bkcbjbcusyhdpfo[vfnzlymbwetzhbcxz]zyntiiipnkmsjjemxq
-hzaeznnipwioicdfa[lperfrgxekbntipyf]mnerflshwywujfsp[nrkcmayjxnxbhuvo]mdxovxksmxlwvkbrdf
-cuqqyiwojnwvbybcps[bujmpcuovhebtztm]bektaixvzjpofzb[egiiqzxqdlfwoukjyiw]nqkjlpwevuxeognpnq
-ryxoyvavwharlbwzeq[rphqbmnaiykgafsftjs]ijrqxkvnqersvvryz[mevoiitcztvfztorohn]hkchrvkqswjpyay[staoxhiuifnbmxuytlc]fuawdkujedmkpeto
-caowivzceqsclbyp[grpcqqthiebrabqwhxv]bzmazhewqmbuhjokm
-uhrtxyxnakvjydnroc[fhnjxathwyyxszmo]zzukeuqdhxravrs[zqcltmosvkqcekap]gjartckwucksqzcn[smddsrvnfxqjxya]gkumdkzqxcqxfyhm
-ldzhaqlkbxfagur[qvlstlwnkzbmxlxw]reflsfhdsosjaaesps[qajtodlxlfrbdlj]bxytsckpxumuoklw
-ghjjrxtnytqatjfxwt[opmvopscrillueslb]zsxtxstrwnyzolxk[lyeeidvaghynwkckr]shhkellgnhsuekrzoc
-vpliqrfetzttovx[nkmmjlsskjhnyxh]ayockmlevegaseq[auzorvghfdfuuajnt]poknhujvpctqrrycfun
-vzgpmpjvlzbhzhlexp[zheyfmgekvhjsnmosaq]krmficowypbxwbztrn[rvoedtkjlfpxtaot]rxwejzlarsgdlayv
-jfrznpvhlbchvre[obxfauzcchgnzksp]fgimlwasdrgqvquis[ewaqnfexmitmuxhqnp]graisawghismkouwfv
-nqmcashwuluyxaxcw[fdqovhbtwijgklubmon]dgxewefrjkhrylq[maeguvhvptbgmjdwhxb]dkdmdobhsbyforzmqr
-huwexxqnjlofulknxz[qnbpzxlpdlsqrti]sbmmwvryxqsrfzpm[ucizjfqroaflnixzbpr]ndztjtaeahzmkyords
-mwlrbdybkjhgorutus[bmbedqpcsxwkganh]ttwjrjrvxsikepdbvgs[qycnjzrbeiiplxarls]atrevpowofauioaof[nlhyhaoljptrowlmyo]hmeaxvwasyaszlgq
-tqsmjetgtzmxfgakjqs[cbnxrpnckgcndpcwiae]uavavaewuucokfrm[viufzfvvuiuuehyxcw]nkskrloinkwsoukw
-roximfsrbnzyzjmn[bqugwcdliqyzyaqiupv]rpdidncsfgexyncbg[amzmtmqwzipkjfy]fqnscfsjmxjlpoccvfd[bpebfxoinyaqsgjpb]dykidfsbcykdobqe
-rcmbmjwgmwathepxunw[uoieoiytmrywrjevift]ourmrqqatqnwmrisyu[bxodgsozbekrcuwf]gkaigbulsjxysdiawg[kczakejsrndvzdirs]ggjgbhegtgijrdz
-xtksmozdsgsclsxrfh[afxjsmsjpuqnomb]onqkiyrogyrkykxjr[bhvnrdaenimevcx]snufewjwvfqkafjjzn[cquvjkzxpbfbghmnpwi]wjbdkkloxxgsgnmriw
-doruvpwqkvibnww[uslnnvqcrwjlexech]cshujlmmujfjdtjw[pkbasqruzspzipwrqke]yypbzzqwoasgldn
-aoxxznvrxfhzwyyq[byxxvystyyrlzvl]jnilbnasrzvgbbhrl
-wvtujbbebuyuazangzc[moooepbzqolouuyxij]vhqrubkyyuypknfh[gvfucxhufyyjefei]axvrkaeaqlxxfip[fiazyighxscxhiwydc]acvifmzzltvluos
-yzyfibzwjuddaoxc[gpjgkmckxctlttgcdcm]rmjohduchcituck[noozqqxrakiadwu]mipigxbhlbtngtpcpz
-zipobscyynjrecng[jeekozoaoyuuqmroisx]tgffoyomlggbyjnnv[mcfybdsenqhygjo]dnzrpghyroqbcje[aoapyvfyscqfzhihddf]vplszbvbycwxqrhb
-gcoyyfxpuufglqfsczx[ebjwlqjgtgkqdeike]xtuuxrrbgiwhwqdcyw
-mdwjuxoulckloxfujkj[omieaeznetsnkeoroh]ggnwbuenkgeujmap[ghrtxfonaxyhfogpjub]ptyopzxhctssbwlpwy[xmpglsqcnihwzgbgm]yqmqddmugnlrbnqkgci
-xeayvddumafiomemh[euwluehznzxvpmzbz]fxcevhwksvwhrvzid[maotzdveeldpyetguj]cixjfwlbbbrrqmnoklo
-larctxbpbdnbpqyyz[vzooyuwrgpgtjtq]sgizsbcjteinyxto[jbqzsxejwwgrpcgzwrj]bpwcfwyglhtuxqmy
-zbxohuvlboydqvqhhkd[wgcjvlrppivpnxifvk]kmpdiwdtpmrctyhy[pprsqaqxunduprjnjxx]zfbqlbdpmcgfwenem
-ghcjhgkmyfejmua[mqsuukbcdvjmdnz]ixxelnebxjrtrdwzlkd[ikojyewznghqksregl]tkthqugytcsdudoggp
-hdfwyjganjbjhbjvswz[bfaxlkjfrkakeedg]zrkxyzbozmchfqgz
-inmdmdyssqhykuhn[vbjasprzyxaphygdg]ucbbhyvlsjjdqri
-zdyejivfbywyaaqljp[sxmtwgwmwbqelhsg]jesgfubnghtsagcu[tofvxzmzzsnywhbx]ibnbzcdhusdiqhgika[sipfigjsngidlzxxneq]bljavpomkpqzrsuuo
-uahcmotfanpvzru[opmqbnngxtudnuyc]lsvafzhwwwmoagl[kzpffwsffxozirgyz]lsbjnbzflbiprwuvurf
-rzietxnbixgvzxnmzlj[iygcirkrgwwsgpcidzr]bfrwgfeyyatmalyjsl[dweehclvlbefvlcp]qurpnzinmyweipshzs[lgbfgdjhddmtvbzxu]ppxtzzkiizoqqguct
-zfsvifntrvbjgdcuc[jjwqwhifqbxeqkbigcl]fmyuetebsksddti[hmopwdnxvmqwqflr]jidndiejmzoutjpkdm
-qwnlstjkluchubgkttm[yyndjrkhfqrxuyglebo]xdltobqidrkstozk[shmmslerstluurc]fxkrzqnfjoalxcmssq[bjenpehkwbxpktb]eaallvedtajrnupomva
-zxqdqrztephcpieqdi[rigecfyegojksvjmya]rgygzpdzmpvogeurni[odgdyrqmqgrcmhfcu]ggdgejoiritcrdxxu
-ezhzkozgllmnompn[sqyilkceizeygqkwot]pdkuklrqdgtgoqap[yvadgqlkffoklshvf]hkgwcnlbadpbiuzvkaz[oozjtyzsxujalkwoo]dhntuiangtulscbzg
-zvwmdxzivmtzpkmhnp[qduttqlbrhetmuj]vmykluzepgxxilmn[qgswpbooccvoxlg]ujndjzfubkxmvvdib[yrneuetnuktitut]vvwnzxosnenywomkyj
-phuncbfvyiwxfour[oauntpjxaqvwvqn]liffvpoxrbljogpcwvw
-usabjelvalpgdyiyn[hywbrqfeqwkizwnxf]ebpcgxloqmzflbeag[dxifrjggqwzokner]ndwzylxxlkdcpbk[kfergfdezgbceby]uscylihvxfbetfnog
-afgmwhqdwessspzx[ssbmbckihwjmiaw]zbbiktbhykmehed
-hforuldqhrolhqsm[gofgjhapikxnhhdn]xgdarfanlnonwdielb[hvntptxixclnlqphvq]hvvdpsmvsveyaiubt[hiiscphavjogadmj]bbfjdjeecrhhrspxdpq
-djtyronibzvtixf[yvofthnckundxfe]eccattkkitxyotbziy[afdaacfefrerytfh]cquizrjfjtqgjozagid[xkbcgazeolbliwp]hukcarrfnjctdycpfb
-egwoebxchfxxlrr[hxugiprrlfwmknw]cpmfgzxzakyhumd[evzzvvtjwwzwzywvk]lwcfpjlcgrbjszjvf
-hktuhumsttqsgfltrdv[rctkgluikouomerrv]jblnggtkdhveufixx
-ejjzogefxwuyadzthjb[ibrhegtzukygkfnziwt]utcbeamzzfkbrmqonlu[yofpkwiuewvtbswaet]zxkgoommtfxezcfcweb
-wbauuixpbtjnuos[ozwhlzidaubnfiuiqa]nlkdtbovsytnvjz[ztfjpnzvymrefnt]nixbxdoogrxdvuxbxbr
-xadpfckydqkmbvbj[vwdzgyfbjlyslafrp]mbozdmkfztxwailiuv[uttdatknprbzvjvucxh]cqcbkumzxiaqweqfiry
-bsdbnkvvlwpezlhc[cdzdiuewblcmciggdgp]halpvjdbnpbdrnkz[ikoyxulwagjnwego]twyvbkffqxasqbomi[ajwtpvliyyssqjex]cfbqtoqqlggpufbfx
-qoqtovwkavyaqbkwmd[vxuqdoobfxtanlwd]zklibywcjpksseelw[roqxvvoifjmxnarqvt]zeijltexwykdvpd
-obkgwgtfxwjfrepg[slekjheburvgrunuaxf]cnhsvevmitpuwokwee
-flulgpwvsikwhpzpza[pmlcfhtmvuiyoidfbfh]czcxxurdakbxizbbfb[blpwjusbzbdwugwbcv]vltmmzttxuhooid[hlbpbqjpqyclebkye]hgozvhgdplllxiio
-oupstawbevsasbhv[ddvybaqnhfckfvdgabz]nooqiufueyoflccqzc[jyljuydjddholsx]bbejlommzienlhz[mpbmppjwfqrgucxdqxx]sjohlscgjoprsqt
-augjtgfyoatluixgc[atdsbsouunywohfnk]dpghgakdvfscbapsm[nkodybopavlbeikalqj]myhpkcbsbkbjfgj
-whzlsgvuspnzdunurbg[cypfmgrkqjeppudbdy]civtfkixnmrkqmchhg[ypyakrsygkyvmfmmyf]blihjslfkbrysntsl
-xeyyjiqvduxcflt[xiqxiqeepbpkkydtzxs]vbpbdsaivyavnfwj[rduzjulshqiluheud]inliammiyxregzbsrkt
-txvixsvhvmxxsomvo[hgdskyjskapgvyiqzsz]shvhmfrbpxbndsx[plvytalszauhmpkr]jyujmokrvxwmanzbxbi[mefmngrdhatojkpplcv]dttxfesvavgpkbtpri
-pproajkxqwedocrc[muhbyboayoghprmbtxs]odroemzznotffsaxsmg[ykfnecchdltzosnyby]nozuvokzntxrnitq
-rqimalibychumvzdq[siqhwfjimixscjmne]hkvxsavgjvpzkyay[nzbxnmxgmyuwcywvd]qkuzrfifsyvonaalxu
-rymadifucrlickzorqr[phxxuxpffvnjgofl]zqfbhfmzbvhbmask
-gzuklpopfcjdrxoekz[lwviuuoyojzggqjs]cyacdnvkgqqafcyprae[iyazavdiashvzwpgip]sztafbunqsyjtpz[fkwjsbllccbrrdpa]dijejdfyzqycvrdkl
-nhmayligrdtlvyeo[laulduejrclodvnaoh]frxoepqtmqdzwwupiy
-exzcpmjdjiagpvsvin[aontczoixbznfwsvss]hdlmrrdtbumlfvril[gcuizdwjbzyhttw]apadljkbcsylwgekv
-pujkeovpnvnleypqz[ecxuhbtnrlnzojsxs]eyolbkoatzbwvnvwxlx
-oefowwmlhqytnxaec[rdbjjilbmiazndcycr]dvjwgldyxfrzicw[fxpbshhafqifvyju]ygagsxtxwnsphgzqrpv
-lhbebfasigqbhndgsux[drchunjaqzkcmefjys]nzloazwftxoemnmifox[gjpmyydbftxggnggadd]onlcnitfjniiekbiaz[swjdwdaikyykupgyg]ltwxeordcvjfarrhx
-ukvzfltucnovohjidr[apslrphaneessxbpdx]cxrovjkruohahxshazw
-xnsrwrjioindnxhxrrn[mvuraryghmwxppnlp]mconcxeyryuvfqcoy
-opafehetqedyikso[vjnjwsjlbiknomzuu]pjurldelcuxkdlhehm
-kvpcbopojkvzykdhm[ldleeqmztdnrohjm]vejwyvzvekairyhc
-yrbrakwltaduyge[qwvsxbxwiretxirlsbt]hdnwansdelcvxptiou[uhibherodkibtww]aphfcrfnpewbrblyme[lfwjpxyosiappsd]rshmipxgjvorazj
-tsymbomuywfpmdul[wgulyfhhwodplfi]xixmazxgewasngsv
-ktywwprbuvuhmnpwfoa[fcuicnujrweusdoe]fuarbahbvkhqjibcfp
-snhkrkibygzndryeblm[pykdztwnxrawqbevu]wwiwrwfcwtirdkjh
-xhomjlsunzjzgkxc[qyxzsooayiqnuzljj]jftgbnqtumwipywdfrp
-mhfgzwlocsrhbfkdbud[kwtnglxzzdwqcfw]ezvrdgdyjjqfwuv[abznvdwgiisyqjxvu]khcfgchqbgwflioa[upibqontzrahabnpi]tgjaagwvmqewmfyer
-yfptdfhnebzhgpzism[tglibrfrnpfmydwbea]mmoqveuvvenorhnrw
-ljztcdworsemcoe[yloilpxuumxdzzxl]dyawqaacdnjlttcz[dxyytbozmlibkocr]dxpindavjlezzpogz
-bwkhzerttqexrgoea[ubnuzbvktcxsxednmu]zqjpbtbzdcfmidopdy[malphrsrebpeeuw]vwdlaafkntcaqmwjqc[abciktgfeaiptay]yqksuqwsuqtckkoyh
-filqrpdsqqfgkcu[obiciozcvbatglnx]sjzgtjuddnazrzfcju[svrswvhpfraptqsxolt]nfcphmwaudhrnxkzc[ysohuzukkfqlskgkd]nynxljuswasofiaarc
-desdobciyiqsycj[wzvqcbwfbneahei]svofzhyvvsrwasvvg[igvhymbudpcrdgjwv]qtyrjtghnbbtekl
-fygnlyiuxapyciwwnbw[fhwxcrwprlaoiybnkbe]fxvtiehvhfgfwtsdfh[mreawqbzyvkbcnkyftm]rryknthocegscrdtbcw[ktbeedxfulszfogwnqi]kqwtzaemzwmsloi
-zxroedxtywemimrje[fvzlxeqgczajhimr]lrhvziwtgglifto[buxquosscraxroklx]pryldzimioibwliygt[yvmeeklmyokbgexl]oqezpvcwnctcbskefas
-dcowzgprrgvczwfx[zminxdmdflugwkkkk]vfoltgijbqlhjdohr
-vtrfdkwipegmqbwrvo[kshaxjtaiuyicufl]zfkbjdxhihqmtjco
-djidszgreaxdweqjk[rdjzkbmqtyolitmqhf]plltubpvwojnccsygfy[mewadohjaliobsdwezu]vmrkkqgbtfmwemn[erlreifagjhqavlxxh]yplrasxtqcyowlci
-ctautcpnnufupce[qtydhgcjjqofrfay]lfahmjfjyppehyp[qzaxqkpopvwzqofe]rkcqkjpgptshvoucer[qmczzorygyrwbxiji]zljzfavjmwawfrfr
-mwmkedorswoukdumznq[hdujfmdkyiznceknql]wgvbskjuuwmwrsvca
-sdvjnkxypkzbwaam[jrjyjxcfvipcsfv]hqpkybfiuthhszpey[cxzhyjyccoulowr]bwjcdjlwidvcfkguaud
-wfvvroenfriclccedd[aqkoeakjbakjprhnj]ytucldefderfpqaibsn[gjukmqtaxbygrygukiy]xfreqhtftbfsvsjstda
-gmqthnogaadlkycgrv[qrgjpxucfcnthziuqmc]fqlchcfytukeoho
-muwfuurxmlzrcgij[ifojpmgnfufvhbmmeu]ezcruchallsnspos[bwlnhfxtqvwcdjo]lnfuojduqnrbdyk[jhfihfozzosipwsyk]akukjehglqpancmiy
-ultbxqkpivdepjvze[flhbwrxncynirgxwt]twqbnqiaivfwlqorpa
-izvobuuojtimkzlsak[moodohlaudrwsto]cxjybpccizkmeau[dqaajcusqoaatpbojuh]pxlzqhwqdgetmjcm[jmjesiihxrtbmgwkcck]ywajslefzjxwyfivv
-ymymmfpvyiyegjw[auyhltgyvzodazgd]twjkvzwomymmrhfthwc
-romqbwenzvevhyq[ewpxvrduvqewryaoct]wxgowmsdxrxjnyj[obazseiipwfmbyxhkdv]gjalmcoqrquvdnmzacu[abzkksqdcduhkizuzxs]uzuazfdegdfqjmmr
-frvysxhaafihjpza[uuwayzhynhgliyxcc]vdcjfobjuqddqibjef[iusgoufujvqkfjt]cejktzeuphymtswrxj[nthrscqmjniokzsq]tnsfuflhwdkvsrlm
-rrybzahzqjlsnrf[aexlsirbdpwkrfhms]ftuaymthroqwnjlhwv[gugocacufksbdyqsfwn]ptivpdoxkvpbwaohlfr
-ikdnaifadlcqtyfpq[ftwtatuewtwyxevw]klpnngjlhfuuwykwbqh
-jcjepxytivozlscfk[pdosptbukdrtforgvxk]wdghlnuxqjdaztviyiz[mqtajavotnicuxco]vovuvrvnwoedhflabai
-yaiokdeleeowglfd[qzhtllekpxcjvig]ohtsvsylelaafkxk
-qkopuespenokczipnz[qmncizyvbxioknj]piygfwazneqkamiq[oebzwpkixhbywqc]tglnlkwhricqqzzbkuo[azpshyiwubdevjojg]fqlqjwtirppkilhplu
-wpjdzojjjgthuvhs[ttvkvkootolwcilow]lvilrilboatpxwa
-sqcunkrlvqeapsseomh[hcaleossxxtjalzts]dwokbxvvtiocokk[ziimvyrfcpcagbchp]lqsdomcpacsejdzcxw[tpekrtncgabhvirc]nqguzphabzalcgqjbmw
-lchsqkntfaymwss[glcnjoqtmlubbldwxb]repxhlvahfruswno
-gvwpylwrbvedenl[bsexdkrwujurnrhirju]eskvbigiwdmjthvhrw
-uumyugkrepjyfna[clcqpswhmttsgtrnh]wnfqshojhbnuvkblcjh
-hcwvxdxtuptlajr[svvedookmmgybok]dgfqpjqcewcjwqcw[rtkptmdbzfeqcyiha]xjnmaukpdrlznfxvfl[phdpcpgmzzlbeplqeyp]xfxopckbwdpteui
-mxlmvngjychkbdad[nprwbbiggpyhrgjnox]kkkrpnnokeecsxwtfp[mscljzerlkqzmxsghg]mvwiwebrwurrppqw
-bdgrunylqufybegh[hwkqigrllagcnatuzqe]tfooqltcwxznzoaot[hvdskwgtazfkqlbbbk]zlqphymjvcvgybaxo[uvougcsxvyieite]lryismkbwdzxmprwjmu
-mtrggduulofkvbdmqj[oijictmaujkaxedjfm]kvriyuoautahkfmt
-ljywcelytwxtjojhn[iopmxuupcuvfcgubem]alcwlvcmjgwoksp
-ybgcqoheatckeypwgq[szypqmipvcfzxbl]obblmhvzjoiinqd[kvoyilelwmylaezhow]fforcawucbchzbjlrmu
-txgcosxcdgywyfhgjm[etzfxsiksioqtrir]czbkwziihsrtlceuaj[ksksgvozuazlcgqcy]tcottzfkvhsmrsyvf
-iggzhhbedhayxftelth[qznllaqmnrogfmdtbx]ualmvsfjwntzbzd
-dfeuwphubioymbzuwo[tucongmmrqerhidwq]tjzrtrfhgixyspdsl[tygroajgdzxudheh]oumnugqbzgyilbrth[ejcdurppfugoluctx]rtxzchnbmwvfewg
-kyzwhtfybawdrjkvoyl[fzrhzpdsmtmmmvuu]fgbiqggdekddtlpzvzh
-irtlqtjyzstyynjfjt[zrlqdodytcoqczaib]brhvezqcuycqmta[uaofbaluqnucifngqd]eeprilhhysftrhp[zmdzijhtuxhysuaye]bqokznpdffiubikgf
-nsrehcsbptmpdeskqi[rpcpoctimqyccgnpnfp]peakqjqlahqkqfgoc[irckfbpvcdodsmwm]oxnqnxhwmwflazjv
-iuanxnzepawwipojp[bzoxbyrugitmuiutg]wtsagitdstugmsssbc[dvxwzoncffczplwcaw]gifhatzuqdvuwnupmja[wncssuyvhyawbmfpbdv]faluhtnnnvuiwbbudh
-fpedlxzxifcuqmvxm[vrfcejeyfkhegliplkr]giqaenxejvscrlxbg[qctzkslosctnoamy]qyjmeunfiiuoxsid[xpbjwjejckcavehej]txgqklgnzqdtimmiqwc
-iwkrzpmhsunofgrddx[ecssnqrcjyhmsfh]yrmuqswzgcbxnaa
-lacpahmmufjghzen[zkbpbownspfqxnclzk]yjnyyjnabyhsrggji
-vgxbpddjqotuvzbakan[vnagjxrcehlhbxwdw]kxuenaclhrihntgwjq[bgqywyrrhjzjqdnu]eirujssxedivdmvlsby
-tsqxgzovbjzlwpcbv[rgaywjaothmsswcdrtp]owwnjohtsgegsgtah
-xzxejmuyfhjmgoxfl[hyafuepnewepjpy]lbdbsoxevfzdpnwpfk
-moucalsxxvhjiyoceol[gwxofnqdrtxzusk]qjosxisditclyvucbm
-bjgdyrlrhtkbqrjohwj[gcmcelqjvjadxqnj]tlupekhzidsrscrf[oqadjqqatohbjwxrneo]ykhccsunlyamcmmk
-vgihvcltopalggrjzsv[hmrksbhlxuzvtbnuss]yqpcbwauqeduyse[oojtsldylgtokmdwsy]intpovuqazkybvjim[qbqspjlovnizurecdj]fkxluehqgdogxdofnq
-mhwhttcwzcntsbufi[afretswhwxhwkptb]srrajfoeahmhecarmu[wgjragqlbpfbfpd]epytkbjxmblfnkwhlhe
-dgpphmjzkoobitcjyoo[nzkzbsfktzftpmgwdcd]nbezurwvzkhwskfq
-epuokjzxtxphttxtkz[xcyaposdqcfkcxhncz]hcupnojktsvxrfwlyv
-xfoshshomwdgssxla[uhshvhbfofuhdsqk]zbzynuiyfagqpemuplr
-hycladrjbjuyieejeg[ajsfbpoakutelvhdak]hjejfrmmzslupsepozu
-ksputfunecibpffwovl[xteycruesicuhzai]sqpunyzatnromjeq[xlzamstzzisboayh]gzlnqcjacsbkkmgzi[aonbwutxuesczgwnr]aflrcbdkkgoyumfakb
-gjgmaueywnbqdvgf[tpheftnkpnlyujv]tvnqzdugoyjybxfpx[lnhefqkhesyicqqgvai]dvdgtlsayhtscupgikg[fyjgjzcrucldwdd]ohlycgvvdatuyvduhuo
-emkefdmyurledfdd[dxzytfxcsdxgjcwxjzb]rqwwzvnosuhkcplv
-fpmhvozxaaxsyxcpx[yohzimahvewgvzucn]ztkenzkvcryyrmo[drnglpsvnlefqhx]clawabytpjiwgqflfbv[xvqqglnkzkxlevq]dhpydxfqbclvcjtdcn
-itvuciuufdkcgdqgo[mgwnpeydayczlvjegm]jyrwfakomakilgvhd[mslududkqwtcsojaosn]dssdnwxzapuchnxz
-twopcscmaiqhzsepel[qhydrqfqwvjjvinlq]tfmaoxgmccymtrbecjk[zkuwqiccdgoubccjoc]pepwccwqlxzlvuhb
-dingttjebuuxtxrxt[jmgffmivzzxvgvefk]bqxyaoqiukfungsvu[sidxinaokekzqpqz]hekuuswyvznavhuvk[lnmhqeaujpofmdzub]vcufrufbmgwvdwksqn
-mlgkvlqtkpwzcjbrr[yzhdcawedycuwdw]ncjgthabbqmeuji
-oqybrhgapxiiaxihexa[gerjxleappelousidd]dblyflqmoarwpne[enariawxfzzpeqdvj]lgjzpkhkrumhvap[rtcetzkiztcmyyjzs]adjuxkqsxrlyjgf
-hqxmuovloocgcgjlajv[hjbhghstuvarcwhfy]wldxggmqrrhiwdc
-yelxlqwqeiqqwwaitp[uservmlohjixnqtl]cocskteueenenkfmy[ehpleyhokmlzslrdlh]lyvwccjeqrqiofplw[pcsjxogpwmbhrpvvn]ncmxjsoxflyiderh
-znmujbypnozpjpkqii[iydnrowiwhgazihmxxp]lvehdleutcqbwwan
-lympkckqyhgbaumc[oodkeqjyhckceptyqui]ejkkqbitfscazcx
-sxvzcdelbmcqawvour[jgrjmuzvknqddwawl]cfdxxgxsviiyckx
-nrsjamicxprsigw[iywcxzvebsemowpdmn]tbmisagklgwliuuin[ztbbbdtyfonwumpl]cjmddkvsaxzaszisyy
-tllvdxtvmesnmauwk[qaomhmguwvmsjbwrwz]gvzyhjymfhmheexe
-jqiffwykdbqbfcz[nzzfstvzsrtshctbwt]uazcksxgiyuwlkbde[nvsnfriumhwznjfdual]beqjfgyanriagjl[mkwaqdkmtnrzfpszb]mrqgyvqvyqabnugoc
-kyvjsbdoorblnmy[wxackciwbnwvsggfoxe]pbufyorljghrayitwnf[orktaokqgpeenjyk]xdldvupmoyqwylb[aljdjuvxqagigdbti]erzojwkjcoxvuztbqw
-zuceocflmwjxczrua[gpdqtptmhzmrumm]lvmswwevpotdyrrztzl[pkzxcpcqxpbfmznn]zoaxhfddhvfzxmdreww[roilsmnfdmogsvyyr]inqfvvkesrzgzwsnwya
-lihowzmdtujxkokt[czwvzrilryxqxqm]appqwnbyvtxjysxkh[wpjuzvceldxgvsx]hkyptytryliycwhpbkk
-ccyquivxwnsmzvurzl[gatwkzfmiuzvlxqqyy]twruqhcerhppziydvey
-kfmpvuwkfbczuahpr[uhtwcsydtbjjfcyu]mltkvudoyovjipwmptv
-yzuinluayrwqgezu[qbeujtuehlcqhbz]qwvclzkjxuficbgqv[qrzlculckkjhunba]gemnanesaovxzxatvm
-ytnrkypitsppgols[boldlbadecdiaeyp]miwxcsnjabbmlfz[nmfvanenygvwqmgpiei]dqwnubvfbwzdptj[ormimocwondmsyrk]eptdchejhezxzpqimj
-bpvimxocqygiyfak[kocimiojschpxlmlbh]oeohxkrlnaramquwz[mvodjkrtgwsyshboxo]jmxqxvydlieugen[qsqvwfzcowdvxzeflfz]eoysyaomzucvprpm
-uhanxfxnxmoedczj[pjqlsouqdhqhforcuk]wgqlbagmjmtimaewh[qlnvfdicashjzjjmmwe]wrtbmpniixypmei[hnikhifbzacymvga]cueedmtiokuuauro
-rmwtcdtidmhhqvlooj[ibfeikfmamtpxld]tvqxdwcislwdijaa[znpzxccexnnkerzseb]cvyteeonwbckvkmw
-xtrkdnwsvlqfpzb[fyqeealbxbpjxohdssv]eomkcxpzhdzzchmg[rszbjedcqvxmotecne]arebcunvopesercpsif
-wpmgxfiikbeczkih[cjfseyjqbnprrzrc]vmofgvrwxiitjsy[cdbplfeqqrpvyoguuqp]gicntinbexxdcom[bhrrykkursqvyepyy]lhpnuchjkxczxxvqp
-qnaldysjxpygshfd[ggbsrjqdcbppktpfk]rfapyzecbxeoluhop[njlupwxmsxpopefrwl]xhmjoasimqrdlgjwm
-acajjiclnscuxdsyxv[axykpgkepnjhrhfgqvr]slbbdyluiqetchbrhrm
-ryolywtcfhaxzpu[cihbqzqvoqwayjwqtx]cpnraqtbqozlcrvoxn[ippcsfxvbyrodbacgmg]gfmqhdjmgnfisex
-etevnoklfebubfa[kjvpcomfcdacfhthi]nfqsxiilqrwqianlsex[ugqfrpggyrmumjf]utvcyluzwmzjygnta
-tvqkpekrujjfpzlot[kgoaglxyitdkwjmf]mlihujxyrtwfmzup
-ktqkqvqxohypotivf[nsytklzqsdqgtjsrved]beidsrlrqlaaykv[bhalrlzjhvbdtjcmig]awjesirwjnmfjdslc
-axgwliaxadkosbsp[hpschybkdbrmhmm]sslipdgrubjiifxzze[sptnagunoyiasvcunvg]fywdxjoeyzvwrpinmf
-rhpxrkwvbmiuoks[ynxkvorcjpyldmigt]juvdfreyownzxciopxa
-qlmnvnzbswfkadrm[gvgyozcjgthimuxze]ewpsviwopsrqszjq[odmqbtcagnixpgasn]cywfvmbtfcixzjmyue[ekxllezjdqxkqfxkflf]smxhvcoojkrwvuiv
-mrjroyadyadcyppfliq[xunpwmmutvwiewlkyye]ppcjwembftkaakdig[fycllhoijmljdas]ghnbcqzccvagpgplb[eafwmpftuwwwoln]qbxjdgsbyahqkxqzrlv
-fzfcqlltfzjujqeym[jeaiiecptdpgfsfccuc]sfsekysmcjtdxjc
-jjynfbiotihgcbrojww[vrxthptqnzbjegjxzru]yethaiycpixaqfb[bplbbjoveuznxlgvooa]izorgiwsvfgporxo[lnktkblkgpenjuqu]hsizqsxbuadccikdw
-qgqbnxfvfobowmipa[pgiycstlgkcvsbi]nuvfvhbouoykamjuttp
-evroxuhzulkndbn[lfllzavhyovpvvcvg]kihcrzllseowjwezs[vpvpwqtlbykudupl]qrmhrwziizlifhb
-zgnewkpulzskmghubbx[matncbjczcjofajeilk]gimvlsfgxcdovxelxsu
-zgznxyobzrrgfnipxlx[gsazrixylwsicyquamn]isxlagxgkbtgrbjknn[qxjewpiicycnpta]tghqdldoiwdennnuha[wpwsawddkuxonmxv]bmkekmujdpmibjrg
-geeoheswegiuwrrmii[hbthbiwayyxkftmbayn]olgnlfwlixhqjgjvgsr
-crxkwxwfcdjitekzrdm[duvbsycafjsvivy]ysrnkudiueyakhpydv[totferyeflbkxuz]nyrvffrgktfpmwsmaig
-shfruolertwzhwvfv[oaeslwnysponjvpne]lzvqqieleintnev[jdhnbbkdwzksbijpsle]svtrwqftbwtkzzixrlf[wzxzoplqpcybbhhfz]klsezcnzpvgvbxqeedp
-rodljmmftzgdnxxcufa[jgqmtuwqkermnrimyb]uouynscrkxdkjhrz[hpihpdzqgzcmawkdsw]dlvcgdmdmupcmuduu[xyjvfzjaypcbbeettvr]pnqhcmdgguswinpxmqo
-yrcxqglagiyyhpt[fudlgwwllpsimkfp]esvhuezhtkwulzmut
-qwiwjsxdiblovdjx[evezbqlggluydkth]xtoftegxpmgjsgn[dygxbbfgcnrlaebugya]jvcmiigduerloizkyzq[oyfqcvstibjtqcknk]sdykrdksunkdurm
-mlublposwxvdmcasb[mmvoctlqinqyogj]lblnmvdegbddxjuuij[vlkyfhcwrywyksv]epprdwoppwnazhbfxs
-xidpschespoxuwka[lifyliiagwhtynahwr]mophvutwbflkblhzp[ngfdfvwwlfuyujsy]pqgdfdrrwonjcsxyb[txlrkdplwmwanoxhveq]sirdziimdysnzdrzt
-khglmzmqqlgtsoyuyk[ckwowqtfatmitmx]cqsnmpgwitnlycvr[hcjwrehoqrluifbx]dvorwhvznwutwctl
-lsjtzcpwlhruhcyvu[ppankbohskraacy]xriyjykeufmypvpcg[khfkqffqnnzsskbvi]exldjyjnsnxqgfxg
-cwilddndcerivvgcot[pwnjzedgzbwjhwdngiv]budzscutbkzehgi[swgapyqpuwuqitke]aihrettehkbulnndniz[ladvxuqplmfxnwm]zovkncitewbtnxao
-nwkbypvbwxrhjccd[tzjkzmgvioaqorgsan]bghmwniqqnnugulkcq[devmzttwdxjayueapxz]pigrhvuthflwfvyghl
-zxoysnouzggrhhygrn[wvovlnwttrpgnub]tflqcvvfrhwiikpfp[fmvlpmktaybiodqon]sawjgpmqugnvancar
-sfhshdpjhpscqgmcx[elzcuconpnmipksf]qebfhzrzjddpkrwy[mtpfmfwynqlzlcavdjx]olgxbalbprtdnjl
-ribazjlrsqqorxkipi[rkwdafpcbgzcvveipl]jtutooefoewtkwcolek[pddkdpvzyumbkuci]qyeuvqqxiqrwuzygf
-eobvoofynuxzuaudo[icwrahzvyvejahwlbq]ewwnptijkewsppx[bmqxtgqmosyeyhcbsvv]ojsamjjroupnfxbygrm[yqqusonrkvfmwpiwo]nueolsbydgeyemas
-vdmbxyiptwawwgfxzh[kmxqzdwjfyspqkptz]hkkuurdkmfzivckdwp[ncwldxetviygsqga]oxlfsqrbntyltzp
-gewjydarttmsjtqn[zxbhrkxlalwtmmrgfag]ouqpvnvhrcsyaepju
-iogmaqbbnpknpihgdzr[xddekzhpwasgjya]qvqeqqyfgmcjqlljhn[yqwhbjjgtlspllovxu]yzvhuxwuqjnqqwu[mnqqonpvybsaxob]emyjayuxxbvtumvsc
-ompsdhuyibxinkeelcw[vcyphnznqaeqzcdm]iqpgmmktiakqfpiejnm
-ciowlwsiatdaewieita[sjaasprpfvlolpah]bpeqtpttkceukaef[rprweenazfnwtmfqh]wedhtjlhyntjrqw[hyrqbnvfdzilazmclcl]cnzbapdwalrxcbd
-duvtrfezztrbcbrpkwm[vtrqvfcxuueqcpbx]xmjukrhgfutvtcyd[ptqlpgejdqamrwxxbl]aavkmmqbqdkxyuwpllb[cvtooqdwzcluidljfni]pohomwwnjxhohmv
-ieozeqgyrtjpfix[opyearfnbegqcgjqve]ljeerzciyhyvukdifu
-awjmnojyjmqatcnnr[hdggsjlyjznqadyuwg]gvkbbwfvbtwwfjjnpa
-dvtdsunzfozfzmgbost[cvhhdpznusqmedy]ayllrpvroikxhxetks
-jyyboehdjvkufzixpf[ijsadnufldjduipx]zmcubrihovbjtdych[vtmkafgmqunhknoqttz]amdwppzqbnylhsi
-gblfvnsmtqowxewqrzx[kzyxibskmbrkunl]nqajypwcmviecsn[fvewudrwzvqashspitb]docgbflbdpnxxtin
-evhfjidivoswuxhsbd[wmxbybthkqklvtfekms]xnnifuivlakbrvkfaau[upixryknmsroqfh]tfaezdhmvigabvwfgt
-dvdsnwpipghloop[diwimibgyehecqflqtd]tnfzbffdhkvhfsbhq[rtmprhoebqdxppae]gczergujhbzsgdxupd[ezswzkaawaqhjcdgfl]jgwotzkgibphpas
-oyuvlfvippqkkfxsgsi[jkfszneoxbhkxlorzz]rmotcrnupuzltlqurcv
-olonicnsustzovmd[kkmgnznlwjgwkkytz]usukziqukpwigcfvxw[uveqyxukqkusxuz]aqojtdccmpwlluelsyf[clqnppgmfzwrtlfh]obgkzmtyhlcounaf
-bgntejhmisbzfrblik[nitcxhpegfmqugmlw]rcwxgxofqbishzhq[jyzbrgwyikdrbof]gdxdwgpsfmmqejfyodp
-suumjpqhafxvgmgdokb[lmpsinjodlukkfk]jhehvjrbweyoeivfzt[ricjsiwyhcomnsgltrs]iysygfjrdfebsny[irlxudmuuykkcxj]wndlninlcnixabgs
-xusauuaaldibtqcyn[hvjidaemmzaurmyyk]qxooscxoynakekchbj
-xilzzdiyoqrwzcnwklx[jzmgqccfobvufhdfgha]lzkfzklxafmroamh[xxdzjoeflrhqibidync]kuodqrpntknogybhh
-zfogxhqdfspdmvxtuwp[fshligclkdavscty]tkvaozljxenzeoj[txujxbzywfgqkyfrjh]fwwjvdiaceuyumeqscq
-iqqislvjgveszvnb[qbfceykxhcelnwes]mgbeubhjgaydsrrps
-unvvlzfszuuztae[ytbzbzacrvxlksvk]aeaoeugpmkydbixbmv[nzznffshspwmlkqig]hwamlnoeyfmzhrxmbi
-eyrqyerdzuptlwfz[pgehfansstewngd]vdlfglsqchelite
-irwhlxxczsizolo[mgrotoelpfspnben]xuboaosbbqvskeooh
-mvvsstnbgtaripcmiv[lqhlubezzcqsqoh]ofqbajkawszexqw[pytqrosnsskcgmno]ceyhqvutvgwawrao
-aehuceoazqppxdvj[fekwbrgjolkkssozjr]ovwtwkvvxtwlatlhc[anrzzudeipqtlgvtibj]djkyozdjetkxaxrg
-qdkosvyshtjamlw[nvupkgnksmlfyivlaqz]vzjxmxzwetvndab[rjtknjbarestnsqar]emeeqkvpkwwwbpbyho[fxsxkmlskjyvniynt]yxdwuxqranfmwae
-mpkajmbuiqyysjiqxg[gmhxmogelodamttt]aboupdcqcaggrmjwo[uqmzyshqeruzquxxez]agzfrbsajxlgzgfueb[dxxqiqrjkpgalcp]qcqyeyosztojwikdqo
-cwzcxuvjuongdoellki[pqzhljdqxosuhdgqc]qqxxrckatnjwvmdjvty[qdlnrwhhbeldxrirock]kzsfmkvvjexhibpjfpv
-xqxcttuxwhriomnnarc[hrkxvrjviqxxeih]ofnkwkzmwkwfbflu[bsjloysawmfoigzrsa]kjajcjknclhkjofvh[jtocrkwufebomaervq]hawuelpfzimwdnxens
-axhzhgcgbqdeauomnjz[hbuvuiuidkykmvbd]yjddakntyygztrc[mgxbjwjbkzwnkybcgch]orbyhhpqxylsrzu[mygxsbzjoicfneimx]jddqvyyavgguqlqk
-sstrdkfdyahmpmolvuh[nuhocbdkubnidqy]fnhfqdyorbtzefo
-youjjtvznztbjozve[vcsiywlpdylxwpg]saiwvtogtdayorhni[bcbwjvcnlvrcqbeexf]cxmaphpnniedclqd[ilghtvdoebmgoykzmjc]gqxcmtfqougbpixu
-jypsrripwfsirlizywh[qwqvrrfaltcifzgrzk]urwxtgxsivdxexc[hxqqrmnggugvdgdcle]sirkwolflgudrrwfvnr
-jczbvdpvkmrklaxdh[iqwzvnjtjhmulvo]amkhoscjxrxkvtrlm[nlvnfnszosucrhvafm]dpkerwgcehqnmxmny[xabxqyrisiuhudad]egbjvaumucthookv
-shephwsolmshfqhuslh[iqeoxejhscbjknjkgk]ytigxjcdexjgptz[mdcfmxfkyxnaaoixuv]ltysxdcxashhzrhfzcg[jrjzihjbmjzwwikgrj]zkrlixaauhydpmvpggc
-hdwtqxvelsuakiujcgb[vrzoeqcoqwpdvdxrly]fieebtoboyeztrohbz[unoqhtonsyzptmpgo]bxsxkyquwwdwyhpxcan
-wbxdrndbjpmgdewnt[hnmfgladivxjjrhgx]hhwhdeyhnhtngzasnm[eanqualmsluacqejow]wtycyvqujeitvrvtkhk[vfabcjjiloownkmsa]xqjgahkglpsjfcryzv
-psxpjyoleoctcjgpwvw[qkiussudbvamcbw]hbauvxvnrwhyupg[jbuclksbbwmdnddkn]phqrldjcwlixcghiau
-oeiqnisrrknnuqczk[qhtdnexhjbgdaplymaj]fqqywiecdftfcpfnkrd[lvlesddgirngtuo]mfvvfvlufkoqwpwl[hljsgiuexvjatvztcp]ixguvozijkebslzjaco
-dktnilosvtkmvltdwd[vznigqxsgvlquhbquk]uinsbypzarhkgsgce
-ljjdiiuiikwufjnnvjm[xjbujiikgaghrijcbsc]escofoimfyedoist[ltrrqmdcekykivhaz]xdiijidhpxdgqbtxue
-lfwumqctskgwsfvhl[sgtnklskhazwypsys]bvjxbzrabgfrvyvyv[rlityjbenmcoigrfmfh]wczyjwqulaqxapozcnz[uqbunpfwhfrvgqcozw]ktvibesxhbrooqt
-ammvknbggljpkwpr[vnrtrxiwcitskywiw]ubyickjafcfifgupssy[cbkzhebhjtdbsgct]cgefqdgpdpcjlzrz
-wzpaqedqkmltsuij[jjuasmpwngjrynzettu]dtmgfvwtyxdfqce[usljscrncmnvrbb]tnevcveidnyskzs[ttmnmxqodycaikjio]qfhvrqvqpgjhkaaicj
-apdywyijusgxzfj[sgbhrwbwywwisyg]ssiiosnfconncgiy
-grownnednjxvuew[iniatygttcdaelocols]iyzwgdboxuadbrbooe[tojrecocburpdzi]oelyopkilwnsejur
-hfdpohrtqqyfntpfk[trpnstnxymqupxjri]lheljryczqxgvqip
-iielceqagqfksuqpzr[ollobpkbzanfxcjuhrz]jnxizyaoygzbzciu
-njpftdmpmkjwcngeot[mocqjgcycgznvcqjv]aixpwfggjyqyemoz[fmklzletfvqdyvvg]mznoxpgwowvjjmus[prrehzdyfwwuxvhl]hqppujbqaizlzvv
-vbjenrifdqsyzlwga[wmjenjnqufhqohvgc]uhrzouilmqjnjigwpa
-vwooqueyzrusban[gjwcwiagfwpvrct]vfqlgxbhucjhvobi[bkbtechiapvschnh]vjzryzyisyzyzewdy
-udumujkujngtkcfv[klinhdudyghspdsga]gxavvcsxqxvaziqrmsm[htseffbehxafyhoars]ghilivgeuuzjlmih[vtjpcrmvldjluqdazun]mebwzbxywmrfhet
-cwkfdzyxoayxukcgdv[wamyytyfmfaucrko]dchdvtpdkeonmdqc
-zklwcknfrvlblaamoo[ndrnobufquyjknl]dnxgeqvqwezfwky
-zbqgtpvsqcteltrs[uwrmlyjkcidsfdpx]cgaobtbuuntwyuhxmjx
-lbbyafbvhsilwmjivv[fkftqvaahnrokuhu]dvgaejsxgjuwiemu[yqopsyejqtvmlfxm]gzuulybydsrzhigldh
-ficlcqjefsddeds[kfkmusacvnqualtppxh]drbsbqefpdoossbkyng[uvpyqnoidjnssjobt]gsheeufqtzrdsil[jbvevjzeugpmopo]nrgxwajuatycddzwr
-xnhrhgadoziectoigmf[jwudbvxzwdfuubhjlt]lupnypmntyrvwqzlb[vvfvttkizuxshnhhw]lfdrjokdrbrcldjfs[wawjpqzozodmnmah]vdbjaoofkmhkjbphx
-fsymutmdbqyguwut[qvxhywjtposhjgwuhxg]ftwhtxqxeicsrlfye
-fglgkrjwulmkxbzolgn[vurpqcvuydmympiyofl]nbzudjasxeknjid
-nbtrkgsywnudokk[vurfuvkjdvnsukh]vkmqsmcrotppqorkah
-iqccpqvhiesnaohkhao[xykqfbmojjnscqhdv]aqlxkvudzlrncmpy
-dtlwnznjqsixssrsaii[vkikcmtsepgtyqhica]ovcpoaucnwravbozsg
-nobwzchgrycgkxc[tqoxhzxeorivdtdkde]ctdtkwzsvuxfgjtjg
-zsknnbedctklyuxngn[jjzvkixpfmskcagh]fkvhsfuckghltyqk[hmygppkjpcdicxw]mnurqampwwoiiynr[jbkvqeqrhnksizlssff]xhkxiwlzgvjdfakjg
-gqbxrvghncjdllxtge[bjuwjsvewzvrgcujf]tkrdrbempmwqujk[pmbtbgbrgzpxeoqsxw]nfvaaumgpjysgtvk
-clfcvnwzcbfaqaj[prmpnpjwklodeukzznp]zukpytpqzgmlbvidv[qhfrkjlsbsqufgnet]pfhfcxzeiowmgiyksj
-vogrpuzrevmatdbqqx[qolpybjnetsxcqfcvbc]ixxogojluwsdsldl[bztslfanuylwdld]xanhrzxetowrgift
-dqrkbymiudzhkgf[spvsqvyntikovrefqc]bzltachhfylbrzl[znefllzixypjdkmfcxn]mtpikjxqsppxlal[oeyhdcnpxvhawqbmkzy]nxhshzdshsiercr
-xmgedfiblpeazvgkss[cwbtqqjoaqbrgbptah]clzsinbtqsrkudymf
-puwqcxmsuxnmneuzrhj[dbljkganxzmjvtxgr]ekmomoccimbpbieaf[khezmkkqdwkouzb]cpkfuyzfdfxhhhuhk
-thfdbnkmqrektilpc[weshzvpsyofygysio]bffomelkkwvfsdxa[owhidyrjieeietzn]kmeqgnvyclngrcgquc[ieikyuuoliuiczq]nnqhogvlhwqipvpiao
-zsdcvcbtwlzlzlmteky[nrqtpxoefofrjeaf]myjmnezlzkfcpmik
-afyxnybelqewnebaai[ddjgeajpzswwdrg]qfwfqryofesysiuznz[ouajwvymsxmxzvgdx]ryuvawdhfmfvikye[kuovduidpcdyepuoq]didoelcmjebmytdyke
-oopihddimztsopfcia[udmncuvhkvvbcmxzey]fpehwxjiczzhqcxxi[onmizmkoyhadrxpsemf]htycdbotvmomguwbttt[gjsdzuveiuvudbyakzw]ramxommwjmpkihl
-bwlccfsaovlozdqpsv[dniiqfcldfhjiex]cdzbfrecwehrluxzprd[xpyzvlqwekcyglksq]dncoqoaakpgnbagf
-uxoopzavjdqdkaz[exsbnpbaeuvusypih]qgojfhbprpoavcbxysa
-mailxensjcsuodzpd[ftitdguigzeundytyp]fgoitzvujhkjynr[hnpcvussglqshxn]debsveizfcuroqrm[yeageekyjhilfwr]ozgpzusfpbyanxnzuak
-vxjnjaguqlrwoxlhfbq[zlqpitkigwihrikvr]dysutdfrbljdzjgcw[eslbaxzslwoxscpgoy]sudodfmlfyuczzf[vsthktidtghtmazbip]jfyoxxiaowptvosevi
-lgxmivlggzfdpductjg[qxgoioxsurcwayndy]uwlgoodqsjoxsjqqln
-qognhfgzowjikeqz[nkwezojneylzwfdm]omduvysmcovvpvse[bwxvkzoqsykfils]jwgfmwxajhmggos
-pvuwgxmpcrqknzpbkg[qbpmfthtmbkmljnsqs]zmplrxnulurhzvijupv[tgsommhtbbujbjpf]qaxqxdxmpqwduwwxpgg
-lzlrgghqmetsmcxd[fjffxsqjqctkxnw]zlzlpvksrpnatxmh
-ayirfkbsdyssjjpqmi[vpkvhbtreetyxstwcqp]rjbuxsgsrlqrdnpyg
-ukqefgljywjmlce[nqjcndjjdwohtizoed]njfgjjqkdenohbwqm
-kdwzhrslryuexdgbcr[hmbcvmrrmbsvyaii]bqprdkrgdlwjvoiyb[mqbaokwptkfmxzqr]wcauinrezkhduhcktrd
-hbtuzqvyldtvwgyumzw[dibedlwdcjyfngungt]towfeyxyxixyxee[libuilcfsdkejjl]wzzxfhwcgawuhskreyh
-oxjkoqahhqqcxcoxksg[bouywtiajyfmanxcx]xgqpjxtkaejvmqckkuf
-prhqbaccndsoscdm[cuayhbnfywztddbvww]psgyhytgosopvbbp
-dxdtcskiowtdomepjp[islofsowtuyqvcqwb]pjhyaudkqxxlwfoo
-vdatepedgnvgpah[jbooucwxtveomnpmyx]ixgsuidbemgmahtlt
-oncdjplunkvqphbyb[uvivlundxhdiwjncfq]dvhypguriulrangqwr
-vipebvitwbccsnahjhu[kpwtbwddwqgyhnkjsv]acfaqhywmwbkmgh[nryplosnxtbkpwxtkfp]njzhnytzwlprvfcv
-csvlzvkinldedsxt[dbxoceaaismltmspg]yomriudrxzmlbbbm[qilkpyxcxlvtfzqmw]rhwekeawwpyngqxzc[akqljrphobjicoco]utlunpkuptawrtfcccv
-acfepkrkhnviixe[cvksybusnhacmfoy]tmqqmgfdharutrqvdpm
-hjehtfbextjkaxilhaw[qvavsivlumfavaafhqz]ahdjvprlhlmuneewyxi[rzeuqtjkiuacirxsw]ucmfkrotfprypzuyqe[rutydtgtkppegdgjn]hmvzjyquxtydoujq
-ntosjqtunrqfoboek[aogjyqyzxpdgopkpbx]sdvftoxtcjefotm[jivgsxjogxklwkhm]cahcjmgzepqebtn
-omkznbrlrodmtmnhwsu[ysoinknpnzrjqkf]ybiqtlzoiohtldgoaud[fbzfiajeahzmiplcih]qimubctnnrmtwro
-drdygweayxraomiblsc[oglpuxzweqpofwi]mbipxabkjqcdscltkh[axbvkumlaforzbqy]ircpsgstqyzpwnv
-jefmuplsptisjqguywe[lkgtuysseapteszy]wzcehypttzjhjfp[nkwvzebjrydcwfkqne]tnmaxtrhvwvdnrhpxne
-elfqfvbjutssktxpdo[paguttthfghhyktkjjy]wkpqdurcibsvviqfqpu
-suzpbjqdiebctwhb[gwnbzgajwrorqcx]qoqdgemwbkdpsqgjds[qgozargzosdgbgo]hbsmqrwnlqsdans[vhppwpwwamtuurulc]ylczevsobuxtdhvyg
-qfixarbnawmgjcga[dhgdmxcpwpvycmwl]mkqfghairqabhmokxk
-srjvnnbutjaeikkbsd[flieajbdmghmuzp]ieimmehrnixqjynp[rjxiepmrhwrmrpi]yfrfmlgakaehvqm[hucfgczbwdpxxuhk]bvgmehildjqbjdu
-qcmjtgmmgybxhde[fvpxdzdmzkhxdzjfkf]qfnaclxnryinmvpgr[pcsmctnmmrpxtfgi]oszbhmhynpzqvtxso[qhpljywydqpnksmwzdi]yqwxnvgcwsdwuluiouo
-vhvuumgtzbrbgazpo[epktoekzvomswsqq]bbkntocwjpaxaoc[rnlzbqxqcuyltjxepz]iaelcpyexpoqavcbepy[azyksbvkvgmgimw]kvknvptkveiacqnzll
-pkkcmeinlwpoupwpu[qtoyfabmibfrubvepwx]atgpzcehuidgikzn
-srwntduyxjkpivzkgvl[hmenzrmnnisxgodof]lpuawirahbvibfki[gazzozitxhvxixvc]knbuydfpbjzupju[emzrzykcaeukvec]grtwlnuzmqivnvknug
-vzlbpuiceftddittp[srespcesbfprkwuku]bslyxxcynfqywwu
-icolypvmrgrhuvj[fgpeakrskxaljnakz]bqxravyjmdodsvhf[cjyehkcrdetiknsttv]dhoghrdxmmzxbjtbql
-nowswrulawbgqkmcee[qsktncayiihoxiu]wtsjxnvcxdriviyn[tebqonpavhbfnwxvjc]tvpwgpgrozhtqtiy[lhagntjbctcsdejajh]aedpfftlvvtmaqneaxd
-phiopnkoxulhkaddkxv[ueqfevwkcjwpcmsfspz]zkcoexersqysbtqdpc[nmcsonrswjxvdtuk]xdrsvfxrrdrfdbny
-aosrkxvljnapvnux[ldzgwtxmjbynmlp]yrxxllppgosniqv[prtvqenfqapocxdrlst]gypcighnnppaytp[azueqhhtymzpujx]lsgvwvvgctkiyvlc
-rketxmupdbmrircajep[xfmnkumekemjnwki]zurvxfxnrrvkmkrhbxh[lsrwyjtfjairiuwbaw]dyvmozkzkcvmunw
-crxtvtdwdxejpebbv[xthcfmihpjqbhrvqfkd]hztqefpqdtgyhfzqsi[nlaeacaqscestvv]ylbteskdlwjfwru[morvntwyebnmswguff]othonakykxxajuj
-zclhqcnlmxsurcrqaty[stohpulyrzcbabnydyp]veajkekzuxjmecdzym[ysujzinvkawzoqi]hfkcorxooelnfididyu
-oejzfesyaxeittrdh[yziovimnkfkadiplm]arzmtikoiveyvlsdkwd
-wvdwkqqmnretidj[smwnemzwzqhclpkud]yzguktkwahnuabs[bbyhgwmhhbpbwij]qstxwyfjjagyqvdaexg[nkerjbdjlikfgdv]qortpkyhpqvvebjdzw
-apdkznwjfxwdrsm[fddlqepbyrbrfgmyeiy]fvymcxblcjkcvpcyup[szsfswjdzmcabwuz]hmutpmhknvwrlwbvs[vpfcztrelzjnqzq]gqbpttcrakuedsp
-sujqaghlxszzfxf[jqybozaufdtanwa]rthiqanlennnowvdkm[elvfekcowitcout]ntjaqinnbwtqsctwrz[axpnqwfjmkocafoeadn]aplpjbnhkrcrbebmo
-hzkbvadkdojwmdmdxq[ohmqkaainyaufipcso]zojzxelggufdascjz[zlxncckagxntpzqa]kindyikavjkmhopcnek
-yjcsnegfsmmnfce[ueladqjdaqflfas]wcifctlledgnvodtlzw[zqswolvsfhpyrcivk]vemkuyjebqxyahb[ydjhmgjxmruwwmq]cufuqsyyytlgbpwrj
-jkkrynqxqlgxukyfv[fugivxklerausdl]shcuiixkbmzymoxv[thtakgbdzvjsjsera]lmpwzqhthoottxvp
-ncmijtczixmeyfuhspt[ixlxgrsyxrebpupt]sdoinvpfizdezpc[xckbxvncmseucrzjo]rzxfgqlionzaeocj
-xmqnycsovydhyaqiv[iuvymmaguzbrtgs]zhvxodssnpnhajwzy
-rqqzaaswdepcnnmqfif[pzkyyjprisjybnnjcq]kqpjhykszghcripq[vgdhuqujrkqljuc]qhtxqkqygazsvuh
-qynvobsdeutfrvb[fddgwzhlhryauxzb]etznfbueibykerqfugr[rviezfaehsvigssm]nwhvctxhqvfdmgqe
-ihonnjncwrkvglabk[pnjachlnpyonivmjtc]uoxellmcbixrdsisuhb[nkwsdmhisjdqurn]bowvauofupqfmxf[liiytxrcuwwnimdurys]acluoarkxopwppv
-ipqsfckjkqxkxyuvxje[arswyomsnfueuwmcbev]mmlwwcviicdmllylq[jnqpolrlwmmccsd]nfobgtdlxveuuldt[uebjwwikiebtttgqss]ikdxnjdmzbrpqqvw
-zhjywcsrtcadzdrby[ynasiklerbnlgidest]xhzwkwypktpkqgfyh[fuuxtaekwjpobdjfvdh]jcsrxmtbrqkerkrc
-osahjtbzrqukvphpe[guutbgosbfkaurvuf]baiwluaouikebnlgf[cgssqcbscupvvadpbt]lxwmvxorsfcaorccxp[jcqzcrfdkncuoqj]gbgdolqdrauivfnsyti
-vvqcdtcodesyomh[efjjzleahiejvczmsd]naeosnsaltqgjrk
-yucpovujdwslgdczxzo[fbnfueoeatnphvv]gwegeafilsbwgor
-thfmmzylspbxupt[asfhmdmkqwnqppnmu]awoxkgkgtrkdjzz
-ghbifboivgelqxkfeo[gtpozhzqfntyyoodc]yjqcvpimanwiunamfh[aglylsuuakjkmqx]edfukuqcchtbhtblcf
-qzonwqxjkpwqier[qmrnrkkwruteiijirkf]xhnrnahamaegfla[fzshmzjiczdyzqhwx]acjlrknukkbewao[afpeaepzoljqxcwvs]dlvdxhsoljmqgmvzf
-mzibkpddgkilmcwcshm[sgpxutpcqniuckl]kqiwkwdgydpnjcj[exyhorurvawneziiy]njznkaphsmgisqyujms
-xgzabblockmothpuxc[mhiwwhtpmtbxowbnp]aucpfqmnquiggenklcx
-rnhfshqrlxczmrcz[agxxpteadztvdfeo]zogmjfpebldprrmqg[zppblhkevlkqlyie]mgovaojjsutbwtpzsm
-kjgtqizmvuqerhb[dmhtzazyzqwjhpn]knmrbytrwrcsonmshb[oiazannnreojooa]hkhackgpdqgyqsgnb
-orhnenfhsjyibqacq[tznvydkguvcwayiwmi]hejujxsitqcaabjwskl[qhpfmxgjdfgtgmy]ahilwlhjkfytezctsj[ewxepeeisacexgtc]paxwwhhpaukgjnafuwl
-mhmfziehhppfqoocvju[hmfnlywpplffsxwzg]bkhkauhasnuoglve[oytxewvmknoqchvy]fyodxbpsytyeltnfsl[wojcbkfsswlcuqcz]izcrkyxzjclhkfuv
-slabudcjhktddar[cvkvaakjffjjovgus]ahgxzdctihvboiarn
-degyynefmxidnbw[zcfgkvupltxmbhroi]dbnaezqekcegyki[tjrnhpsmfftiscppybi]qgyifwlhvccshdiqfx
-sxszfjmiathxoqnxg[smizlxpwmelqjlf]etoglecoddmflqma[hsggyxsxkhhshucgtnw]oqzadjxenphyexaqrb
-kqwjndajvawmwxs[fskyhhktkilzwjtkt]ufpvkdnhygmuzfsfiso
-iqdscwzpnnwehtqmwrd[fqbmsfrezrkhqcw]gqkpkiqhtrjpusoefg
-bhwbuaqjofxcbuxrqub[aaanhuielrhxhlzscv]fkgimzkootysfzwcan[svktoznaqxkkibhigju]fmqhtjgxbrovymq
-pjybsukpzvvyouum[rzeunjnideaseer]ltquzytuezonpowuhdn[wzwlbeegsgtwpzo]hqivrviswwfsdmpgnz[fhabjemewetsjrjhy]lgbwcozirgljoudhng
-ampiucjqxwrzbdtcjnr[ufubjvykdfixyzqq]mcxabdvjzhohlcmcu[xihctxapmjpmrev]mggwuizzzxymhypmcw
-pprbxhbjbnlqecvmu[ewuffgnuylwmrcvkbku]bntyrptthpmexiakh[lswyqkuxrfzokacp]rvkhcgbfnjivaagp[mnpbbcgrakjlmdqt]bujykhlbutiiqyke
-xtcidzkptvkjakxl[kwjzzydtkvjmqdz]httbqtbiyxwryblrfd[cyjwthdmalqkqvso]knfncfebbbueoqze[zuruluaalfysbnmf]vodfiptptwqpnllvbdf
-wtjthnkscjzzqrbpc[eirytrqekucxajz]ghycghnyntrthzkechc[eiylrukgxsqpetjfnv]xuiymnuzydlawjygi
-rjrldatkdhvzvgcux[iuhectextisybzvz]vycerefkzhnmdyg
-lqftkkvpvepilrmyty[uptcsbeqtmcljaziisb]himkwiqkrogoyhjpru[wxocqzrdgaclbeefd]mtytxwskqznxgpfex[whqbcssppfhqedhv]cbtiuzgbvptcticlbcg
-pbotpqbiqdjzsmpbki[zqcshqinikcszjm]xjxijypculvuoavvg[nltkubwokrppvzifi]dmedgmkonytjzzk[obonilwwerhchueuf]mlfqiwmaicuecljj
-exlndpqjplyfdbmvlji[fzzvnaszvmpwpdcovj]ymothxghgfddmzqtglj[wyfqyqwrhanponsr]ydpntagauckmdqpjb[icumanaybbefssdjnqz]owhsbdpufodsqezginf
-ukfirftsouqdsgbgmht[nrkpwksebkijlha]zfkumnifusjysuzt
-uyzxwkcgjfsekdhktx[qhgrmuyjmfmunghm]mgjbupndudwultdnnt[oczntpgnyanxxgdqx]oryrlqkmroilyca[xbevednhpnvzzwmrorm]bdozfrabvamfxae
-toqvrteazudmppbrxct[cyiebroauwofshvceeo]fhoxdufwnvmlwhhp[xykvdatsfccxlfmn]zpqqflqttorrmjs
-ltkcveeqyawjrryerqa[zxoihtpkswzjrhnbvz]cfpirvnjowhsnnbehd
-gdiyzvnydjwhfzrimq[lvieihnyxtdrgrbs]kpotvolpjgjtfiqf[koloumkhoyktylql]cxgmdumzkygpppqe[aywuzxkrvrevgnnihh]uplcpitzxbcqkmfgsy
-tskqojnfadpujfxym[xomwfoclpvyejczgyy]lkmawlhwgnpccotaetj[fvhbgpqqvasfykn]xfxmjfyoygcsbxl[ldveqjhkzxczzgxhbxh]tfpibohzhgrythjgqor
-xkduagbswofivadpo[mxlqngyjwbqfsszj]xoxngqbxwsttknmtcyk
-zvmlodxbacmwvdti[itdxiimzuvluomfxq]ymrkoyojdnsjqvl[dihqibcaznldgoteyx]thrrpohvatzogxrz
-soetmauqgsswblf[hlkchnarzzrgjawosj]zsghpkoexwcujpakaou[wvfxggiskbpgntosh]zbohdymojoxhndfr[qhyzatgvedhoibktw]iggjhmravyoswvu
-mwjmmmeiclpjmvishbx[dbmbrjcjcmbnqxq]mvhzexhgdmmnduc[yiccjcrvmzjvygs]uyvqfjmiyccasgzlz
-dsfwjqahjoozkpei[olrrkslvxvijsyopa]jmzojmvqtzvkhaxukkv
-kudhszsgsrenjqcrbp[ipvxqnbradyxoline]srcnihnhywqlietbgqv
-eklfpuufieqqdfrgouk[ycxgdyairggpehtkim]sdfhxncpiqxguzlqw[ysjhhepmruqaegxp]wklvpveoxxfyizmf
-apdypwjfmxhjgojtb[zojzoufhucunvjr]zjpuqiciaujfbjta[wlusnbuvcffrnac]ecaccicpvcmbomsvf
-wenmnejyihmxaxdqwqw[rckytszqrgaxmjpbqh]pngxudjgdtbshebyv
-ieyarudhbjrrevfodgm[grmjubbiqdodhae]mhzexlzijmzpltsxjfa
-byfyxjxqlcpjxbpd[pdqkhutluqjoelb]pberlwpeqxmovie[zkholwknvgbfxcyymye]askmwovcktpqhcg
-ccjcygsnanyvdss[frpxggwvfjuugdysypg]tuqczwtmobkusalqusm[ignjrlsysasfmzasa]nfpomrlygzjyylhvypi[lahpgasntfymdoub]rlvsrtudkvhtwhycf
-omuyrkrubieiduzegr[gcigoszvylmdrlrc]jtlrlsgqxiqtciehh
-hqeghunlieoqhetnh[unjtmdurovonejpsjtq]xtatdniykzzxpufps[ysaytzqvcxkvimhql]tyfkttaoythcttexrp
-ciyuspkrywyyplmlro[myfyzvlzntivldrquq]eighmudngyiwlsme[eukgbrmtghntxpacth]pmvxbxswfexsnkxmm
-gdbeqewbrhyfbfpeti[yvyiclmkwzelbqi]sktocytuvyvpcia
-gnfkqxrtauwnkhfoyc[msfhopavdyhpvpttg]ewuyaxehxbyziwmxd[iyqrfiudsalpmpk]smpmubdejyevdggead
-rqvcsivlxhfyboxj[flvvsnglektzosreb]yrfdzdgvkzgrxqoyv[rygmqeiccgtqqmni]frypfnzvhkzvlabrr
-idyqowifirnwhkk[vloivxhtkdzjrbuuzmi]beozwodgehayklyr[cptxwcsgsapmprrp]hfrdeefhyehwwvghgdq[prcadfsulvamytpsfo]tyodjlxziwyqtqmi
-tdwoqxlhhaqkdmv[cxayaazioswycmwj]pkenayaygxyrtqrqugi
-vtqeqlrohgalpwrqig[bewbjgeryrvhzwetm]hpccsjcgunkysntpwp[yefsyqedopuhssgo]jjkkuwoyvhzzcmdlvv[uqczrglqumshdhkdkut]dlfilxdlomkvtjhv
-fezgzsmmxdvhtmy[rrmbxexyopsrhxag]ezltorfyxclstzhp
-ytcnqprainktcjei[phwarjaicrgistkt]qdtijjhbywixrie[llwwjrzrxhaqhie]ufaezqgmmdhhzjzrza
-uyvaorvuqwbbexmafbj[tnpwadyyakeawtdextg]tiqechjccyyczpvbf[vaqfvvcbrowtjxyu]oqswjgtolyixytoj[ismczyxhizrzbbpscus]rtlaqgqrcxpjgmih
-jzamkswiztvnelaqnqb[iptcqxmvbgyaeiwob]xnhehagwcwdgsvpomgt[jsasqvgectyfdja]dgjdtjlzbkyyckvy[fobafodakfhhiem]thozlpiakivgzzvemu
-owfgxupnufaiuovcesw[jeskiymcmexnjbxrbp]obganlgvlqdczqrvwad
-chsvqakwmnabitpotyv[eqeyowfftbjxdkpyf]cflqouimlafrxuqvh[vgjbvqafqyzexrzhr]mnywvcxtgsaifufkcu[rtjuztroxgmpkbnim]xsqyofncdrvdpin
-kufzqdykjclolpveo[fopvuhisayecxlainzx]wvrhymidhtoldhb[vylhmdjqsdhokif]megnkxywjthliwepc
-cqjpttuijfdzott[wubeiefulpuuhweqv]cqxbaudhnmrvrigogf
-hkzaqueemmhessqjq[xofafbaefryhwyzzuoc]yyzaekuutvjrwnhonpk
-zsgyhvutvjmrgnmar[kbxkhssdsmefafntsr]ocjxtkpqmugcvkopvsu[dsdwezhcblqssurfmlx]veiioiyfnncyfrdwyv
-nsqgaufitxefakffd[brdfctppxqczvlohw]ntxmfmrsajxuqmo[pbalhistyzwnbfs]inapnupdvnwtlvvu
-krtwywfktmbdobnq[msnsspogynsnwdb]efcftgrjdyygncnqdks
-rrasplhwovftrffuw[txyylwsjezcxalx]voncsevbgofoiiolvk[axcouuspjtfzsekglc]qoutiffuqnorbpnlp
-etyvjsjqwelcdzpnjxm[eetihszvjrmccshr]uskafocfyjorzhdx
-rqfzvsuredndurz[ebgtddsixmgsugd]ilczpjzsukpyekhobu[eeciaduigoflustith]ohmscfdomzprzjncno
-jjjarldpnxgwvlxve[yjoqlmnvtslexafgvbd]yngfttqfsebrcwtctf[bwevtymxqlrpqqaage]wdcaqtgkvmzesrjex[svnkfzogwcsyfxoxh]hvrsvxcpdxqmlfhb
-ldwuplbjkimdskui[flisuphwbiqphsddaxk]eelzsgjnvecwedneyb
-busmmdpbgxvdiytw[kwlhqlohknjgwfh]xgmkafonkyzffqtj
-ngtpdikbtooilycy[dwpneelecozfzwwseg]kwkwssbtktxenqbnyfs[lekbaoqzpvjbnuvq]vhlbuorxxxxztocuiq[rscjyzvyznunxnun]jhipkmizwfpoxeuktk
-leghszcprzadwpwlakv[cauvyhahnjycqgmslqr]pisyfnajcsrgnvkhcmj[ozrbuuodecumxzbsr]gtqbofuoteafyjk[sodglraziyxhcpm]lbzccqgejtsczvj
-aiqnofheehbiqxqlg[wojpqldgrsrkqqpywb]dyxygexggvertuktz[iolnpmkijfefcsebi]okwjyjatnoyvlhe[zbfipzfoszigysxpwu]jitbvwjmknigdnlt
-tvxhyndcnfrobfrdvo[vwbjbbozwjpolbmlkwd]kzsgbhkshipoxtfp[sylshvahmztsbngdl]emwcmnpjzydlvvknrhn[aarrocnhsmnzqgozo]uswudvvjntlhqjc
-adbrrsdjlpyizfgvuc[qoimvkfjruwpheezeuk]gyjjepfgjpnyajypq
-xgkzhzjlkwacqnihyns[bmprkvdabnasxzqzwg]hxwyywhnuntidvpg[mvqpemdfnvvdlpul]ttqocuncdebtomizabo
-zztkzvwguaggryld[fgkabjmksknxlfhzpc]iysntrtaaweknzbxemc
-ocwsupvhvpcgwehx[vnmhfmgubwbhhrmkp]hqpkkwxwwefzojltpph[bvsvcgwsztazzzjoxi]iasiueagvwjgmcugh
-tkxywinosybkrutpu[eluxrinxkarduffy]brxgvdsoguiggjfemb[paaawmhcmdxneql]qtvmkmlldspsheyac
-vzcnrbtoegbsuglk[rqhhdwpschucsvlnq]hzjzijxkcoxpwhi[glryptoeiosdosoj]fhduvpzlbptbehtt[yigihwrodvsulsrsh]numkgigkznkushjc
-oexrobvxlwbqkrigz[nnbfhaheuublajo]pvlstoxdjdlbroezlbj[ykvlcsvqstxycpp]rxxgokhffgyioltc
-cstzrhymnqxwtwpnvh[dzbyzhzvaooswlkdrof]dzxgsohzaxvkiwho
-hftmeaqbiiefqtwklr[bmqfhgvsfrywauxq]brzoeoncrvljpjqxpjd
-vbnuypzeryxltunvcb[ldnuxdvgfcbbysibhop]ejgwhaxwgnnbfide[okhykghpvystpufnxqr]umdmoixuvfqgecr[rkwsaizjzxjgmmftw]czzteyolfgwkrnkxid
-nvflxkucsnbsltnp[iqhnmiyolnoxjzjzjvl]ctdsnjzjaflstsy
-glmwwqvembkbsnvs[skbkkvnoycklltrnyrd]irlewhaeagdiojbr
-gmzbjlrhyoqkiyrb[nezqwphjfpghjubnw]lflopkhihhamygznxv[zuecanynqmvceqxyy]kddyqjerkeuhuamjxcu
-kwneigdpqhtznqaide[ncindqlugpdagtfzf]ctutcducslvhztsii
-vhjlncnrshwikfm[amlxjsoevzrlkgoxnml]lztearcwiosrcmhfi[gkdbcfroyrgwylu]mwhzhimfdrflqqihaq
-wlswesjcluvzurgrnul[iehnkjghqwvennpj]znqbjbnszpnklctx[pkxxihelrhfkiqizi]dlmwkrxyjxaumvtlbc[icgjedlkxpjwmauu]cpbstqjtdebbywkf
-yxjwddyrzrzhqrarheo[dcayrrmkvazrzzlpqh]gkvbwuimfochtndis
-cmqdgywvwqpfkixkga[zkcmkmqoxmpzued]iaerrfcfhcaidkkvwvm
-uhwbwhbgkrzntdxrw[pchhzpiwclaasygyqn]oalmglktkidoijgyg[yugfmrxigwwqldfsfb]otdsjvxzdlsdhnyk
-ctjuabhainyjydm[axxsgakjkreoeifx]qaphofrkpiflusbeecj
-hdfthabpjjuxgoh[zskhkbvmwkfmqct]vmqfixzmyefzvza
-wnihepbftegtdrtndsc[wtmfxwvxzxorhbj]oqlfpicrqpjgvmo[zyvhvkalgcwwjucnxq]ppatiiiatwbpyiwjr
-ojaqpoarskgzmtrj[blfchukdercwzqa]anfsoaopkutqfqltry
-ofijvkbfofbyadh[xmlicvxwtnufzpn]jetnmprdolywrbmjes
-fosypykuipsqxaud[tbfwtcrdgvidqsg]tvmvfhrepppxxwme[qpmrvterftfxchiv]flnooydpykdzrtfck[omhwxcdomygkbaeqrfg]cwztbmysqwpqfuig
-lvojllusjibvayrr[izfttqfhjethscsrghs]egzyjonmwdatznvzjw[mfxjaelqslyvkaqir]ckbkobhykxhocczot[oezwabicsuchjia]ivolkjcvilnlsdnk
-acytktosnzjatmwue[medgjpfpvbiqgld]rjsbxcwqhrrklyfuu[xclxdxjcgjwkervy]mspnrnsznpccgcke[ptntxmnzdrorgoexbsg]bovvgignwezlpgoy
-wdefvabtqsgstwhdxm[otahaybdinlnszsaan]xgjagsgrnziuqxjasw
-cqkpuofhsousjfnlfxu[syvkhshtiyisqmrdp]vtvtzgdxigpsxcpdkt
-qwagfdeyxorxoaphzt[kijseqropygskgre]tnpsgfihigocogn
-nvppsgsgegzthtmpt[dsjjswqmzkoqtihud]toeoabpfknrnwqxk[hgyvhoktbvmdvwauue]pniilifxxtotvypye
-noijjdbzbeowhtut[tlfprbqoqtftqnjjs]fwqyyfzzbzjeykhoje
-rewfvmohscszlog[dwgnxketzlgefgf]fmvoxbzpxywaicq
-pvtakzfeeithcogo[mbktbqqelkzddsmn]nuydimwmhdyhrls
-qfzdrtjoipdlwkd[fsymmkclzvcdvqexr]yrhwcyjdzgwhmuijhth[zgturekjlobpmcje]eywzpwpfahsrwpwl[bgyprfkbmyaixrqj]fvhhmcltucokvqba
-vbpnikyhvhqnemdo[lnyocyrozyteoxalil]phhqtzpbgpzrusr[yygaktzkmithtegl]cskivnspoecsaoi
-obaxlisumjgehbkpea[ehzysfspgzssttpebuy]vwceybunjzvlqevd
-fpanvbmzhlkcazo[wfnkxffkzmxnslov]gtifhhnlnnxkeaolr[pwkmfvowikzjctrje]anfzfrtlihlyutaq[vbujdswyelmwoudg]lckbqqgkglpkfnhu
-ubsustsojocdyjv[obkxihfxtkbaeusurk]zmlqtgokothiokq
-fpgjwchgmuuwpzquwf[xtluejeypvgynbsdgip]nyztcugwqufjpakuxkb[yanyavbmpeqlalnk]tknqteuqrnnorhcm[eshuljurljirasr]supqastijujykowxxhz
-solyplfhwchyjtchjuk[wuwirpjuevkxulrs]axqqiqzteislutclbzo
-oktlpryceitvhqqjqxq[ufupbpapoxovifhqp]xgrwutvfooowfaxs[yxoxzdoqyhxsiwcxrgm]swmalhlzrknfxgnamr
-kmmguldgktbolgarsp[lxrqjtqbuhuthezfcfm]nhyafiyealodqrmagqq
-jfowosecwpywmrwka[rlvhxlrwehljixaggho]tadphuxhvtyxkgvyru[kdwmctblkvpkral]ufydjpceosbxpcy[qkiwffygsjragvq]zlvqihgbbhdojkgjgj
-fjnehklshlckrcdhxk[umipduxaengqrizo]obuxhxbrybwifedma
-dzeftgulomkuwyrrm[aphjorxpuphqsqmp]nnslfcfiblaexsbftwi
-eypbooqqyvqucqvyys[rcijvtatnyzpafpqhwi]jrpwrlhuiihzfwt
-zikyfwsyxwrtrgdkjh[netvaemiverwhfctosi]xwdoncumksuzsryj
-jxtpnxhjudmsotudd[lgvfscyjpngmela]wumifhvbwbmmticp[dvxmvcccimvvcrvpist]czyqdmwoqjgnfvjuxul
-fvmjytywcfdqfmfvj[nhufehmupvzkcrtewz]hyxlzunwnjccnnphrsg[hrfqmrewnweuyulb]hmqxiwaqfebkvxhv
-peqyzkuviznbwojhtys[svfilvdawzpmtygynd]fpfggygzketpcrrqx
-ttcupspyysrbukznk[rpewzuewspsqthbqb]yszbsclsnmbgoazsfl
-vwoufilgfhpaqfxt[dmlwugzgaywwzqb]rkwtuggupfsffridmux
-faibpioziimdefafugx[unrfywlgqlxqmwtxrb]owzarstubtqbwwjlh
-mvgbokjnhpcnsgcpm[vznublzcbsgzahkjprq]qdhqdlpftbetdzckvs
-dgpkamepjkfizyaknmw[ctdimkbvwctjqcbl]euwsfdqpvfkrxuwr
-rjcdwjzbrqqqqljqj[vsrppwgvlsokgpn]rxpddxouefplfnctudb
-lhbnntitpjdtprbd[cctbkujpuoegzrijpus]xbkzdntmvzbzfxljvt[brlovkywclhnnoyrz]rhixzndklgudnxkr
-byahaivirlqxulwdoe[otyasqivnfuwxmpn]vzsqfapigdecsmaqd
-myozxxksdnucpxq[jgpjjngigboxsoy]tidzlszxsdbqxba[lctczcenpuntfjnf]hzdlcamkehorgpz
-uoylyvyljpnzqimzgh[umieqlmcsmhnnxle]zvxwqjbaemhtoexyzr[gjyxtenkxacukadvhfh]kwagkgvaqklyfurjnar
-rqzfgsolwpyfzeg[fqbhyjayacblhmm]egufazwxlncxundcyyw
-eexntdgtjwjtizhlc[havetzocjnmfnpgzl]rmeusmuumcpbzodie[efuqzkuscnrbxwef]ehxrajahcfdggjyq
-ozakiysvzkycefw[dcjsobqhxqyxnvwz]yuoszalpobgzxqk
-pterhsdeyetokcbtzn[cdooadgsexdxfzjmo]xdxrkcynckoeirmjnlj[matsfmymdliwcqlqf]llnuahmiztvbbpise[egvzoittbupbbqrvd]bantcrmtkbvvbxi
-tqpfhtrunndzpsd[zjzqvvckxscqzavcig]zquncdjejdyzegvcm[sxxdynlbdymictrfspg]smgkjimutkedknlppsa
-byjykuzyigqofolpgf[cybrboapdfgimjwjm]oczicilrowczdlcy[tyaduotkhfvyatb]iklhgcjvfdyypdrdbz[dqkfqaadlcnxfofsvw]syuiaqaemufewlijxk
-flbmovywhikcuedd[xyzunixgypmuhyj]loihlyylswpxtenh[jadvlnlzdpmoghiir]xbiwlfkwxtthlimngnl[vgtvhphgxfsshkgkb]vttcixaajhdcjnqx
-xxxluypjxxutqoozzn[gufawigbmnhtmwhcgry]yaldvqcedheoocj
-seczijwqqpigqcchnz[snihttcoqeotvsvxtsh]zzgbjkslldiespjeejy[dxpgxigvppgnnddyd]hcwgvtogqdyllyhkqj[hbkamssyyusrgbg]dnnseuhlwkwnycktlu
-xeupsswdnrpzqvl[tmaszjcshsavymzuog]svjeaxmdkgbimlv
-dktkcbqwdeomyrp[fqaiihosklfctvufhw]kscgwrylrgbrxjzogj[hqvwmstcpchcqkowtxp]xfooorpnwwfrqstxft[zclwozroattjxczqx]uwnclgxymympirm
-yohglmwqjxpcgozvfc[ojnlrvpzwcwgnfbvf]uwjufnumsvqwxpg[wrfczzmahjdxdzhifs]psipfjeacaysvubcqqb[paeelhpmpjlvbal]buinqeedxmiijkxpcpk
-ficdlwimcpzelkxcb[kyizgumxqprpckyyh]lcwwypjwqbzhtozovh
-bycnifysnrtdseez[xombfbujijpsrccccl]tbvuubyduxnascxjkds[gteskflapsthkzigcet]otggllmgcgfgqloehf
-wvrrowjovflnwpjhhrj[dqfmznuqmmttqtdqnp]wevjmhhfmorcrvxvw[cnjtxcdcketvdidcbu]icghhdkudxptbdcdhik
-wquydkoyevtyfwqyimg[bhbhiqnxwfrcvqcsdq]hvcjbihyziwvmqr[phnejggzeulkkbdxb]uzpvcrhqhfkdkwvxcku[piqegxvplepyfjff]xqgfyfmlqqgcsnngmli
-aiufvoznehafclsi[ynuiezokzxlhzsnlnmw]buhvbbmikiczqjlfhg[qfqcudscoobzjdwfyu]dcqxfcrpnhywlcabobo[piypuleecpciydz]xiendyljklimrwaexac
-bmcenbqijebgornj[kskdxdmdlojqtjtw]kqpwfyitjbkfubsh
-wjivpitbdiigvkhfpjf[ijhxqgwkoctfiyf]ezeuczihdpeegpnppj[rdcsrurelstudtzqv]afvyxjglfxybwff
-rypyyznanxetdychyd[srdvpypvsmzquaeec]qzehxnsvvccjqbjres
-disgynuubaeuiwg[qhmjwkqbmmjhjze]zgunyyctwtucdho[xljnbisahxahllyiob]astxdjwqultlphiijvh[zmhdobafwbzdndlrm]hwcwvfxwjynbaxidj
-cdhvflnylxmmlsgo[oollmpblrqislxgmvvp]nivfytkylfpufcdxun[bocnmaazerwhgtzt]txxystvwvrsyoym[iafzkvskmhqjdtk]pgdgojbemypqbkofwf
-sjtahdwpdhuosbqyss[lopwkbhedbpxtcw]bvtrmrjxtncfnrw
-tdofrfbhpawcjokb[ynloiqgijuwanfekxsz]fdpwynqofzqumlrelfr[orxakqzzdjfnzlgywae]udzboibfngqztfguv
-huwdaehvnyhbowsp[kbskeavlxslbvco]sekeunfcfnrsjqgqpcd[xrfzxupwqfrobegw]ndphbckizbunwqmykse[qyoqnkrhdydzuir]romctjjzwxjbxyqm
-eyutpqnxiqygxwt[wxsiplbaidmlgph]vhlavtrefmbfpdfbju[owuuvbqjuailmgynkqa]setuzkegazwdjyzskty[oaqtnegjwglqnyw]pyizfgyjbebfacjexkh
-bxpzupefyifcfhkv[fyllboalhcmvoctf]bvfifvthhaovzixpx[vtppcxdmlfbfgvgolil]gtyweatzcejbwtse[prplzrovjaeczsyxc]jkylsdulnhfilbsqh
-eedtujnpvzzzdpgfrm[uopptnavfamhccc]qdnckczikmbwkxfmst
-hzpjojvdukrnakxzkdv[gychyosqibeedkj]efhirtkgyzjnrqn[egmuiotfolnlyjg]nbleytvfmuvypkpabt
-xadnnqlykhisnky[hvfudohkwpthdtyxe]xumogpuzbvdpbnapcw[gaavnafcpfbycdpvz]xlgtfefhzyskqazl
-ohnpejtztddevoitaw[hoixesaghtpruyayyzu]ksyuxpootryqgsfctcx[yoazsorvwpkcrjqq]allrvqctxxhldwwzil[rxxioewpnqttrzaevnw]tjgvhfbpninpzwvxtl
-qhapfqjbpzieybx[iobyolfvekomzeelsd]ygcprxtqzmwotja[pheachmbpziycyhykp]yhlmlzbdngqpvfcjt
-egcxwspabytsgsbam[hewsugjwdvnywgjhrsb]gbxbpxonzzllmmkags[jylmvbwwjvmvkkgvusd]fxckijyjjwfrmlzp[eiohquiromkekgsbp]bpimyywlklqwdpfasc
-iypuotjzbcsafzclwb[mudgawqgospvlepaexc]bsqftdoatnacbnpqk[bxaxwphnmcxlptaz]yhbsqduzzzkviyxmv[cfeyjhtefuxjqndg]rknngkyxrldxnqxfil
-epqhofdmbeblgqjcpan[tuffplppwdkoimwbu]yiyfzqemymmtzevrvtb[vzuuiqvvudpedkbdgq]qzkbzuuvgzujipvh[etjfbbzkhkhvlslkjg]sqkdjmgjilbpvmr
-cukbhochuhppwcuwwh[ziuieaxmtjrcovi]egmfefvbqztrinknvh[tcrdwnuqobusvhhhuw]llwltqrtuzujeuatp
-uegokkxxfybcozva[hwnrfpsyzbclsubdc]kxssypkvfyghukcsted[uvtzwttuxxztqwwyjx]lhlyeezyttvgxgtz
-vgriivdekqhhyzgmc[lkzxlushgdqezkwkbv]aqtzbkzcfxrkuwkw[aeubxxnhyhlolauhnu]qphfpphyptbmbvcyutk[xscabrjhmsfredzulrm]torgsvodiuuxkgcp
-blygklicgpngtpgcldl[melaiuchcudinutcx]fldhqlhwyjqhgthjsrb[qnvfdzzszgaedjqky]amhauyjuhdistfgbipm[irrhdtrtvlhanuhfb]cszydrvyiahzwegkdiv
-yrncnxrkuamoung[vteffidkspotxmwhna]lohvncugddeuevq[ueuixhkoouhzzfucs]xgwgddhczhiovgacg
-gowzwidadczncgofqsa[gzkezmlagbaetlf]oochwgecelkuokyunem[slzawxgblqhorfpezd]chugkzdgaukccbeoi[apmckbkkvlblsel]tokgjnxyppksnep
-zyqnagblhgoyiqihy[oisqkkmqfxdtvfx]qrpxcdxvmtlqbgvm[rsoqvutimhujjhbwaf]xtdayhoscopmejfxz[sqcpfrehprvngyagm]ecwgbravfceaajqg
-nntkrxodbypdodgtj[lnlglurkrynztgae]twtxdcskknbsbinlnnu
-meztofjunuxbkfx[cthbsibrfgxjyjawtv]ujhnboyhpoyjprrheg[qmjwvltvyjgntydrmeb]dsbnlksebapwyfrtr[aoyswieertsyvbfijuw]wfzftnldrfdpnmnn
-aanwuubqnptyoryyrw[izbhposjoffhknmia]pmpudrwiwouwspqnozk[sojpnvluazibqcqkw]veawduaoceyxmzwbgd
-aenjhairjysyrfylli[ksygiscororwmpcbpl]mdggayipjsxxfhz[zrovsdxuwyxjjbfm]vpmedxtfdporoono[zfnnenxocrbtapmnezl]odykztbwvuvlngxkwm
-aetllelassgaxxhspd[knioznfojvtrwjtnvfj]zmdmmmgudgcrchsuufw[qowcvxqgjaoptskz]qyrfhavolkmidaul
-gkevcmsegjotmpa[yjvykufplocymkaq]yhewirtmatswhjud
-kaerzsgqzwhdrlzk[fgmfnhjaylhdvepgdr]smkwpurhnnhaqccuho[cznwafhuvozqolaruqx]ktiyadiryeclynr
-qnfeguqpvoiadeipxs[tuodvfpmqdlndroq]ruumxxencwatfiv[otgvbhlyuhtbtyfews]swsjtpcysedmpsgwao
-mpxuvhlsahhdmtwlhz[saxrupcdkcfpmpvzk]rctxchvmeqnqsxqizr[isqtziiuucctgioof]vdlchnruvtuupzvukfx
-czxihwpinbwjaatnmx[quuiszmtsnqdsugbr]fhhhwhvrnenwekmyi[phwhrltyjkmdffqyu]woxrbiznmygdqbptf
-qwqniztrmqkkiyg[yvknzntvwmikawjlgh]izdzijciztugcknoi[mqpjeordqprhefbbsdj]rtwjvqdagpycdsxtd
-pyslrefucxvqpgtnfd[guaqdwpjlwhfmmyzxln]unlgsygdedtpfrpz[uxytlfxsaeouxxdpdb]ufpwpasnaiqyqnex[kiulyoykitwlllexti]cvxikzspuywpgaud
-rbzuremuvpunjopiw[evldkwtjsfwgvdl]unsafmnksqehiore[ipvgyeheeuobibga]ohwjoehyibiihubwuo
-zlxdszmzwikrjfjfh[rmzbjspugrnhysidi]impguvxjhbhtirmdihz[wlpaqqnimsearxzka]fftirrvfdqzoyusjucj
-yvzxaecltitusbcfqv[witiggtqtgarfrq]bhnbijcfbhoqpojeuqw
-peyeydbwowzleyebpqs[abxvydhobwmlksefjy]hntuuskjfvsfwnmh
-gxdajcawzfzzhjbzpxm[nxdsexkhsbaviwzw]kojsiljoybqxuvi[razmescyfxecbmzc]fdayjgkrzsmzngiszt[sdqgfgolavfqmuzqag]uzbbbcwcizcmhntiom
-gssllxegqicytbgko[imezntkypaaclprdo]hojadqftyszdiohirac[wcpiroednqmsrywvxsh]gkfmxwfuaykpwmdukm
-iwdziuryoqkhqzukcbq[qdoppjrevjmjuod]jewewfyupjnuydkn[ysbuocvxflmhbdhlb]ggjdqbzqfekjbbf[ubywismzabwewsrl]fufmyromzqrxtxsijkl
-tbmlgasrsqjxwto[mvoqzbghnwpunzvxu]wxnwrrzdalxjlflva
-hlalpnzdmwlhuwewel[uqawlldafxwhejwbxj]vkktsmliwswarsq[isoseemfosjusoo]bjbjwogehxaqhasloxq[oktpqmpxmsnvbnsubz]ekgpiztxkkuvpszb
-xfxkkivnffdwrqecja[lvgeafomwyqhlfd]uyvvthewoyqjyoo[dcoayhnhnhakcuv]sfucrodbqeqcqhpmc
-iqfduwigwfxgkhbge[qojiewaocberonshm]toxtpcpkallieefn[swenxuejqehdfutw]oaiceeyuhhzpazuyaiw[gqbyuetdmvtttffowv]neqopgkvwqemnrmauc
-bbwxyipchypnmsk[lefobpxeokqvfglny]rwdgvzdupkxjhppcqp[onrpulkcgonndkfq]eegboakcdoqrmdgfta
-yxeegoeubfjhijn[pmdjdggehnbtvfqkdk]ofdoklopgeznrvssgdc[jidbyndormgpitjsl]ucucnufigpzjuuxdq[phajlefstzyysdkdrh]vziqmjzpeeqnqholz
-pnlllqydepsbgkrhm[ltoscinqrrvkdyusds]qwwtxmmexgsfqgoh[uucslmiboquvlso]xmbeigfpdmodrodwbp
-jatdtuzlcxvgwpryf[dvyuqxhxkurrpblehq]vowbsishfgkjtvicd[krvikdxyqlwdjjnd]mujppmtqzmeviflf[ihqppwgfywzrqyx]aobhudzykvgwwhirfiy
-thmdermwtxojztany[xcohmubhlagpuew]lnlsiczemaohvjhhknx[spnegzrtgilojpnoxs]spnvmefqqzpdfzset
-jccjsrpjiyokryde[gfwdanjjnbycygt]iqiuzghicmveelbxp[tzugzompmkteyydyeb]bkvntycebtvjlgour
-rzskdzdoxsdqinbmjlv[fnwbduvtemtogsfi]oayebzmwazggkoo
-hzpsgtucyxemkvmfxy[duxikzpqdgcmkbl]bluegvpkqmjiyzibglc[qruyknjgybyboyvmrsk]pqyrdevwrpeatgkyo
-uubdyuzvtcfrrdl[stntntweakppdrbqk]yoiwxzsdefzihdnilx[vvvsontntjvgcvanni]sqdbtjoziwfolwbby
-tdpetsinuufpbezbgpt[hpklzrbaryhnibm]ucetauqranqexnfdstk[sadfrrjazeweeec]jaozzdmvmylzatlon[gyrmfjwewarvlpsh]wfojorkgrvraihwpaf
-sarrhlzjldgzhyuvefm[braqtukjacxtcbrgtx]rpfporiksxcacot[zezcjaonoyzxnbgd]jmrjkrugljonkzb
-hclqtamrzmzkhhwcd[hcxqnplterhqgbude]kduskujldxotldizi[ashjjijtmbppyhgxo]ozdvjfhxmojeqagmoa[dppzupkveblwydh]qonltaesyzvczgyng
-urvfscylyvpyvpqwl[akngblyladvcuwa]pauygcletxnisgriad[ovsqsgvuccmdzqcwn]jjugrvjyydebzrjghae
-ohvihbfwdsvpzohtu[qsxghcyyscnxwgnspni]kxlgrkvsbjeomgckk
-gzywjgljugwxnrv[mssfmontfbahkya]gfmnxglcggnbrpvuxv[poejydksxougrcw]tiqmbdmjniaqnqgptk
-hillvlrgjsewmjkoha[iighatessfoqwexqdc]iqwztbnauifcazihogj[xgovsowyvdafqch]qfjgljkcgkdmrnlrrmv[hnjcrfgkftyitryole]muemrwwikauccsregut
-vmdrttktgqkyovr[myycrednrrhozjdhiog]qrrfvxcqpthdfcls[nipthbalwkyqrmqy]xaprggoudqizdkqu
-ofmohzqodnueziyemx[njkghrspckzhduwsrg]fxxnmxloclzfmlkebpl
-naurkqfrkpbbfkmbe[cpttgjergcoemawxjtl]cdkngakkemsmtgtwyzn
-xtwigprawkooqitoy[dzapkodeyqhkixy]zrtxkzjqgqeuagdie[vnieacbchbgexzaf]ezbpshpznqosvuk[mcmcfwuzlyodiqez]bojvjhtatwvmxsxhkbs
-muiyjlnqtepriyly[cnrfxiwdlkrqsarpc]hdlysxsdtpqxquhnz
-clmaeawlvsluxfrhl[rayxcpbervctzew]syqcakahftovtzcdl
-ljjlywtzejfslouih[hmsyjqsqljnppyv]bxdissuzzauueguk[xhyiqeotzpbtzsrd]wapoxmkfmxhbykdv
-duvdnbsaqzqemzc[kfefbyefuptincfaw]jhuvhgdqrnjwmlfrmr[niprevfcbwagwvewhj]hdhrwocbqysjstefldo[uelmkdqczcnlmaefjms]bwszcueianjsjhiywwh
-yrfewhgpkihnhct[pxzsdirhdakahwdxteq]ygayoyiuikakdqo
-wjrmypbsxqajzbtwl[pvltruknhkznchej]ypobvzyforzyiihvzq
-pdchmvgzmxaspkcwkpp[kekolrkqgqcekeitv]xwpjbdcxgoelowm[wxdhdpqotthaeay]ovvuawitaqelckg
-fcqvgochyglldipl[ryndsmjdhqvikwnexf]smwbuebgfzzmfftrdck[ynaegesquznhgmisvri]hwbktncquitjaqs
-hcbbiznmlcfgdfjtgc[xqnepuustubktgck]jspcsloqtblxprd[mudjqeoagjqcfato]vgguzyxablhnrlye[rvzjejrpykdzzqcpgmc]okcylioamjhremephbh
-ihlcdgalqwvznxl[afsqmxduvmdjftmrjeq]ekvaovqjvajxfdutwhv[zolonpiqednbtfpsrh]vurkbqdeglqdsml[jivoaiwnfpbgbzzc]neycassstykebswqao
-bsgrhhzfgwsgzowrbj[mvkzjwkxsuwxnioolfq]yobngzosyzkmgrphxc
-edoabezjjyzijqbgxup[lcxkqejwnnslgykokx]wihvmpynxyyhaysxvrq
-wmbgvnekkdivugwirt[yuioeaoerarbpcmbwk]bdlohxkfgdbthtxlc[zqpipkuumpyyioewz]xssqnavbegcidoenex[xvcirztjwasastitiy]mmcxttawlbzdztesk
-fmfwtjsguazrodvdy[uuzglafbhjlwujwr]rjttgtqakbrloqs
-mjtlntwhjqjoxsbhk[adswsdpwqnvqtuj]uwzfdezklxcvhvhb[rzmgufbrcamkvsl]imtazflkqvdgqvfthc[pvktfhdynocqbhqb]qjtlmgsjspdfgoazn
-hfeiexxrkdehqttaam[uinfvckvhatgmlblj]rhksgzqfcizyqqx[ofgjnqhqhveobpzva]qaxdjvvaibeenyuzpzl[ktwkynazrcnewdnb]yzmotgipaelgbsahicf
-djhinybbfbbvidnyest[zougucdzxpenqpoi]vvxbocdotanwdrjks
-poulgwkphlvqfjplgw[enhvwdoftxrnowdy]jfepitixnyjgvvl
-agbtjztsonrgwzivf[igqgvjqttujviljk]pmqphqrfzfdiinxhy[hjpgkjjwxgfsiki]fqgfwrylhecwcoowxsi[fygonoznhkmzcjcpm]nwouwxzbpqmsxnfhedh
-fnukiqycmrzcije[optroggxrsbsokabplj]vlepcfzbmvrqptyx
-pdteouejbrhsicugggj[dipcyddhrktybch]rsynpfyiklwyhvlzoxz
-yuxxurstojjfnoft[obornuhvvdtcyzj]kivbosojivpliva[twgyjecwqsxjmgi]hbphkpnfffzpbwjgf
-iuauoxmsalkxobrgb[blehxxupivauaxkahxf]torbqoddhsksgtnps
-sjgwxpuwloyujust[psqoquaifhrgmah]vpaddscloldhahh[hditsfewhihijrpf]ofjdasdbjvfrwefs
-arpvdepqyadnevyphg[kbpdnghrphvogmn]wrzcskupnydzepdmxkp[beeaeyelchimtyrq]yppeqczzpjsntfytp[aofegesxpscjbehmcr]wkhyeeykbgemqgcynxs
-ouluccjlcbcurdpkzg[flulmqooipvjzhip]qkxrrgvodksuivbspr
-zfmcvmwchidwtgjmpoh[ecthaqwuytzvxcfk]pwvwrbzdjqdtxlq[fwbcqsvdosnolronvef]sbroultaoabvbtvh[ziihpfydzrkdqsz]uydoxylhbdlicydahf
-wyvxswplnabvdoeshds[zhrpmmoiilsleemryd]pgkwuzialwbqkiw
-ehkebgpllhheumhf[pfovxzqmiqoxdmywhc]qpzsvhisrjgjfqnliw
-bzizropqhokoukoxz[ahvweuhqlrysrwu]sdmyzgqcevcixtomzch
-kfyocamgrbgzslp[bclztdzvmbyetlgjk]llzxtjeauatwnnpkrvp[pxshjlevsleipkfkmf]xblovddfkfhviqulap[zhqfznscbngsaej]rjfncwzuuqwowdhfk
-biaunelzsqaxohte[zyqygmhjmwigxsfi]lmdfmblocglcxaszya
-ngxgqwjnobiygnm[jnhtcpyfpwpwkxapib]lyhgjgvcuwgbxgxwn[rovvgibkfcahiyn]dyojmojklujquiqfsj
-tqdbdrqgfyumjwktbg[weesraucasfagyailb]ilhskphxtzaqesynmi[stfgxrouxicascniwpo]yfkxnhvrwkielncq
-twgbfgwbpygvbfnyy[xhwmhyacxxleyadli]wffogpkjkmysxzlmpuv[qnjizoqydldcwubtux]askyjzovxsalrrgo
-yunqqhjmfpqqycv[vamwyuzotttqgdzgj]lmuivwjmlbeqkay
-qhquozlhiohsyzwv[utxfaionxyjgcnpulf]nkmfgjxfobxmrydyic
-wehhwiznslzkyncnkc[dzxeftrnxfhrwprllke]imknddjnfrzanslzdz[dfqldjhkxhowubxs]ojzmgmludytadwespep
-rbkqkcqoxrfczfwte[poemreldxewfaif]vehqkzgxcwmvocban[ffpechryektpzbdaivy]emfkcgsqpqkqxiitol
-eidbkaxexnexudiembn[xyiztwlbqvoavomnlwv]rrfwfdixzpzvwkhwlw[kjinrqheqjsynha]pilasnmhghvvgaxor[nrgzhlsetahyskduscq]uazoholzvqjdaovgjr
-ynlcechniybypvzubo[fupezmnrswguyjysfj]ckmilshpttvobgoux[hybhkdzvvhelhyvoynm]amrybybroexntrlcmvy
-qpmlcmgstzjfincjh[axvarrnhwnkyucrz]wbbpucxtqbdjxsug[tutypessbhpshlyt]wwlkakvsggtbzcz[rypxpzrrmmohyowkja]aeuhylvosccpatslhp
-hrdlnpgexbirsepd[waphktwkfccnylxg]hgukjgxutuzfovpazhx[jzgspycuftkivlpx]bhfazqqagtfpljr
-ciyqjrkwqlwtuhh[lknvhwchhuntllyvjb]ontiepkrlphiydhyir[pdcojzrccoatarrqj]rwmyqonvfiexmbnjy[nhknsnxkwatatfhwa]qzlqiiovmuukmwypy
-tjxbenxjlgozxrtqdp[fqimqatlktqjwjdzuoc]fedjvxnqivqaxkvcw[lskccrwcsxulkabzp]orszzlxhimwlzfawjw
-yufbensvlqaxthui[vplidvdhajkxfkledbz]uposqezqxglywtlxgg
-wacgjknueqomqccqnkf[erdhexyxtcmmvhums]bnywbavxkfzbqwlppv[bwdbqoqfxejqnsgjd]eafoepuyabzlznxw[etyfwvldfchsrdsjyec]apzomripffavakswd
-conwdmtawpjnzrjlkrs[lfssaruafijkmgdp]izwehdqwarvfgxi[stkwrpsrwwucxlrpvd]sucqudlqvvklrfdgac[gelbgtycawlilemxamk]zmdjppqtsdlqfbhmm
-ufwwjiajxhcorfa[hrdobejvqrdojftlnj]vamxyyehcgnupky
-eonddfixsvjssautqun[kktlnrsxhmhwisd]drpflrvwelqqmdrcleu[vefzppqxcrtevyv]yeayirahatkufcjvax
-gipuuaoxlxfkqld[kytubcrnjxvhdxjto]kwpqrvvtjopyigmq[urijeznvkopxtgkd]infdbnklnolvaqwwvo
-bdqprkxthvsgqlp[qtcbdifrlnjdpxrb]xqmtwugptmssrivqb[zlkwptpsqnljxxod]esxomobcnfjuxxdmsmc[tifraqareavetzrpw]dlpsxjssqzyqwhd
-ylwhvgowletbcqjgr[tnhoxqhrnytlbnwifx]pyzwjmotosezztkqd[ejfcslurfhiompqindp]kvbfdwfmwkiswfm
-bqlhxpzchtvwcqc[jhpqckkyntskugvua]ylakfwmlerklrxq[wjrmeexzlljednrxho]rdobmdgxkucmdrk
-ehtqwbiyigxjvkp[qujbspkhxogjrzskfm]qebesubhovwonqudy
-sjqrkysnnbgtkhwe[ibgrjvqztrkknsr]mnbkbbxvfhsihzkbsqz[hxxhvxonqzrgcant]kbkvnbphoymseakbxjf[yjkdvhsscxggtyyk]tofzfukarcsahrmvs
-ndepmgjnsgfsttp[rgrcqahcpnsyknjkd]uablhivltavxssnx[uwjmrokgisrjukeoh]wollclyotaektyjg[tzbziofnztlojbros]qvbgoapfzbecqwjsq
-lspiukvizecamzh[vgaxbxgipyodtbxb]qpnkwuqxsgnihgd
-khdzfhioeykvnvxuhic[lhfxiidbrwldhvfav]rwxsfwhshazzaxvk
-coaljuoxfhvirzhedxp[femqrflktuakhveiiye]iabhkrebiawlktxmbr[pzvgzzcfzhswxitunrj]kqpbmoluwjetvhdcr[tyqdtrnkdmvdpuf]skrdeadiylehnbiyvws
-qimxmesehwdrqskwitd[nvgxgwksihjcplpl]bxnyyafyzxludvyehd[hswtrhxmggpcpcvew]cucgudrfxfbietibgv
-moiyvifvvucewfqu[wuzvazqcictmsbtq]nktfnkfjbsejorafo[vfreizeqljwshfafwdx]xrtbsdzcfkdmskiiuwj
-kchuwlbokzivzlzvib[izbibinxysyjrvtapis]vugjoxtigdmbdqjn
-xbclcahcqnbzwpvshao[qkamrpzzmssylpxb]tjsufvzaorutvdu
-hraytavipeznkuoi[jmllyjddfakuxwfsx]ofoxhbhnucmiztrtcji[vebzprplbxwqnzllu]peaegqqeqbjikxff[jxzebruqgpoqmklz]liakpsmvutnpufovqlq
-omtbdjlfagkxdlntz[mhwuaqvyldixapgoaec]aghmtjapinrxlvem
-kbvvqlrdswbturvx[qpkrbbaxhpljnhlytou]xsogoxibyznqcpqgygn
-orqcxbycauryvjxq[ijorpddboqkyznnnm]rvildjpthqvtdrzcq
-hvttzyckbqjbyfdn[lzeulxlidymszjl]wbbmixifmqzkvypqola
-eizqnqqixewedcvcit[ohtuntptfbovbsnl]uuswevyvyulevsfnw[etmfugdbznyzikdtx]euprxmmhcrdoefvfjg
-pvxjhbwdlshqkth[gwmtamzhtucvbkmwacs]uyephbahzeptqmif
-zitdlkpouvntzndz[iluwraejfdnwafe]fuevzmqlsflfcht[suumoqktussjsze]dawzltubgawnahpd
-krskxctpuowviqiqxu[xunkhvqyyqiqhyx]rcdhdjoqrutobnjpimv
-frsjlbcvuwydaobhii[bdatbysbolkcpzcxoyf]lwsfakbmjilithjrls[fhozecjhruquesmkca]oorqtbaamburjorhy[occzlzfhekgspeep]lilnnsqheytwakzah
-ragajrztetigfkm[egetcjedsnrseahrxr]cblhtdmtcnoaank[fzhqephlcyygbwt]uyqlhhlhmnfyfcts
-nklzxesmrrdlzyakdk[pfexuhulnvbmndvyat]xjvspjnesqugmkngn[vmzvdrheaknqmzyrc]xfncycggjiaqvirfvnn[aqeinzmbaijlafd]pjojbnvismokshrs
-urteecaminrqiohs[rskgnsdfpksfznqpphc]yaxixbacbtysdrnwixf
-ibvmhqpmnpzmghdtdpo[djdzntakacvezlr]jtdoweayvyiaskblc[qhwimwixemjmqsu]rzekezftftlqqovnq[hzeyrnhbrrducxz]ceiqewhcqqmqluro
-joqwthpcrccoovxrvq[qjlcrltwaxkjenbbql]ovebjdqfnfkomjpswn[qhwrxhvbaattcrkvff]nmytfcchpqktagojhtf
-jeeuutsrxjlqegcdlrm[chrtabpzdcoetzoopc]axdhgbwmwhhlrvc
-djcujdyidkcgwygy[zfpuoobkfdetgiifrpf]uxzlkhxzqgiuyvuc[gboovijloiwizfuuye]wimticbreszjcpsls
-ylpbdnvjaavulnhg[novahskycjcruokxbrc]gzsmxnvpupgxwhx
-qdarjsoimlwxduyp[nghlzeghibocgcbhqb]vuoixghxxsxftuztlxs
-ikdnbajyzpzbtzjdey[fiygpvlyluerdjvcdc]hheswtvpmtvjochdsih[kmjnhhmbpokaxsrf]byzdcdlvgyorjvkujyl[ttxlhbnifbfgmvs]onytmkodkklacgel
-rcpgwlbaskiorvxhgsb[xikxwyiageqvilea]rhkkzuqtuxbhuygcxya[prteqotsqfyypus]mpdedamsijgmdktn[ptlcxgtlxfnvychnwe]mdjujbmrytfbzpslad
-edjzqlaktolcrbwboup[bvmtkmfmidimoohq]kpsgyntrgidclnq[ohqjnvirkjlmztem]smtywugfaobbpvmzj[aksdrqczxftjrzuylmm]ffyrsvfwtqlmwbw
-rkgutyhaonmyick[udryocpupaohqhrmmsk]lmusznhxbkbagotha
-ebtiyamyxtfcakoku[tfggedpatfzjvirou]iwbguywvekoline
-vjyzycrsfycfrookru[iszkkyvwngsskic]bnnqauaqcfxctnyofoi[tlegfofrqiuqlgkld]biryppugzufezftpjra
-neipbfcjvrnrmpijwhq[eppjsmrnolpscnfowe]crsmezklwmkbysajb
-quwdpyfsllgkwtj[ercxwsjcfkbpohokuc]isdjfklflnudrjetf[fuxsclqmfyplxxvao]xflfujjqnglxzxlxz
-vfxrgmnvontljaodk[pwtwiqibbceehlnhf]lwzkbshrmagzhwqyq
-ecfthornfevsngitzhb[pblbvztbbsbsxxuwec]jtjnnhwkekrgjanoxbe[osbstvuwyjietzx]xiordmxphcsjnzfnrwe
-tcnlllsrvzoxupp[ficwiahpzqtauuk]whxfguillhkpxitoqq[ovsdwbddmfojvkqrxb]bfagfcimddodrtb[lghczsmdqufswoayezk]ctkmauzrnhgotbibbb
-qahnaxgypnpjftgu[bghbgwqxwfnfrcybzd]qinmtddfxbpkhqnna[rheeshzhyxfbcfxkd]awwsrosrkyfqcvtx
-siffwvlfljwbcndns[cawuqwatfhgwsphjn]twfwwneebgzxmqyrhbr[awxuvozbhlohuaxim]dykizkumcmmnwiwdx[dikxuxtmacvaxiwih]mscklmepmcgjemwtvv
-nwnwxbeggraucwj[ygdjhwgskclfginltdy]ngfxeqsonadvobrnwne
-ceulusceecbvzesfpia[etyucdrmmbsstudbfo]jjzwvaqsiovrgro[msadpldzcxurzije]mjrrrqwmyqxpdgmp
-aiwctbwfathsnst[ymcmlyeojcaokgf]hchdxsyquapjjgncfq[adzpesdwzpvcksioys]rbfqvkxsicnkphd
-hnbounecoxhinavuro[tdytxmzudgjmyxmm]fovpxazijvtvirqfrup[qbfsslqkpyioabrzhlz]htlcbtysbfxurnuqgs[nybjnpqgugmtfculk]zxdfwtbtbvhxyrtcodd
-ecszlqenzswzeujn[aymhmhqkvzbuabtr]qasueshfbfducoit
-bmvypnceplfbhhsko[eypvaebyvggpcmzum]ycwgnjvrjmdrkiao[hdkledypozrgbkexls]isuydppzigzqtfo[onvsgjzwozxcvgkukez]uhjisxtizfjiaebue
-ljvtminczzipicxg[eqfvilzenlbztef]hpdptelqvvscyfqjbk
-kofmsmvngqzdobeg[atcxvdptaufgfpec]rbyvvgagylqgryjmdz
-qrqirixxxpivzyxidp[vanhxwefpeffrphvwm]awiajngjmxhscxctxt[hnmowanymdizdow]lqjbxcvbswqatxyp
-baeknzdxlkxorrfi[tiqhvwvqoyavllfk]uqqdkslrjsueklu
-usgfgiqvoudfsdyov[unqciexsmnreobavmoq]kcboezrfdmoqrgg
-xrqjdugnwddstnr[gbnpzkldpjyfady]edvtrvipwheribydmaq[mwzdiuqdstogfjy]owanzbjqvaqgsgf
-oumjseobbaxvipit[ukwqpfaqohsabpd]twomizennyccksgi[hszmrfksmdcycyda]connwmiollbtvgh
-skyizttcnisqncq[lcxdhawnbdbcptj]ocvhdptvtfnwqcdmjff[sqbbfcaufseolqwcjt]xlnlzmuciirvedlni
-nwlhzupppktailtktkb[bzdpulmwswdaqrv]kncfgfqmxoohevsxfp[vgabgahytpqzalhap]bbubtzxxzeysqyqp[nhpmkotpzfifrfpmk]fruxnzwuvonfoxc
-yedymyfylbzvjfwst[woezxcgsurflqnrmvt]qsiblcwatgywwbktdmh
-gnbeeaxxlvupyacdpl[dhgikxwvtnhllqs]dzsbgvmgvhcbygjkxz[qmayyikkpsqdoukt]kdfbifunpwlbhsh[qrqskqnysxtloxs]zudxossasajrdeanct
-rhftgsygepdspzqbewd[lcmdbukbzwdesfroixj]oblwwxyfconxmhefjow[fvutwgcvuaemgzqanrz]xtiuegikggcimaobg[uhqwmtpowirexexim]txoyjvcawbfxprxf
-viebpcquqeagmuavf[kxfkxsoijrjklkgtahh]gdxrwirjrvzjcykax
-uptdisvspkluwgzkti[omvlmaxnyxyzwuian]pmieocovsvpfcveurx
-ejmnzzuuduhzoze[xrdlxozvhgiofrc]sxtycslunhjmvejtkd[pakbfwkagujukiybe]adudpcxmlamtkwak
-lqyqdhuldmtwbvydji[okhzffzbmlvqiko]wdcicvzpzkaowwqnztt
-imnhospjiqsxihx[utoykmsvdetrkdxvzti]zgdfvtmfjggwyjef
-lwsirsmcseswkfxh[izotdhmoodsvpsp]jivuksxahorpwcgxnn[plncjtzvyamfyxzst]nnpdtmoozfzuemdcenb
-puavooykfwvhwzmkglt[xutftanpuhgsdznc]rvzdveoxydbctczqu[hetpqpdgohitmgtgyp]koiwybsyijhmmqxesqk
-puivygxavmlrxwkst[qvtxsgezqcquyae]brdptsxbxnobkvcqclm[ibxfeuecufosgtzhxg]vziaqziqriftdfrpnll[bjfubyvxxrbsjbqvi]nnlbiuncvdtnnarm
-tlzooyjugzfsomi[robsmcwkpeprtatddr]taktjvhztdlygkj[vbjvzeeznvmamus]sformulcgeirdihntt
-zbcyicsjcmpicotmt[tbrfctpfnqspmvnv]edzcoymhzfqwbuyuyu[jhauxxgwnguurrviws]rfkagjqfdvhjiavoxtf[zdejarfvfodyslh]pzjedvtgzwflpduq
-dhbhmlhsizoeldofqs[qcypvphfozxibpjdo]idntecorhucvlufrwu[naoixcxuqlgsytnt]ehsyusyugbmahyrn[djtckrolqitsztwtuq]urantneyeodhvorgsx
-cnsrdanbfjubsdd[nwynwjxiyygvgdlx]gyyuqjjvumvquvzib
-otivcdfzmsjivefwujc[yiveblxrayrkmfjwd]mbwaroznwihbnbmjp
-fwanqgdmtlsezhtvat[bhxmmztvspchqvhovae]cnjyjntrcijkmnjwnlp[rziosbsufkiamqmqnmt]mvxhzoxxibbkezhzlks[hfessxjoefqfbgxhc]kdgmlomxtdfgdgku
-ygxiiehdqiqtqjzj[cwbddmmlczrgdgpibge]tartaeajmndarksakye[qnurjchyeijxcsdpc]uguxoncwdrojsyszsib[mlwwasmjacumzfqr]sguglzsozcdjzlooexl
-ytyzugjtaxtnwxkns[aclewmcdbbbwyyu]hlfhrgrigvwsdmdethb[osohbeuazmmffxyeq]ygmbsfwcmyqowdvh[pqpwyutdqwwunfqt]ppkundibovmqwjwyll
-vcrftmfliijtpaqsoy[zcpypxlyshsruwbclj]mnwgypyvzdxnnie
-fmfdmvxkdupjadbxh[tauggdjujfbeogtsgzs]pygzoyudakrlrlba
-ysxiybmwpoygkyle[xaaughrlqulsertp]iukezabalczvwieegzj[wlycqpkbqptraajl]mjevizxosnolkxnfwxc[veialybabbpytrf]tpgpqighdqgphcwoysw
-cnxnptbcjhgrxrtremt[tjguyerqizvuobq]honeukqpcsoiapswdgs[hcroutdslvvzypfklj]owxcxqehkqqyeflgi
-ypgeqbggpntconrgr[fmsyjvaninmkfqekne]ykrmyjpfwlhnsvgehop[gvltviftpcixosamy]xlsyzevtwaokuvneo[nbfcynlfsbmmweiml]nxuzmhrwlucgvfy
-zagsvkbkhcrkvnukl[pyfiiavqjgonrarga]antgzbmtohtndzgf[gkvovvdgppcnyjifrc]lxdhpometcwlkofze[fpxwacqdussynpwd]mymrmftjovoqtkuae
-xrtjipuirgczdlrrlnu[xdczaqvzsfgavmzq]luocuzuztdgsyxbcy[agpcmbiyqxfntvnmzn]atjschwzmauidumzxru[gvmmftvwtfsvudtd]vhmononuocptbuvorau
-fzozmcmcymohndlq[rnrgxsywctnmxxd]unfjafhfgeexfykym[xnldroqvnecyhhcwel]wagagwcqljxduzebjeb
-efvejswssxdrqggx[iqwwyhgngmwzwsw]dlkdcjxurmpsoceomp[scbledaqpgsgynjo]rsdxazcyjgcubfxlbb
-rlkrgjrxefztgtho[tphpsircgzsauqfew]ridnbmerksozxzwx[lcqwhfgiihdzgtgudp]whskzgdpjubkztb
-qbtcopfgkbhzhhglhh[ostebaqylyggiyfptkw]bbuaatfqlpxstpgwg[nydgrdgyazzfwlagrz]fiiddplgxeyyntyeb
-bogowskdtwkyhtdpzw[uxvrferconwfnnj]eukencoekwwahhefvs[xtrpjeahwpxbwgogfmh]axqvtgibzojnfcku[zhkpmdtwlogmypeqc]jzqywlhocshrdrlgd
-rdmpdlidbkplejoikjc[iqzadghltpndooanzp]ltizdvolnhagtlvr[rqcrkoaqwfwjpsrj]rtlcwqisvkznpvrjrbi
-ndbtkvzkgjsuyfibsn[gbfhvruiotbnbtvuxaa]xihrrhcnbnowthpdge
-vxtgjsiuodbsuhg[updgogkqrntiedefvh]xwgrhmgmpzsxyen[tbhogopfepprmtewkm]fmrtnudhysikudz[rrdmqrctpwlcykzr]lpbvstnhcmvnfcpngja
-eoaqeiqpsqdqkdvia[pdyuqgwuhxfiukmpvw]wsjyvdabhrdsxij[puikfklqhrmvfrwomu]zvbbuuromxgpnmpviw[fvfilnspmeoxozaba]yaouxfprxpkvkit
-qpaksrcracxnyuozqc[evqvzzqomyzwufkvxx]vmbkqqkzjskcxbmbbp[alqaapbcvzuxchmaa]pzxrooiyfqprfaucxue
-jmjvvyxljzznmaarmau[piytxuyakxaropkfnfb]txaaoeuvlqiwynhqlt
-yrgxyekmldicpvo[wqcvsbptigcqvzoet]jjwvbjbshgmwttac[ymvjkuxxoojchqomnj]tsapoddljyrehrxrke[ajspkmvbrzxrxlpzw]hwymrguaqnefpsza
-dmlshfvkrzncuuoo[fddyurlzqbpqdidtkrs]kcewmacglikdszapy[fltgxlltlvysvylrl]rgovwrvccixdullrof[bqkrpxjupbbrdnahf]ebmiiwmxkutltuxwrds
-lzklscqfbovjmjbo[rhwheqhkaseohohelh]msyobgeiybsbyucus
-olbjozztfeowxftbsx[oefyqpxsebyfawerwwb]uyfpnsvujqenwouagc
-hwhbihujnzgayah[euifzicfxexpxir]lpgjmexgfyseevwjpqo[nniwslmnmrgybuelwb]khkudtujoigkyyjipu
-okiwsdqqwbijptpjzl[ktibxjcdrjvsgxzlgg]cimquzswgbhabcf[gictypilnrboctfwls]oiofteanmgnauid
-hdwokqbmfofrujxvf[gcrxxfsxmycedcfr]xwcmtasmlcvfmezvtk
-gcxgyjgbqhtcqznfuoh[yitqnwqdcpkgwzayq]oqbiabducwietmxira[kuxdaeohprtnmpfniab]wddlljbeofkomijydzt
-gnxobceomvkecom[oedsyavphnrvulwlqfk]klkcrpigniietqecrc
-bgzhntrrxvjvhyqhf[tnyvbggtjvjfgratfo]hltqszvzgcutrdcvddq
-sgzcemtrlzdjijht[wtvzogdoomtmhxcwckm]nmvftmtbucjnczm[hkqmnugntbrrsphbmn]yfvwwzebdqjkryhm[ydcjwepsqqrwnhkpup]tyssdovqgkhvvstvd
-buhlborygnuuklh[haftitnpydnilqbqabe]gemzbfstwlhejmjoox[awjrajspxybgdkbl]nrkncxgvjhuwukw
-suckcafpmeixlavp[ehmqotytcsxzagjq]vfwmytywcapfwlljl
-vblctxriewmbbpxo[xsgdnvmcmfnuejlrtz]iltofzajbcezlpy[wnfixwfqqgseisa]buystfqzokvletbzv[woumxjkmiqqstnt]ciarbpnsahayntnv
-cjsgiueunqlisps[zurvijydsqsdtktm]xhlpspwgqlwqfvx
-bobcmszgphpejiwlwdm[wwjrxebfctqobojw]hyrcpguihwihhpmr
-jlyvxnexbisiiwyjjf[pxpqjtfgwysrewmrv]xcfaninzgmdidqswt[spnysxcfdiwijvfqitl]wigmjtxvsmwlquxew
-qqtluuthgrubwpqzr[kgebpbdpqekehnnuyuh]onnyuyxeqstunzueapk
-sizavpqzmcfexfocoxn[dwcfbufvxxousaeah]hymczucocssffcj
-ldupymvmttlywlxbbs[vsttjksdhwfdxclitx]hfvkvgmtmaxtifvo
-tbgqiatbujypfbjha[catabtthtrydcjbt]aujolgbocqymyeqfr[apsuwlktuaukokmldw]qllsjhthoqdlpykgwz
-zqtpkzchpnnmyzygsaf[zuokmkcncefsioenp]ynympbineurlgzkdys[nhrjzpmbwhwcsuowx]hzawgwukxrerbljm
-navcmnriavzmexm[xdvtpfcjdxlbsyenvtx]byqzubujbhvpwfcme
-kookhqsmbrpgpsbctfp[wlbmttbadvipoyrojd]cqmhhdfaunlqkre[gqmltgpxfyljdyo]zvzerdpqmktqmezf[npidrfvvtdeqgzhojn]hzehtqonmwoahdakvve
-tanngpmswmpddgfpph[egmymqydmigpnpr]bymycsueiolsfyfey
-uddmrzbeefaxbulsm[ieevtshivgygbvsiwpd]lbxhzadyduakugey[sqywcrjzoxbbgadoqne]xngapfdfzbwcrkd[gurtymibbzvsbxtpypw]elpexxrljomuxnybuxk
-diqvdzizaoprrpzrovy[cbayiwiifklhjkw]somecbyhptpmhjvkrba[gczcezgzlsyowteraem]xkjkakyvwxbgmybzj[htxdiogfsahudae]hhbdrescqujtyeyo
-kzrqpxxtetqkqqfxild[tenlubsvlvxwjgokm]zxfixurqybohvhfa
-pjhbxnktknirbwjp[arlmosnekoqwtpysn]hexsbuespjgsrzbvpf[vaacxsepjnqxegwqq]owuxuohhzxqnoqepvha
-pumaevegtbjlzsijtf[cjpsnszjnvoexufcgxy]dxngvevsnjzsbuask
-azhhrcrptkuqsvxa[hwxldisbvxutspea]tiqwqugkmslokmixx[wzqlcgyfzacbyoguk]klpprvhtplelelsmx
-dumehssexnwcppac[gucpccbmtrdgoee]zpcpjjuztjtgxxhzroz[iizviarbucshvccj]xlypepsxxhxphttgc
-deujoayipwnugheu[nnyjneomcvpfrvfu]sfspbwylbnzbyqh[innsmlncnbxrbfuhu]tldwbficslnxpkzlrtw[kyfmnucfyrwlvbb]wedvxsifdxaysaw
-lcvkjzckpkeyzyjgtwy[osncmhyofupofwscd]rysnhkmiqoqulyu[lqwjsxrgpkpkgxnvhf]ftmywmwfpckoadd
-pixbxvhtlxjxzpm[nvmqocftgaxxgejke]npibmenishbqrxtavc[jzceumsoxcyqbfv]qcdqqbwcueyyqptc[egixgueerjonkmigr]teecwbxvwhgavdfjxi
-vhtgslxovrpmlojcyiu[pngyxboltgfaskge]eawigmpxrezdxtau[osjcsdhppmqtqxixkg]gkxhhsphrnkjyxgmp[khnpkxghpkaxnvgxqe]zpedrsevlishcdbd
-ixnbejxsfmcjmqh[pagzggnbjxxwktstf]hcjdsogfetpzoucuxg[gsnpjjdmrqzojcozi]csxsgebagjjgxqjx
-mekdjtrwhgafduvnmwn[aaphpbnxrwwkhzxn]jqzcqvefysuegreqcw
-wbpogjbyzelmxqeaazu[djdqdlmpfmezzehvjl]qdquppvgjweftqvph[equcifktaceuqwoakk]uxemheczqpboerwq
-objhlxsujoqunmhip[bxpjvcdqedgvqrv]rvycwulyrrllbrxlbty
-ckxcgnosnlskecyq[lcbisjdelotgldlea]edcebpmpxvvgktuxq[pewmfvnkiiulfehy]electgrfvkbxiic[emqhtmrsqfbebmykzv]jfdpefifxcptpfzvovc
-leyueicungygchlce[fbclcyopnajqvxey]jcwvhehawbpflgddtn[xlozeiujqbiinjlvrt]ljmnnzlebbjbccao
-mblrhofhihdiotvy[nfatavuoewnlsvc]gtuqdhyxielngaci
-eyzlvgyolwwobcg[vaeslqvdrjthzho]zdakaychskakuufan
-ukqgdhxdohzgrdfc[vfxeqopkydlzdehao]cormknsmtbidhgml[ceialgwruscjsapfc]erjsjeuxzxjokxct
-szronkojjdgnfzkpqzq[xpzmblnarrtycgglkw]cixtddybdschdshenjl[gflkqtgzlxeesrfvx]erpfhhlwbsdasjljnqh
-crndgetyvbvxhujqtu[svhcpjoxbaacvpqf]ohhkqbbwhtbcatwopz[nzfqzdbjhixrtpw]dpyfzrpxayfoglzji[aynmktzgxtegbucrw]igvfejgptghxddj
-efswwtohurobgbpvlhr[sbgfgmsrjsrjblwr]xkswzbsgmboecxc[odmohossczkqjwtrdi]gvdjrovgilpgrdgt
-qihgnzozzcedhgivz[wfzerbwlgrjbwolsz]ehnxlqolcgghtdfkeus[isyrflbjdelvbgz]eblyrmmkbobefzo[baowrnzmyctfmoylu]bzhtmcwxpcqhubyws
-tjgkgtykbfdogfa[tixjoqenpxjbetz]oybvzsgugsucpvid[qukesagikwrrpuesq]xodwkyngdrxadgqz[sigwgfluzksbqqpvueq]rlgcptipyfrgihzn
-tbilszajwwosrhs[rewcahkzssatddmv]wtusvesduewjvissr[efusbpnhwnrdjwgjthd]dunuqtpzocqwyqbysak
-spvqcisucqxihmincf[csjfurernawvtia]vzarehconlkvnhbpsaa[mttsrsqoluowbizxrbk]pewqfgipuxqzsfj[qznswrhnuvmmqtbq]mbjqscwfpmkejjowy
-eqeycwhpzzryclb[mvthqzizihyfvtdgon]maeannxtfakrfmg[xlxbqdqlglfspvyqrx]chjokbtqngjjsidqdyf[nnmqygvepumttyp]zipyquwulqtblevg
-etutgnamoiukjadrf[phwftwicxcpgdegzkr]lafqcmydwbvsxlegc
-kbwfmffiylhmwisrb[wvoulhoyvagzmgxmp]heupruovkypjtzkilqm
-hjgmjhzizaeqewp[fepsjuqdjujbjpnooe]rnovsbmzwqtukgy
-rlxvqkugtcovejm[vqlkivalxqfohnwz]afmwxjnymstqmem[ynyidmrgyujdkmjq]cliodisdvotckoatva[ysfxjtwokboitvhi]xfxomfghbnfnkobval
-oxsmqxhljzdjqtx[eavkvuusdpcbrlwmr]kkpbxnnmuqigfvbrf[qrfzadqfcladouu]irmuceccvwsazcydh[kvkeafmibmbgpjoc]kgmkohjtzjqnfwxkv
-hvvzujphepxjyypzp[isabpxdneywzpzr]rjbcrfhnidqlywbgvxf
-ezfeilvlhanyhfvd[wgbqirhrycdzzbu]wpwvyghpwpfykgdt[drvcvbpndcvrcirig]qzcdvhfcxqdxubat
-hjkktoruvvqmuauitf[dmygsosigufbzkm]rjbwsccifhzyhqk
-zazrvwupbrzlepfcc[nzlsrlgeovdbndxwqv]yhjwjlnravqgraen
-fqjubgphparanlll[avwevtaigfdxgjet]mgftlttzuhaqlvwqn[cnxupkaxahrlnjelty]yqgaieunjkxlhrha[xexqcuvkacjayozydc]blhjzcfcoyiozuajqxw
-nacvyqozsyqgnvkvw[urqhhtybjqfpqqcrex]pxfufqzfghzxinnnlq[vbxhmpntjgivfgzgmq]vgsmxbkpphhjvzqdirx[mrnmmtbamdhoved]zziaxsjdqjfvqzq
-hdrdsknkwrtejdgeqg[wbvycsdyecvuclhi]owhsjsujsqjachyh
-jwfxtraepnpxwmziud[qhwoewcswwusdqcvfh]czaiemhwpbkflzqi[yntelahhkwcytedvpe]kpkuxgqygwicxoh[vuifmbkhbycxqiv]cfyzggvhpveafhduk
-ngiytctkauehibctccr[coszigxgcttxzoqrhvn]hfrpsylypetiwrggzg[xwnfgwaxrjabzmsqquj]gxdqtprloqdojdthh
-rhhicddiuxdobco[ihkmummwydkeoqp]seubufqphohblrkn
-sgslfpeleveakroo[kgpoljsrrcfwlwyzb]zeacrfqqaortgdv[yoipuknesgpwoscvguw]ubrzxeqpijxuflgsgpt[allsdtgmdlnupofjb]brnjhlzxmijpicty
-vbcaptabloujxkqwnsc[iujlwsczjefkoewao]yqwmtuetinhedenovhm
-fcswktnxobrvovrjg[qsaxxwxgrenkdcpfvx]bmivhngglvcwxwgjz
-nhmxhadaretplflb[eaaitxsycuqarue]zzdsqhjjnebzptm[znupjbepvjzujwj]djueiauiobywmclemio
-lzgmurmbxidxqofgvy[nhpkiprmeusixtqhfid]zlpmcgmvjfsqhddfzu
-aziympesgvakqhltci[qdofqedxvlvpyqat]txvwrspujxyuqsn
-ezewtaywtinlcbrn[idtmhvforhdxgcdy]ohpcvnchsamehoewc
-ayzzozmdklbhitpd[xwlznwdbvtciozoykoy]ainwvvxkreuvsgdatbm
-kvacickhqbjjwkk[fryxetyntagtppzorb]gkqgbqhjykyewipbcj[zdaanxpihogooeeqby]lxdkkpostipynvh
-nzngguddxyeihkkyt[wamdyvzgrnofprps]znzgitnmvvvrrzsb
-vnbogcvphumewlx[cboxtlpwdmfbtfegkai]zlxznqxwahbghxz
-stwxjgiqglghaaot[gdxpnepcgstafgt]psljddrwgewawdc[snbjvfbagexsbpyh]wqqhsxerdjilgln[jyqcqbxxikzmrguo]sophymnkilydvivcdk
-kihnifnjfzhvlinqrqi[bcgxtjpdyxtgejzrdi]avzbrcqlbmaadrrvazb[ntmnrjhiklfwujlg]pifpvzbirqokamrmd[rbanfbdlrtmtkxca]udilckezqvrehkz
-liradbqjmqeaifibll[yrfnryjrscfrxgazpzc]vxmlibidbmcwgoygn[ojkunzztsdudqhma]dvmtamzfaanvyivxqrq[yqypfcmwnezorcnbzy]wytsaklpzfftqat
-fhaxbfjherqxbzbrtg[nabthakgwjarjsfhj]iokwyfrrjtwulhwi
-asundudwctdvninxpag[opdvadcnjnbxptahj]scynlgwnmzdtmudu[bupcfcyqmmcwsqfffb]rjargbcgxvonfgjco
-zwzcwjnudozdektxh[wesqhjkthgohlufhrf]mwqrvudkqiysxokugz[lcjiemidwqbdnohpd]psvhnbkuptpjicdmb[vfoerfpkymcjmhzicwm]pwykcpzewskfmho
-zbhxhhqfeurqurm[buuctguwokorlkfq]extdceaqdkokhdaxzqj
-qcrnmtdrftlnyciul[qvtjesglscjradq]tcoobnfosubnnrps[qafsnrpijrnjkemz]urgzkcxptagwndzug[olhgasghsicjvswx]higdtidzwjfzlfkmxbf
-ymvlttwormrtliwoy[wrcafamahrcipugxxgy]mjzzpdkuowbrbqtmr
-swwktdvpgkbbntq[jujwbyzbmzktmpag]uinhisqwpyszittfqe
-qrlfgtcrpyanzwfeuhl[sstllbrafqeobsocmsc]gmfmnisxdoqqctof
-znfoqfwiwmxdiixycul[tsxegdjmxscgpfllqvi]fhwwrpconfwceqv[gqpboszvyuduzehsun]hmydskzdmmifotkn[jurqmnkixknhmwj]vcjomeocgzfhftqq
-wukfxspnkhedqdbtfti[cjcrwokxqxfqbvfatie]eaohmttcidinhxqtcu
-usgxfhglhuknqauzic[jlhntqhcyjuoywthv]hbskrwccmtzgyby[pijipgraqquvxhso]hehkqohxirecivlxnvo[lawgvpbmozisammvpcx]vuchsyinsehynzm
-dgnciyptfimtrbmfbcd[tedeoxadobgoobffh]iucidwknmfofwia[bbtbzcwjwiphlcruw]ukwczycabezutqdcc
-huxitbsdoqaffnlyxyn[vzcnvdddtezaeymzrr]bmovgbcqswsdmjacezx[jjdtfpukrwhiafcy]fwlhrymiaolokojdkx[ftqdrarkfhfbelc]yfonqpoegjmmxkwhz
-ldedcblvfbdacsy[rksxibwzdatluua]agxedenvctglzyvpu[qkwulxegyokwljso]akjfktolnkzwsnn[lfhdwjomyhroqkkzk]mtkhpnffxrrwipsrqet
-ajwscynjeiagnubeew[ftyzkgsmsevmdkpyv]ufeszcwnhqpwsep[rinrtwoninoxbqvlgy]mzacylokxrhxtbyut
-rdlragvdebqlteu[kitphkhhnrssleu]chisqrsnofxmmbegi
-sjzglwvefnntfgofuax[htbkuezcjsfgohzynlp]wquzxtqerwxlperau[kqnbhymijqtvtzxbra]tcwbvbockcilgvn
-bdqyqodloytjtcylu[xgwgnadrhxshcyhd]qshqmfdqpzbruygmmzc
-pnwkymgknqqdwzmymmh[vcnetknxxjvihfrlvq]cujdvtwltkpkzwkc[owjyboqcsymigajgish]bdklpwzslsjvadacm[mmimdikciuetfjeece]dxwoxjenzguercr
-vxgoxslogbrjaxbjg[qyyckvarfyidktepi]odfkcgodqdusnjs
-nmumnqunfnuhvtucy[voatnmasscuvwjth]grckxjhdzzoqtpgwm[qwmgudaltzavyrchqy]bmxedeqkwkgoqyrmlx[uqzdpkjekjgfvlnfwh]tpsfewpellmljsakhea
-dvvwqujegsgarow[rkjpzfvtrtlpcdlc]kvpqbvyshmoemkhvq[hzbtnbzhmgaufkfvwh]ipdgirduhpdkhcwzfid[jmxetzvqbkrhkices]yzrxhfcakriippr
-xyijrstjowvehnp[ylbnnbclmipxjtxtbb]dtynyczfzgqozpa[rmontkapaesmlvuasig]qmuqzwqsoipzutdwz
-bdwyvvnsxojfzifhkr[mfdopzhxfakffhoudpz]vqnrhwzqbahbztlynpi
-hymeoolncfmkblqrd[ifbyrijjwxsjvmhql]vgybqqlmoilegcrcp
-arqsuxhcivbxfiuf[jfqqzwkamooqvyj]awbpyjrtunzulggzmh[iipnlkhwzzmzcdi]ktvdnpdmzmkrqavxsxy[dnoqbxknjvouymfz]brcemvbpovqjdvps
-sxhcuagminkkyodlma[zkcpbofatowxfdddhv]iydjxsbzyvvptmrivf[thuzxghsyyrkqbjozw]zicredtdvmavltqgeg
-qgvauvsmewyfypvgx[bkzpxdkwztxbpak]ghwmldmcmotjcmun
-ivnbdeggumwedodrru[ejwxagdnszmvpyxtsfv]eaabhawecgtctegy
-nylnblglukusyetuly[annmbyywmkzxoxcubb]fwslxffcquyfzezst[exsgjgeufpzlscazuw]rebffdvzignmrpriw[qwsiovjdtaimkun]utobenmeyrtxlorxjx
-eivxnczlgqbmybivjx[zrbbxnnjprbaknh]gtfbkkxqoowynpt
-botxfdjpvcayvpxmf[jysydtitavnzahbeg]zwkgkehpvxtocktco[iodpobnripiqifmexh]zpnrcxntqwwwucz[nwrxbbqtsqmkaiysi]pecfziyavdcfehr
-bmfbcrmibywamwmic[npcluivjtbtwmwxmx]mxyepxnjdabcuiexhwi
-kezzmzrmfsmhwxfhy[euevwjfsullybtlul]edrcskoqqmtwbhhafnl
-yywsnxvznbcockrn[fnmwrszfamgerfhocoa]uxfgnvtphthtmeuyy[houdomoboxleqhrf]zznqyqwslypolnqef[ttbcfuirmlnwevhzw]dmohemntzpwivaab
-xfrmjbgozdwamlqe[rdrfdfobgryckvow]gzbnazpqaqxcjdro
-vdxepylmqqekuqe[hagzuweczkaioxyz]sndgjumcegndnuwwukz[ymkpvinydrrvfare]oplwhupwenqwloy
-paikbyhegnbvcqa[kawvebmxrhzszrncq]noltxgnszsqxfbxbrk
-hwifnlppmjawmyb[gulsfllyemlqkcws]wfopsunpcakhzkz[fcpmxchdgicqido]tlvnxgdsecuxsux
-yogujlygnpdyhkxpdf[bawcwagtpbuwaorpa]noyoqlkcbsytnzywva[zvdbrjsxhozvyrugdnr]yyehxcwcnepivtjntex
-ukkuxsacdvwqkgwu[qfhnxatswcchleqaeg]qynrnkuwuynramm
-srvnvdghsmgtyvvli[gujzqjtjtrdfeandy]rypduscceqqfodndh[bssbtbzcdoiygtdse]klhkfnjidkombeom
-hrxpcidpccertdnde[iubpwxhlmbnofumjnk]tzjinnaqvzhuqmjgzqs[tbpdksrgbhbhscpnns]kgaslrsilgklgukanif
-xhrwvvblyiyyjithaqj[nxzhuqjrftquwsq]juvsrstyudnsyjxqpko
-qjjtuuqdjaovcgs[klwmohvmeyujgvauez]faqyixqvshgpkrgvac[hzjbtsvreecwygo]vluysvnbqjuroaondag[qqaysmxakrfjdrpvj]lteebmjrrlysmwocpg
-fkemhtixlciygti[babpytzqdpoovfy]ptjooannebsdcfrs[ismooacbkqjciwrfw]wsawvmoxxzwzloxunq[wrjhadcbmeslujxk]zckevlidqnpsdordy
-ikapdixlczlrtpab[xyfywwygclrvxmc]tugwitpyopgfhucrrp[zjnmpndgvwlqnsfnemv]xeahjahtuyjwjwxfdv
-wjbljlhlkfhhkhrz[kfhvlihkiqprhjno]mhceaicjbnvajugy[rvkrsptmdupaylqsbv]nptyjetdstrwmqjav
-nqcmyiscwhuiafdyg[njnrwedfdsnzkyg]rsxrirfayriqxvyqthn[alkdpteuyfothxvyeow]smfyaybytdibkus
-msvwpibrptekclckgdd[gdowictxfvmjmdtyimm]nlrlpatlusnrqcydh[zqiivotvmzapjjdzhx]eqxxguxozcbzlfkktk[amsfzydattcuqolcoaw]exjpttscqgketzhe
-uqiaugsvrqenozqcnry[hcmsmwdqjcoohwlu]morsyizcifxpoyzes[tdnfcmzkcxkltvom]jbkvbwcolkcpkxdlhy[joounotcqahwjvx]teeotmpwnuvnrgdxscb
-xsejzfhwsziaedxovv[accbrvbghrsomiv]glmkioydimjfcneh[xejzphhekszjpec]qfetmjhsfagbzjurrr
-qwmyiuonuwttopaz[esdvdnqxftkihzblcc]xxfxmkdxigfxfwadl
-gnvhardsrapmlpmlg[gmliinpyvjenkrnnh]kovjprgbyfdknmnbfme[nhzmroniytmwwfp]falokmiuiibxhheszok
-zcczeqrlhunbfsxu[ifzbbveczjlfwppp]pvtsdxzdoxrrlukmqmh
-rbgkskquxcvswaf[xihgvfvaxkptizohvn]tbntgfbhclvkdael[zuxdeparbafjpwqvg]cpfuexhjmkrdurlbnis[vfmoasavisksmltggm]hsnrpmdkogfxnprmvxu
-abttallvhutezhtr[beucmccowruviwqjxlo]slskvryjaodaowc[vqtmaqykahuvoqc]valnulizvgiciruetx[rbhcdafdupnswhn]bppfeuexkximknecfq
-hlnjhkjucpmxmguhb[gtoyutdhjwfudqnra]pipjkprnypqtglf[phovsbawbyxsuwsyopo]phkewndekgucmrrbw
-bikqggafubkrtyskep[eugvetcxkbfuajpuz]drgqdldmenwxyldlwd[klwzyogvokknfwdqw]ffojmxeeurqxasxgf[qdjndihaiuwjqie]uaatdignzrdeyjddxzg
-ddjhxhnkcrmnaztvps[crzhufiibsjerulkslh]snirbjgmmerlrucjlv
-ckxphmsmljtplee[mbrperwqumwnitb]aikxmbbxmgsmsfgeni
-zwmouppnlfbatcigqkh[kahnxdhbhongbfgmtxy]kfictxvtzrwlzvxees
-gfrgqbgweickiocqas[urgmzzgkrwpkfhpf]aazsfnctfvvdrrf
-sgndtkclbxdovlte[ylbolooanippjrmyi]lfydwbjkfsgdrecxzn
-gfypysbhqsgyoxrtxxp[vdfjphnhrphzphdia]ekhgpckheqjkjinexuu
-tagvhpldzimodoca[odnlmmdinuwyazwif]hsresddnysmuldvv[zpnjyvabzrktghfvtfx]jbzsfhvzaglqkstj[leniqywipplvkues]zumzesiphmejqufbn
-qhkrsmlwyoxfawk[egspgdlxbrdcwvoeje]pxuytqzjiabwebbmu
-wsxvnbuosiwcutjct[nzthycbqcazrnqppb]keasqheprjcqwac
-jyiifehztqkdshfuj[cddnloevonuheydyle]tftddpechuzfagnww
-zyicuknwqxtzzzy[mqgzslkciigsugirbcu]vadteaxyvnpyhwbec[waifsdqtrcbdnvrl]dygogwgquwnouhc
-jltdbxzvwoxlherhs[vuuwuslxdkthbcs]ujzniwntplzaaldguqb[zdcnhufvintzrxm]cunexbzfbuzomrv
-huikyoqqhcabtgosej[tqbxkfxeqyclgcqqsu]thtunfddczjfocqmr[vddedigjifexfqgp]otvsknxemvtrpbxw
-sgukpjkupqmgtmj[qmvzpbebkypfmje]howlgwptfegdnqp
-wnomkfqdtyobjkmd[goockdzswfoumhiavf]noshgjhgufjxgxiro
-ivzlyzlnqpslrbldxqw[qmlmhingxmcporfx]bccugkqyzoqaqbv[msgojkckxyuihysrhp]hdmzempetgwwycoy
-xzyacqjyialgkmmcj[aqenwwtnrupdsmitna]bhbicwoaervlixo[cggrwmpqsyxfoidjm]yawyxhdkscodboohvvo
-aoywrlzjkqkzcmmicvi[lhwojrkhqdearhac]zwhrxrrrmfpkjvrnd[zwdpqkomjgjvkcndhi]cxpctyvgnthrsarfhx[clnierazieohvgsy]eydbsvaautujuqqsr
-zfozpdjsfxmbwyb[ignvlhfnrdhybkwhxq]qfxolqnfiyokzcbdy[ohvvpuipajnqwml]rybjvumgzqgzfveqjvy
-gkvxesvhovzoekxbmgh[hjnizppxqxtlkdj]mqvvrcdepnalllarg[urffyistzzqlhimfhi]yhndztrezwcapskbkz
-qbuqvobipnbazji[qypkenwigkvsjhfdhd]pafhisczyaozydialh
-dkocroswvahrephwueh[qtiawejyhzlhsnlaxz]yyelniorfgcpgfxtle
-uyuylzyqivmpinpi[nxooflqcmtftzosn]vwxiscnnmmujalwegzl
-ewyjffqwxipurwkejav[yxcfacgyuuqpjqxgn]bsxufukndbljizkbo
-lglancnskvgdozzuuy[eossyfcrfjnpqtim]mvjbtylaisjdcgyn
-lxrbvlmepaibubsqlc[pnndwclekhualwxbpg]cxaynaselbcbisw[evtpqzovucquqbgg]lsscjpanobjuqlpkhtu
-wqcqpnmdhfupmmaa[qawfetitfsotgsibhg]vanugoxziwlnbda[apowiuucwbqxkcxry]kithnvgmjbuevopx[okzohlobuxbbjxeul]wrcnqenrhpvmxzp
-qwmlncrpjifxmtyxjil[evgtbhnhavfwyih]ganxbqprffolbtg[pxidrhwgdqsycynecqe]sukgwvxkhbzolomvx
-vmgykxaeppaasupwolg[pqkilujgqcoxpzys]vtmypzwtqecvidu[nolweceicrhwtvov]uevlxruhysbiedfibc[ytdalspbuzpagzjr]yrkwrgdaptnoxcqqr
-fgwnpezirnabdiwcknh[qnwczufxpwtomgr]umwdzmivstlmecryoh[ogyfrrqklslzcqoo]yohswnizpisqpvpyu[bmwnspsfofxvrvqkc]itdkhtuqsybuiom
-ynbnpjgaoammxaoagp[xkivkmwwiejjbbgk]ongbnbtqtcxqipe
-gxuxnshdgyttcjzvk[lsxpwpvsoquxuazidye]mfihmxgxumzfhnm
-ngwlkbdsfkoopeugbf[zkcrhoyehnzszjl]jwkxolilixmiake[kcoazkmvlmmlxhlip]urmeqvldopqdrvrdd
-hnlkmhqgkitizzp[dgtnogdyumxjgnh]gazsmgjzighgwpided[vaxfshfsqkmebtkceye]ndxcvfbzddvksncrr[clhmftvehwzwljbp]tooichznleiqlksnv
-jgnvwreomaddorfbnna[oedwzjkpxolayry]wdkdtjlmdviveeog[tkbjzabxaqxvbnasst]lqttnyqfnirsajb
-yiuwebgrrtctqhvq[dmddhqpukxspoiaua]egktbjgjcfzhltkjtyu
-sbfvjniiethddwbjx[guajrdwgcphepysv]qntvmggllbcquzfu[qtlrmikwlmlzfpqufgk]tjwivdcycoacfcwwfyl
-mxbvlmxjhiorcnni[ubvkvylqtxbchszgp]kzxkzbjtogzujapfq
-aezkzdgfurigqcdxt[kkjkjuyowyhylcxzs]maogxmmqteaectjv[aocufmtewquabwa]wlidntwbxueqzbql
-gngwphszdvmcnjj[qvbontopydlzjywvaiq]jbrgkevvbwzvkcpz
-qtdsnkqlmcwenkzxodb[wqmskmdllfarzicsce]dmubpplnmipygwqjim[yejatlbffcwmlyrek]gsvwxfaeblczgpdvhhm
-ktshrikjzljpacyux[omqqrcsqtbtdqsupfvm]bggungenwwenmztg[kacviemyqpqmwmiivp]petgeydeoygoknl
-lvvozapyfvdohboxrt[sqedcfculzdrbsafvg]ioohxzwwppkserbkim[bytwtckhnlhtxgmes]uzwrmuczkofyfgv
-ocskfzkwwmnkize[wnjrhvmcynlydnbvn]qbykllzinrgwfvod
-eqnrivojtcjljsfcj[rlxxybjowtdptsg]rnnvkyrsxzytscf[mbykscjmwlryaiictd]gmfcxwtjljrpihljll[gxrwqhtelbnpguyvw]lpbbvcxyokowlqfih
-sujejaymvqavyvhwpe[vzobezygmsxvqwnnu]dmuyhdixfuqfbnehqve[gwdapthzmbpwtui]hxhsorcfmtmrdqqrzf[dqrxkbkttpsjkqpbnl]qsmueuwxsrnejednm
-vmqbwehpqesssnps[jkyzwrfofkfqkse]glwxlfrqaamjejrievu[jhbggigitejevdzgqsm]sqxbxgyvfpqtxrlbca
-mlbhjbelhzgprdshat[zcytqxmfhuyriabyr]yzhvmpjfzkhgxavltdz
-ctdohoakygysybf[loxbfdhctlnhggxpoq]bimosyslpbihbwqp[fahhvvdfkiiucdf]bbgugrcsmoasoxyymgz[wjhbkirawxanrqf]palckvdfnlhficazmwm
-qoetptacgfcrdrstl[gpcfptpchpeiicbmfd]vsjqqgbwiqlndgmop
-dmlzhkeleeqkgqvriu[qxzssbjfthbzhdf]inuernrmyomwyre
-pcezyuyfhpyebmvanp[jccebfvhvicqksgwyqy]nssvudrlhkckath
-mrpkkivxuuozfbxejfm[bkwbwzhwwkfqqlupltj]ngrlyucvbmdilkke[qlzntmxfkeapmlbumu]ynjqdpmonwypyjpalvh
-tkqhdmjsbnhbvkdgo[jufmjoypjidudkbcvy]olrsjedkqdbeijypjp
-brnhsqltbrizrohj[dlzumegwwcbonaa]llqtbxfulkgjeqw
-vxjgwcccalsesmngkbk[owvdclfjsyhgchpt]zgqonnjsnsqxxvqzmqs[wsmtnxjpvzcdpobat]rkgwlaecswhucndgv
-wkjmaneymsjdyjd[uvgaxovnqgsvamsbz]naumvynxlnbgksk[mmjeguwrwppdwmdjlm]puiytitjsyskwomrfqj
-fquaiztteofhvsbcba[hvstcffflwbvchn]ntvqaedorhoikidi[cpypurqddikmaynmxzx]qkrvwfsppcglqejkn
-cpjplvpmbumvgsduald[sowmjselnjpjwhav]flufpydujtzuzusyrr
-jfhplkijkstxymvwgz[kbsytlilpsegzanvlee]ywcxnydvgcxzuibxvu[ayieqmzukhoxmcli]rsyubeqkgvobehe
-ocsbswhjtvywugym[twhemgyfgdfegogpj]xamojomgxvyedia[rukhjizwdryazdtdsb]fdiecwglfmtfjqxocw
-vywxxiyjfwsjhvjmk[mwjsyhoifeimjqtmx]ribwktjvuvxakqqznf[izcdtybzxfbyubfbckt]aocntguubagirsgvz
-ursnbtivqkjfkcbls[ckjjoszuogsdnficmhy]wwzjkspwdvilshnzg[gzuoexgingreqktak]ywmfxtqooxdgqaa[bmucdllxdktiifoqp]pvxrfcknwxdjivyym
-ebtozyepluaazxsuoi[mocwxdgmeyxmoulo]grazonsbnsnczptl[rusiwrrcbqpybtjfxt]ewazwwjculbvwjgc[jmoyjpbznvzlvnzu]ghwsmgrsqjgragu
-cmbehdhyvukkufctwpl[toklbggcxvjerfqozbj]wqbacnegquxmszdul[ggzaznwywpswuxmlmg]swowxuqlmlfvxmznm
-qbebmodvutfozxt[macysosjlpjhykkb]qdewwbokbiqofejcsj[ddzpouyuxgogajwmuk]iukkhkmjmrrkefycw
-adaobhuodvmkfzrbk[ucroxtaavsmpvfd]nvrnzhxozidrgvf
-yytzgmmuqrfqegalpow[eyefbjmsyximixd]sgxjxpfncigzmft[zuwduxnhjiidywvsm]qmdvambkreelttqmv[mqhlvabyxnmnjfpkigl]vuxmnunvxclyhkxi
-qdgaknszcwxvyhlrfsr[kbbxnitytjopwtruar]ucanrksrycnoqlcvrd
-nqwjdcnwfxkdglllft[gbawkxvzhyiprfenf]ysybkzwywpqwerm[cwsthmeytiuialllzxx]plcctxffnigyhdfmndc[kyyvjcfkxfofxfsrw]cwynasabqneione
-kqthcqbvfsncuenmqx[rpokleyrpkohzefrw]txvckiapuezhimt[rrfglfzarznwgchlej]vpnrufinbaqrbjtu[hypcxgeuiotonfxvuf]cfpjwonfyqddtogr
-aaxuojwascuilsqjt[aqpfsummtaolqpdi]qoqnuhfpinypgxiex[peasbtrzdkneuriyt]dbhohenosanaxkqqxq[fwvbczhithdxtbdpd]bmncqvxnaijxuexu
-mgiepbqfrprbaqd[swsyfijoncrtrigly]bzdkfgrsmwamezhp[minqrxxklutrtrfxps]dacjpwxdrbxhumh
-shdjdexuhgauroqwtmd[jpvifgjpgzmjlrnuyj]svvjpufybafcjsoppia[albycpxsvxdykattdos]ewhcfugwuovgnepvovv
-ldwjwyzaqxwfrelh[rzkhymugnnpmowx]xufycgvikehdxxggp[mykgpsmatnpimovscqe]cpdwiemofukofnauyh[iicxbleijoxlvml]dxzlvafklkbfhqke
-cqdtbwoinxghfrwulij[wwuuffpfxzcckuf]zeayaofaskxfueiq
-odegrvwiwncavmxd[smgtzidklnmlnltytx]psknhjsrxwqdqlw[kmejoinwatytdkz]dfziwicdcmfwawwf
-jzioqoutlwitjdcb[furuyivyebozkvcny]gfhakdfpfouliybsvk[vfrykghujsittpcxjnj]vjekmvdvwkaffrhhr
-rclnyybawbizurp[cptbsqptpvcuchcyncy]rlqjeblagqogxwy[mwexxfjhkiyoihog]slgmmhvjhpomcvgabu[xgipgcmbydzmayywci]tptdbfqkemdnuzvuz
-junsrcleteqbngabdh[loajbjvuielphzeel]yquxjlecdumepsr[lktbtwjmyeqrurys]ralurzrcthwtkenjtet
-zgykbezaearyhzuxhta[pqtjhajbyttwqzfozi]dzodljvnchwsytat[wrdvidyboznzzbgvxc]fnpmjaiocpucgucwh[kiqymnngzdrlcncpw]xkjzheobflinqcxu
-kbaghyebhrmquslcfc[ukdaffinqagmwhvhl]ruyaqrvavvfrzwiyit[jdhkzojqtxymxoaval]qfxsbqwjtsudcet
-obscoqxaeartfjmeue[dtceaealpasuxsdoo]zhtpbqqfonksrcpu
-bphcztpaoqfofau[wlhtxjzhyooevsax]pvktnvejsbjwsizugxj[aijfjqhoxneawmq]dlfbjynbvobrkyur[swgyiujwbafngtiql]nepaaduwebbpsrew
-fsjxwoamqjhjvyyr[johjhabbsofojaxccga]tqcnhtvkimixbyiqt
-lrasfxkclqtptlt[bmwhuwhzvfmwxxwla]xghbszjpdbdykjmfvhx[cerzilbrtilvfptwid]nkzdvndlbgkwkgzwatw[njpjupthwiwffesnct]cipyoqwmxtiugbyfmk
-txfqpycfderhwnqtrp[cvtdbizqhlxikkw]nuxymppbyfdpayjxt[sfsnmgqrjqrlfxh]dgwdxoveamltzalgyw
-ntfdficysbefpup[fvdhtaqmjosqoxosu]pwrbdoceiweqrfyrx[ftlwubetphczbxhx]jolpetpuszxjkxuupke[mbcbzrxeoqpibuyjsgg]cpdzzdzkwbucybc
-pwwzjoakzydrvkyn[xisfgbgguunevtbg]ntzbwgeohmdvitrtdpj[fzkkujhplarmvzckn]whvdpxzietgdyfhok[hlmsjxrxxrdjfrzncyi]xvvkjroullhawqdj
-pgazkqglbbjzrofkpy[mkeiyuwlxlmgmeugcbb]oguzgbkaasscxhict[lckibbhqnkatvzlqcw]ulilgiydzfsdwngr[qcrozfdctltxaatyajh]ojyzengehkhylgh
-zdatmhxwkinjiumoy[qwhfmokowsvzgcngeax]uqebryzrbawakjz[ltilidihghatuhi]lljxtazlhxbrnvwsrc[updgoblisisvpdqngzo]tjvlrlfopjdoyoisim
-tfguxgdgurymskwxk[ngtycndepeqrcif]gttrbjkhsbrfczdwxo[xulqdcmgztpjgiajnkn]pgwsbrzakmvblfsvlsd
-lclevdvivjogclcmn[kpxlegarknivgdvfymk]kygexxjbzqppiywvxtz
-zadpyjsswjcfimejbc[htbpkbzsmbkfeqww]ydwbivnpofvmzvw[archeurcpsapgylrf]teidjxdxdailsbb[nmoqxuhzymlxxqykol]zbesrnrszqdpsbchg
-ykwptdjfydxfdue[svxdapsdzsvmsifz]omdvdqwkswiktcwkma[tprmxhwqpdycftzlsz]dyfcmpaaokppkzvoa
-adfqjdussbzlxfvlg[hxktcqjmyqctyjnl]ouyrbuvumwwygdc
-rrryoldbjkwnauaz[uarnttzxeuurzokpa]clkjazjocprwqti[krkcdnwldqexavrpo]fdegufvailefzfi[izadiszyerlbhwd]myayzynvrymyobbfdc
-krttvoiaszqvnme[hlywolnuxbxjhzmnt]lwcvxyuuugaqribebi
-yrznsouskotcing[jnttzbfwdrpszrcqr]dhxidpojntnwrrsjjc[dlvjkiqqyrrougz]bjhjvlhvrefihomycx[veomjtdhecgcvsshcwo]iboybnggfhdhymyukl
-qtvgzpyhogqojzi[vtbmgswqkcpdzhxwzo]jsmnjadclhgsofgrq[lltxvswaeqdbvbyqj]gvrdvrgygzhbetbkjq
-oqmbdnnrpqmjasc[hzdfeapdznngjzjchow]fdoxpevjbqngxrhhlhj
-ujszwtyancoxbcga[qzpevsjkmozdbeqf]bdzegnfxtazxdna[wyinvjijbvudlvkwvg]mrgzfijgyouxyio[qehebkkwomsmozoojy]sqhbhyonrnjocbjzfl
-hinhkyqfttbnnou[luuiucbkkrnwiuqbwb]ujfitmunviqwhkiziy[wqbetolmyaceofd]wbwbxudxttgmtuxjeo
-schrxkylmxpwphllds[iijplekwtutqrdkmsrt]hvejiqeylhoxdpkxz[gbhczsfvoidbktsgbqu]rtfwgjnvhjhemkkvbm[lxojvsbvcnlbuofvwg]ruakyrabueflgsnict
-fvqtupyapfmstztmbe[zxtzrmjxlmgshjlfywb]tdihozcziyvstvdtvd[ifzqxsyyhgstjwlr]xihkbuvismdtqtfm[xtxunrrzvtuhjlzoji]zotmlgbjircyvzgcxkd
-shkjoyjuiufvxbluji[saofjqdwpwodltmra]xldohzmyameybbnw[zwaispolnanumhtz]hpobrxhytzqmkrkf
-jgaozdtecqmpueg[bnfjhfyhdndzlkxrcb]esbfjomhfrfvzgm[wqvhdvpvrbsazqzgnw]lkmrymdcupndnoktuv
-mehlgjudopvrolla[ghqzncojnxbdtupn]vacvkbpzsztmzhz[tcvqbgfvrehiycr]unpokrfctcwqexbgo[hbigocuneutkffaka]dwwclmxsripmvcluve
-rkdurapdxvohktm[idaisubzmlljyfbblho]kkkxhnkaiaxxyivjsna
-ujdjbvlqoavnuoeeilr[tpiehldutfyewbqv]crvmofwdjdesxrl
-ptyvtwbbmoujjbvsf[avhpwnutnjkysjdubd]ysgpwvxugjswjzhw[fvgohaphbuqpbwzr]sqvpubqxxhmfxvlw
-sslbaaxswqcqfln[nmdfjxyyrexvtxv]wavnexwpbgnrbrwyrf[deouszhzjkbxxrhvkn]xtfqfjexnqgdiddxh[tphqtpimimjxxkkndng]ncngkkzdnhmbqohupgr
-kcowklgmyivdmreahg[nhhhjuxwoafzwur]jokzmfbbnzsobiahlhi[qgzkumabuuxqhki]ubnjasaqscrxdjy
-ccofivnvzaxcise[erfolydklxltrildvth]sjprbxbfldbsozha[lrbdfwialwqinprra]wqresduonlpwaamhj[nmlgvtrcuqvsirfhwi]qjtgpekylrqmxxbm
-fugomjlqyofxoij[prndifttmowgenapio]jpvcsgonnqmvqrxwo[yuioijkmnwkyiba]gtosuvsrcszwsotg[zvtndiccjofwagevdcb]qpdjgtopkcimpfyqw
-zbzstwtngoozwdgtkme[mrcfdmgpywwvikyrto]ktlmqekphuekemo[wenupyuqahrgisu]wjyyqsuatrkzlohmo[judqmuzbdrqamof]qiovruvlcreoircteb
-yyclnzxvjfymqgrzup[koyfzianzwtvdjga]jtfmxjxehvwejfl[xbebzfwcbmjrhka]oqnpqgevsokznwo[briagugdtzfswfbq]dmnccxrswiebtkwao
-muxweanabaymbamknkz[abtqprtejlmchtpy]nmrtnrjxewbqynvbe[rtxnzbwcjbtmvob]segkftbvlvczkgubgp
-hkihivjdrqvywhwt[xpciwwigazxeddp]vkaysmwlighihfka[lcyiuojfjmmhltubrj]spandymlggnmqiact[xizoxzguscxtsut]cmjecsmmjasgpvx
-kasrdhbhmrlwiczlyp[sfvdefhihrtmmgele]voszgwzdjlvkejvrkn[ahwvipvknuyzrzbrmkk]yuhtxgfpaipuupqep[hezjazdypaguhxkwud]bsfgurgwdetewwg
-mkxpacxlrpbfqio[axwgpntpusujnovkpxp]afzkmjvcysdkbfeli
-mspmqxwmjhzxqmbhbj[zniufuwcidklzfpuoxs]uvlrvuhbhjhudvx
-nrgtmsqbjxlnpsc[hpbskrvswufaucjmjv]pkuulesksyygynxyku
-kmopgjfjwvvrfgvo[qsigvjyusqjqziiuwxf]ewkbjkiqfgdwhkot[tbrynegplyfllxcqaar]cybelgkyrndjodpf
-wjzkfwmrsnyjitglauy[jnncpybddtktmehxz]hluaspiawjwywug[ujwjjttoevainaxqmer]gewchllvjclaahplb[haewxwlxjjnfggtg]uxmnawcpzfwhfiefo
-jogfshkvmshdacro[anluswkewepuhbemk]rwfxbxtmtfgxatwj[lwqompcrkgqzkajgrqg]ckjftivpzkflgbifzx[autylalyokqqlxgu]chewqmwkwewmwoby
-vhqxmrwadjsfoprv[imclvgvrtvqfbcllpr]kmgvgofdlkarrusoo
-kwkqhpdsrkdlhuq[njldfvflplvygnihg]hikxtejykexrghupbqz[tanglgtyodyncabh]ennzrvfvgcnlehci
-hmibwhrmzhcxvzgt[vrdwkryugziqxxfv]tcgmqhirboxwvyy[mjgojhlpjolsjtcu]tphrqucjxjpsdsi[ahqidqxdgeucevqinms]edzoyewnqweqkla
-deizsskvkzcsohdf[plhmdlimpiduxfdyzv]iaodhxioxasudzv
-aepgcwcwlpdqric[xyxiplpunvajsjk]dkragqziaqxgbwr
-keocoxwzsscocdxcf[lvdnlggndlqzvxjo]cajmnvjxphmfopy[bxfnemakuysdjvhzv]ymuttirruskkndjlpw
-rrfoglacqhfucnjkhsf[ejgwoteprdneomyqphi]gtsffeskyegnxzfkssz
-awgoetenjdtwnpw[hflbiyqshareqvcc]qxwgczjnzceffwk[eumisjskpmnqfmox]dtsifzhnbdvlfaqdkwe
-jezzkwqvkbbcskih[cxqpssjfttcropqrk]eqkohazzfagyqpjt[qveehpentvwwdazsmdc]enufhtsnszihemkf
-zqokauntjcoqolc[kfjplmodgrkaeuuvq]fqicoryxfrkubee[fcncbrofqpyxdnejn]yebngpgxcbjnivisgza[bpwzrwupgpmtbhg]ufxyezblslkscovzaqd
-vdrhbvkjchpslgpwwdt[cfslokjhwrpogwmf]qkxlvkrswbbbhudgk[ryazzfichahhigijhc]xbxrwruzjhyjlwxf[xlulxjmhxnhmkflqw]xtkuftnstlwxwiirwko
-qwbqncrimtxfjspgyyn[ysolszsumngdzijn]stfhvhqwymtjpauip[lnucccqwwzenxlytrb]aumcvdswfuucagbkel[skoaaxgeqadxehwvjt]jrjzozvfrrjrsvmov
-akweexwajqyahlpq[pjxilukjsvzjerrcdcb]qsptnuxrshmerfccxhb
-xbnsmtgyhitmtounl[msqlrxysydxdydbtyho]varxjhsmmqlilsprkq
-udmbexywtscnesd[azofuoboewwundyif]mykxybobvefathvqkfx
-gjedwdykwqbxqpsb[nykqvlfsckqcgfhvbd]xdactphykfhbpjollax
-tinuplnorykjcuete[qqwstzqrupgcliapi]durprlvdyucmbkhceq
-zrfmusbfbogbrsin[gaayijtuqfbfnxb]cgjsibujnswdmuhfez[rhatyymizrxrqud]wpvajerbhxbtrva
-tpjpjlmhvuorwnd[vnwdgopuigazzwytzbe]uaplhgdvedfaiboz[rqkafxfjjzjwbzwung]cqwjlakbfpqvxspia[chyrracxefgkuznb]chigmcxzjqnzsdn
-badqhtkxeokdbres[wmdthitngyoujdumxfb]lnafdeqakaggcdttnq[acuhhjaemkakovqq]vfvloofttmvvolbpgb
-myaunxirrlgywdtyrlp[nxinrircujeyezto]tdzynxmmbhjybgz[sxbjlwhbkhpplbveqk]oplketzgeeoczpadvhj
-wtqjkfmtshufwfiux[njjvqujaetzgcihtxvi]fapfzhffwqovrvfpatr[hwjfoqsbiothjtrbg]sfwifkjkimjnyzaui
-milzoncxkgtbsgtxgb[zvskfgfsgefelbjckwy]lrdralfxvtlupde[kvvibrstieyneglniu]pfyopkpteyovtkahwby
-sjwqwumquvxpwokonnd[wooozqoxtlhwsfhtcic]tgzecomscwuxgazattf[dmaxzgxonbkehxgymq]xbqkxgbziuumwex[csesnsjiexhypqrxjj]dbscxozezqgzexrwci
-yqgpqvteubzxsmjb[bntiezjqbiywrsq]nrgpewzpshvjwdx[qifsblzcgkiqfmele]oypyewwjmytlaujp
-bxlsaiblatkrxpcr[xxnilxrehixaglra]apwnnbwgatzwgmr
-rqsogjhjijafydmr[krhzamyodyfpbdv]jkjdjxgdszznhiv[ywihxdwlgdadayqm]cjvrvelwbegtiqswzqr[toujknandbegjga]wvdikqjnnxpuxtijios
-dqlbbhlsllmcdejnme[fchpcehhwkjwkythfc]shnipixrreczdblufyb
-pljkshxmvbpvswl[gbuflmmaywvbjwibfud]mexysgjrvoxovxtvici[svuosbkwxjzhvmztiq]cvfjfnisqtyomho[jvrshoymwbzcpgxtxl]ysdystgkeioszdbora
-ooyljflrcdoujmfajfu[qvnbylveipljcmgrvl]cjfvbounfvjfpsxmbnj[mohdhwcdrykexihcgvb]gfzxjkkqdnspzbqb[jkoiqbqtbjxgezxvsgn]juvveztzrtcxhyp
-ebfbaesgsxjbwhkmpxp[dzkhyyykwhayaztjt]xkxdjdlfvlzpqbb[tjdqvwygsgoldpffs]uwccbahfnjkhbfzcocf
-uayfnudukxaldfgdvh[tshkbhbydlzzndsc]wtjmhgayuizllbngcr[tfglywxclqmgpeatsva]riocgxwsethrhbh[xnerbhkafskywvgxbdl]yzubvjedgzbpqqng
-iensavdsekzfncu[frepnzfzbolseio]thbtyqsviqjozgq[mqobufwdnxkzqvqtgj]woxdzihysaypdxamitb[llqsjadcqlogalbice]xwrmwjiednucqqfuy
-lgmcluvxcilrgacyc[ozvsjikotkgiepo]ximiftuuulbsghmm[ykwtdziaokecacpd]bvhsjkjycywcuitep
-eoefpqghlbkskrhdhv[wkzmafhoocaswuz]iyiulabsaueugqys
-noklaptafpgtvzb[hocgskfdbisxdlcdbq]sgwqzdhmwapbbjox[yyjutkzwybpoeea]xtnvxgftzjdwqhgh[nqgarhtwigpfriuq]etonjczcgfhclbf
-tyqqeyfkxjcnjih[edtgzfrlpapwoyrnccx]fmsegnaucwnvsyrsj[lptzjaxumqhbwhmljyv]rugwpouagbvimws
-enpywofbxruqkma[lesuqdferlsfxqis]tqkchirhakakvbgf[ytrxxjwygqwaauwjsg]ncrkbikcmvtbtrabvqb
-nticpuumzthsihk[asrmrtlzizgsvnvcxny]wjntjizixwyedcrh
-yjkotqgkximxcbpa[ttuenysknomggwwvvhe]htzkgoilhlqrpmbcvh[zucaclqaevmjqfuy]pfkvmsbcslkjxyydhk[obfcguogfxfimowk]eczitrwtnkfqyvxco
-nbrsaktghjdxrhul[kmtgawzkmntyypqmw]jggmopgbovomadux[pkwngsqopjftulu]ymmfdmimjpxufntd[hnovhrnfsloivbbueip]oreyglwcjkylphqtwl
-ufynjbkocygleqwskw[yuykssufmvmdkdntk]opbcqjxsioqpkzbtuhh
-nkxtoheqxycxqbp[nmjgqytppiuscyylrm]ezhiobiihpmhkqjc[bewnvjufjzxgfwhy]hslvggdrixjquaigzp[dkaylzejrwivzcl]mxzgkigdgfhmczixkrq
-fgcsqpmignjsbxxzt[zoatnmdxtjwltkazbep]wiadjhqakemepgfh[csuxhgjcqjsztsrwb]wdekgrxgngaaqcequ[kjlsrjjtidezpuitng]lhibpbcwjndstunhfff
-ozgymklbikxnhme[bbbbemtxaxyxnnazaxm]jszcoclvxluigfgdlq[bkkxgjapnrpvovq]tdsakecfolgpiynztiu
-tytomipjwhuqwshlvho[ewcfspufoolvxmeyodk]wrrxjaexfktctmwrkvc[fwdrputsdfepfvglfq]fqhmqffdtqahfpyelce[elfiaqrgaqxwpjbxcig]jmlxcfxgjkteodsufs
-zdfxveufnuenptljiet[bxzgimeczdpygyen]ptmmjlitdsoncpjlwh
-yfyzedhbbtpqiwmri[uqxjtkmjcivoqatycbc]etqdfgffuplikkgrug[ezipcwmudtfakrrif]kumvfsiqqyfrbcbvgf[upsfgrzgndzpzxhmx]aewrwjwdquhsagmgwah
-tkhbexdnhdkmlogvk[rvuvfkiqrvxwewnhihc]yytysizvrtytoqznokd[cyxenputwxkuesw]qukaxyqfxbjvgdcy[rfvlqyyapixtzghha]sjazfjtokjizlxiim
-ynwzzgtnjmfjhbys[enxaumsepjmyaapa]tctribvarqtdaceq[omcmnkckmzjjdhjiwvj]qlkbuktkubixegud[bbvvgpocsbliknv]nivyswbiijvnvvkuw
-dwncikgxhzvktwgwa[nwmhqzwlvntxvjv]dmbsieiwdzgwecq[uvutvspxpxwfafv]vauzasizdqputolg[ncsglnqbwjshyxa]dtgwditcpcuncdcxn
-kupmpwwjcwmmrhum[aakppoytxqucqfncv]gpuyruwkndprpqjqwup[lrcoaodsmpmlhnhnyq]zathwgfvwmumcjwaa
-ivdparkbqlazewoujo[tzfulakdrwfncibtnza]titrajiplrfpbsar[rnjnbtkpwadofahdfvv]uwobxeoluadvnxyxwl
-kkoyqwkjdgcvqaufnj[qucvzomguivuynsg]cbhahcwrhchflfuc[czlxnbidfvtovgdl]jmyougddwlejoyrfsfm[kcuqcjogcjrhvjpxx]khnizsdkqwzdzehlpe
-wzeknwbkawxgvgtq[wmypojfjlgomvmk]tfwjzxvhrbxpkuyk
-ivalkzrbqzhiqmjo[olluyctvwisrwwt]ndrunxditvvundvd
-zezjmfpqesoftjufk[tdueprzpghkckpq]fnwlbwrhqmmayee
-jpmhszgjuxnpjdsbtk[cpzosccgpfbvzuretl]nfpjzsqdvzkcszid[csygzwucakziegi]laqibhadzxurnulc[otxsegwpopkabmwbxzd]ymmsoiqsjnlnsvlsq
-srgtzegqicrsutbpfsh[wfdoodrpmioayoa]kfqtpkwcfgyvjeyhvsj[yzcyshhziwjudxmm]xnmgrqxumondortjbye[nyajdyykzhnmolyv]zbdkvkbjavamxrafhbl
-ifwabdpxckluvreesop[dsyliwtgkelyyam]hqwleigpcnogipr
-bpaukztdyuwjkjrqj[dnslgwpwsanuxvtyn]fxkjtpifmtqzrlok[vfcgvkrunowkiilyok]ypgxcltrqbuzwiqom[ikzgjcafxhxmtgril]btdnvecxukjskjkndz
-nghqjtbvhviyatzaz[guzxivxizjukrxwaf]vtggynfcmuttsnrvm[eqvzxmtlkaigaur]dmfhpohcbyjikjl[kxaapmbxolonwgbw]uektjdecblphouwitdv
-fxefzaiaeclqyvka[srznplyazbvctgfdr]xakjubrnnbfykcep
-rwlthwstbsaxphlsrz[ihywtcvcfdeczmy]lpxfewmiwnskbnv[ripgyxpgczfvxkzp]iltpwldaivxkwwcb[yiejtwqmnnnzywks]krnbkndouhoakztwzh
-mwaxggiakwqnbihaaj[pxslpnutqpgdfvhvwgp]nhhnvftzfwdfnrqisfi[hgroxibwekbugif]btrhjqipvkpfvcf
-xmxlpyuuqssmtmzqyb[ybwrbnrgkansaodfap]cihlwrfxgbaxddtja
-fahbkbakvcwwazgioub[ouuvcmqsmykbkhfhj]gntumiippgacbcl
-hqkuhmrurcqtkzusgu[drwgthikmebvdcjapw]vdxfpjwqlcvwpgsflb[mmaxekmyvkxfxye]nlusofrecbdvhbruu
-tjyqhrxlyrubiuwl[voyszxwudonuwiptjoy]xggibveyrclwxsq[aolwexwhfxpwcuavvwr]bwkkcnpvsiynoeikmlb
-cxpvpcjhfbokvuh[sdkkaewwgkvniqymkrl]emeetymmtcbrivitvn[bvyzmgaorsfbsmqoka]vodjpeovgjpofkq
-nupojuxxbgjvlafg[uhfrugmmacqdsap]nxuunqzbasceyiz[ircwdmgmysazaya]qwsmsdywyhklvniiq
-mxujioozxlybxvyjcmj[afimhsdzsmtxszd]fsckiqksntizegvxgz
-htyhhcuqdfhhniloe[iqslmejacjbynzkw]nenyirdlormvppyym
-jbphnkbvlextsaqnid[xdebmjhugwvnodt]spdqamgmvsuftfx
-mpdupjaxozerpkit[pcivcugsbsqynoz]zrxxjvwswbpuylnxi[tjoxsullllulompfxhy]zobcdnaypuabmzfn[inubfyjlhoysdjath]vufswsypjkekcrb
-qsbiexorinxuevkoad[tjzedsasyapfnvwa]qbfrkhbfmaxcgmovnif[evrexsygnumrldt]serpxomgczhbzjix
-ukqzagjymparwzqvw[lnkduutsjulfxuqug]lvupmgsyiquqeepmgsv[ekenewopqmddlcqc]rhnwektxgccickla
-ezrytvzepmzxbjapim[knaxuvqciriixgji]epksyimofrrkgawirz[tewvfyplzorvkyeog]bwnejljtelcigsqfx
-fngkrmmwapuutwtn[pjrinpthoymdxemoe]qoxhlklweoscgcagw[pyrevdqrznakburr]fnsowwitbsxsdsdv[hzbrhpemwokvyhpohjw]jppmuxhrsdsmmprl
-wfpphsvqgdaostxg[abwxepvuvujjmdbhees]uxitcdrdkyaqgtyrdr[rqdczpmmmisomtmop]lnqpzuqcyrdgzrcc[cvzwdsaeorgdzzklrx]ekwjqzkeolvlkkqtj
-qzhiltifnugunsngzg[fxfhjhvijjnhnxkbl]bbaftchmgjrfuanns
-isducdmcjzbiacltx[jvkepdvzknnyqegqte]zbuvzcrrsbjsqkf[dowjjsipssfisalqwmk]uzrmibeeevzeuxtb[ajzixsnzrxwpekzpy]weogtsmtsuxvjyhy
-dnxhdwkvawccsfvncy[odsmukbcbpfyjqeau]ugusdxmjuxjosasg[ouwrwzplzttepynf]avhgcbmjesyqkzjgms
-pwyizorvifedguhjqrg[zsafqttsqlygzwmqv]hxilzjvsuyfnyck[dnovwvccguuzizrjw]qgbluurgbxnollv
-meqzvrprpthaebpd[htamsljskphtldx]riagbpmpasjnjefv[cvpfevyvpivbals]tgxiqxmhvqhhmrr[cgeamacqfrlrhaoz]vficakheeoprpbows
-okkhpeexympjqvlamxu[mvjvngmxhkbiaygi]pnwoitpqlyqaiwdpf[ryfcbkcyzbvxuyngw]xxgknvjauivacqxr[tqmanixcxxbolxf]orhkvkwpyrwbymux
-ipwcjobowzgrgzmnf[uahjinxxnmyyibzp]badwoisgtafnkgnp
-bcbwbvyvqpozfig[twwsbwyhvfaddwo]jogvkczzowocmkwwlla[yedsazzkeklftvohfqz]tghtcjemmehumuyxar
-bevtohpxkrlrjjen[jxnohlogvkugugmk]nrxomawkgbwlnqwb[rtjoeivssknwelkhv]dihcnpigtbnwfdlxhm
-upuufvskhseazwfttq[kkipejrjmxwmqjsh]xquyqplziwgvkkiyv[iirqohxpmcxsjryb]ajblnptlfnukvae
-sijztjuwnyftelgytm[mgirqlkcbaigiyx]wgbeoandnwaudhgvd[drhbrumogcajpxnvqov]vwandmoxgzsokgfs[xwgtfizcmyjrfzgejhv]nhckviycimfezwefw
-gfgrgtizxajkaicjcc[mftrzuftzrgrwilsv]uckwgxywnamzjglbnts
-znbgncjrhyxaxgd[xyyzkorhakwqubjzk]wrsdvjsrsdorwkgr[krrqukxrdobhkzmr]mdebvnlirbtdbavpj[adbczigmaoreudvgns]yqxeoeccdlpuwyvf
-ymjcaobrviuqtvxjqq[jwpvalizcmbpfdjk]wmxpzhqvcavedvmhtn[llsefbpkphhetqhbj]qryznzcexwgvxni
-ginmrsljkrcminltayt[iarzxlzixokzfxiazwl]aircthhepljgylm[wlorimkebaxcvcwanlh]bihvjtofcsnvuem
-zdegfhthlaitfojyj[bltnoljmwcfdvle]gnadpzusiepwthtv[ieuoyrprfkwonhwjt]wwfphscvjchvrab
-kdnddjueyrofzhjdzcs[asdqcpbunitvxrwi]usylnhwfapvczeb[ozrrpkegwtbkftyeusg]pncbcdrovovzozcazn
-lkksyjqoayppxtvns[csiuzvhklkfijem]xpsmnkdmivkitka[djmnmzweqxrkfomzqhr]wkzmhoiasanmhez[wojpalkldcaopeg]murhvjrgpwxpbveekq
-jawznxjorxwvflmkk[gafmrermlounwjqod]nalazknfqhepgnelal
-wlszezwacdeehnlnoj[njlzbwkfnvnbwim]fydgpvvovkuardng[gqxvckevjodockykp]qsbtvwpwaaeatbd
-bwwttxctuzuezxfdz[apvuanhzemgcupc]qcfxkvevimwvwpu[zhhorxgplrpuyabae]gzabsprhuhwrtkd[sqhumhfqwdgxthu]fyebhdninkahfyy
-hhttjuhgvcgkisaqof[obpleewrfrrsgpumz]umcmeaytqjlqkyrawp[rhkhciyzmxciiysv]kszzqcmcylslhlpqjag
-fnevugmjjescvvmbmt[bjzdquqohnusozz]fwlevkwzllmptbcelsh
-hzqfveaxrqycvuolynx[ztsmaipixbuhbmv]ebvofyoeponbpip
-utmnuyowmxipzhde[yuvqwfsuyhonciiepq]ynjvqvvifywnecwzdk[httqooeiilokkjghwjq]znixikpswkpgxcchuyg
-goojhvcnizyiukzgmwb[euyvjdmnjjrkjwpu]puidllwqpsddlrhx
-ysglduipsofxegb[kzrbdzimejxkyftyuz]aekosjomszyegyy[vpkwocloupebnjeo]ocdaynpnnytwrgkn
-anheyoxddpkmqla[isqzqeuwwitvtqy]jnchwevvrgyznqsomum[kribzkkrxawjnfsmiux]mlerrnvwcydnfckydfm[hwouaafteeabtgflb]acwwvgztxwcanzizha
-kaqernqhzefzthuc[tiuifctajhxawtoi]kyqdkeudzkihvfsn
-vwwekuavrftztxb[aywyoempmajrdkxpsc]eibnjbszsfsapujqn[rxpcsihuzszefcdzl]gsahdvozzgxjhontxk
-ymjyffbcgimsalujegr[dnppglortkqlowskj]wxwtxtdaaopcyvp[xfsnsdrlopdotuqx]sprrvphwennltlddiw
-lguyxqxdnirprljpkec[gevtjwbiofgesdwil]phnydixjjjcprpxlpj
-mgjnnftohavesepu[slwhvezajhvdukghl]hdhtlheqzqqrsqmfqyz
-iapqmjgrjnecxylopbo[pnbvgmbhbcmcnpsf]opurzpqoyxdxfkud
-efuoofbuyjoaqjd[achnmlslfvovmgt]xcuyvikslsewgqlx[gjxolnhgqhhglojjqhy]iarxidejlgphqwaei
-uxpcurtzqgpgtzkvp[mibqtgwackcedfri]otnnsgolldyzdpbew[tmgiijgjuvjykwahml]xxgjgzmnicxmywdubrb[hwhcgbzhuoankdubft]rxqzywfyuliatahn
-uhmufcxuptehmuf[sygthxldinztzudvs]bdxukzqaxeavvrbqmuz[wovugtpgwisttusjlet]tpfbcndafwhdnolv
-kwknefvhmzbtjezkh[zcvncbptzekirhqo]qvgnyfkmrnxlgxzjjxl[twxzjkybjlrpurfmufa]lclhwuylibekjjxc
-mspxottklkidvlomd[rhiachlbqgpdhfnxyc]ekkxgijnueonlkpfkm[dnwcjiihmpjqtmb]dkknlqniolowydd[dyqofryhvgracxeuivp]pbsgttbtgksqqevytrb
-pjvdfpsdlampeztecfq[lpqshzeegwiouas]nwxqaoryigyvbby[iiddsczjoxentwv]weexunkmtaaufurjz[meywmosucyrxzlgxi]huqfmfpxdmcmqfk
-abbhujqyoaphnruaih[yidrkxgrxeoarph]fvryghhzqrobkbsck[dnokdwmkbktlfoihxl]ttptfiadsswiwsfbvf
-djwqivpbexyvdquh[qmmdydhjbmunyjixviv]nradabzesdavhasjbjs[lsabjblhocebvyhfee]hwbyvnzltgezasg
-maxofygcnygnwefsb[gdfccusdbseqsqfwva]cxdmwhnjitaazhjftn[kcratndpffdnbopd]wocybndplnotqgctr[ymceqbtulsezvftsi]eggtzhqojksdjapnv
-lzihlroqvmeohnun[wskcytlimfagjyd]tnehibbupupuhepqz[hschjdjtzbvavum]zstmglsltkovvckpmqr
-syzoikkgzplleoaz[ccpsffhupzpuhjcw]kaswkcoyhlrayhikme[qnjnztjupvbwyns]ggmkqikeziailzpuv[ugqgbpunztgvsxsp]mntxaumliefzkpnia
-dxnkgspqhyejogxstsk[jfgckouqypxttst]axtisjbtaviwafh
-baxazxlkzlyzvbdvtlc[yhegkwrrluxcnaahyl]nyegiipdjrnjobyjp[ulhbizabyukfvhmdg]hgmxctzxzewckasi[fuvwuolxkcfdkmtcngk]xvmvoydeiuaeawcz
-bkomgyefwkmwwpsayb[rozknmkljogphrqywyo]vlpasefojmrzbpox[epogjnrjrntbcnzha]okfkagkfyagcszueu[gjpfnuvnazbnqylfm]busunenasatqeieestf
-dwlbzijjdujfhotvj[swplsznswlgnaud]bgedlfxgjbwxekq
-ffjhdorivdezjdb[tqkfrzxthlxadqstmqe]ttmrscyvbrresartqnh[rfztsxgbedcdecgv]qxcsxdqhshsqtjtl
-zwosebsoogknldkh[mkcucbphbvnaqyxjope]aibznttouadentsy[xfucuvnlnchuawcapcq]jqherkgzqodpzydtgu
-xondkuknycfwyenkceu[ugjlxueqtcyhyhni]bbofydvkhtjgxxnyrc[gpnwoarvjltzyhhe]qebolgjnwnstokco
-cygilweroxmbmbmx[hopxissehjarmezawol]exywzaffjuhehvmbm
-nbndomwcaauiluzbg[qjxqxhccqsvtkwm]oazwbouchccdhtrbnbv[vetwfilwgnxxxrhxar]mrbcnwlpciwpizkxj
-xuabbxdwkutpsogcfea[tgetfqpgstsxrokcemk]cbftstsldgcqbxf[vwjejomptmifhdulc]ejeroshnazbwjjzofbe
diff --git a/advent08.hs b/advent08.hs
deleted file mode 100644 (file)
index 7def6d1..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-module Main(main) where
-
-import Data.Array.IArray
-import Text.Parsec
--- import Control.Applicative
-import Control.Applicative ((<$), (<*), (*>), (<*>), pure, liftA)
-import Control.Monad (liftM, ap)
-
--- Row 1 is top, column 1 is left
-type Position = (Int, Int)
-type Screen = Array Position Bool
-
-data Direction = Row | Column deriving (Show)
-data Command = Rect Int Int | Rotate Direction Int Int deriving (Show)
-
-data ScState a = ScState (Screen -> (Screen, a))
-
-mkScreen :: Int -> Int -> Screen
-mkScreen w h = array ((0, 0), (h - 1, w - 1))
-    [((i, j), False) | i <- [0..(h-1)], j <- [0..(w-1)]]
-
-showScreen :: Screen -> String
-showScreen screen = unlines [showRow r | r <- [minRow..maxRow]]
-    where ((minRow, minCol), (maxRow, maxCol)) = bounds screen
-          showCell True  = '*'
-          showCell False = ' '
-          showRow r = [showCell (screen!(r, c)) | c <- [minCol..maxCol]]
-
-countLights :: Screen -> Int
-countLights screen = length $ filter (id) $ elems screen
-
-screen0 :: Screen
-screen0 = mkScreen 50 6
-
-
-main :: IO ()
-main = do
-    text <- readFile "advent08.txt"
-    let instrs = successfulParse $ parseCommands text
-    part1 instrs
-    part2 instrs
-
-part1 :: [Command] -> IO ()
-part1 commands =
-    print $ countLights $ (extractScreen . doCommands) commands
-
-part2 :: [Command] -> IO ()
-part2 commands = 
-    putStrLn $ showScreen $ (extractScreen . doCommands) commands
-
-
-instance Functor ScState where
-  fmap = liftM
-
-instance Applicative ScState where
-  pure  = return
-  (<*>) = ap
-
-instance Monad ScState where
-    return x = ScState (\screen -> (screen, x))
-
-    (ScState st) >>= f
-        = ScState (\screen -> let
-                            (newScreen, y) = st screen
-                            (ScState transformer) = f y
-                            in
-                            transformer newScreen)
-
-doCommands :: [Command] -> ScState (Int)
-doCommands [] = return 0
-doCommands (i:is) = 
-    do doCommand i
-       doCommands is
-       return 0
-
-doCommand :: Command -> ScState Int
-doCommand i = ScState (execute i)
-
-execute :: Command -> (Screen -> (Screen, Int))
-execute (Rect w h) screen = (rect screen w h, 0)
-execute (Rotate Column c n) screen = (rotateColumn screen c n, 0)
-execute (Rotate Row r n) screen = (rotateRow screen r n, 0)
-
-extractScreen :: ScState Int -> Screen
-extractScreen (ScState st) = fst (st screen0)
-
-
-
-parseCommands :: String -> Either ParseError [Command]
-parseCommands input = parse commandFile "(unknown)" input
-
-commandFile = commandLine `endBy` newline
-commandLine = (try rectCommand) <|> rotateCommand
-
-rectCommand = 
-    do  string "rect"
-        spaces
-        w <- (many1 digit)
-        char 'x'
-        h <- (many1 digit)
-        return (Rect (read w) (read h))
-
-rotateCommand = 
-    do  string "rotate"
-        spaces
-        direction <- (string "row" <|> string "column")
-        spaces
-        string "x=" <|> string "y="
-        index <- (many1 digit)
-        spaces
-        string "by"
-        spaces
-        distance <- (many1 digit)
-        return (buildCommand direction index distance)
-
-buildCommand "row" i d = Rotate Row (read i) (read d)
-buildCommand "column" i d = Rotate Column (read i) (read d)
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
-
-
-
-
-rect :: Screen -> Int -> Int -> Screen
-rect screen w h = screen // newBits
-    where newBits = [((i, j), True) | i <- [0..(h-1)], j <- [0..(w-1)]]
-
-rotateColumn :: Screen -> Int -> Int -> Screen
-rotateColumn screen column givenShift = screen // newCells
-    where 
-        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
-        colLength = 1 + maxRow - minRow
-        shift = givenShift `mod` colLength
-        offset = colLength - shift
-        column0 = [screen!(r, column) | r <- [minRow..maxRow]]
-        newColumn = (drop offset column0) ++ (take offset column0)
-        newCells = [((r, column), cell) | (r, cell) <- zip [minRow..maxRow] newColumn]
-
-rotateRow :: Screen -> Int -> Int -> Screen
-rotateRow screen row givenShift = screen // newCells
-    where 
-        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
-        rowLength = 1 + maxCol - minCol
-        shift = givenShift `mod` rowLength
-        offset = rowLength - shift
-        row0 = [screen!(row, c) | c <- [minCol..maxCol]]
-        newRow = (drop offset row0) ++ (take offset row0)
-        newCells = [((row, c), cell) | (c, cell) <- zip [minCol..maxCol] newRow]
diff --git a/advent08.txt b/advent08.txt
deleted file mode 100644 (file)
index e6aa6a1..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 3
-rect 1x1
-rotate row y=0 by 3
-rect 2x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 3
-rect 2x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 3
-rect 2x1
-rotate row y=0 by 5
-rect 4x1
-rotate row y=0 by 5
-rotate column x=0 by 1
-rect 4x1
-rotate row y=0 by 10
-rotate column x=5 by 2
-rotate column x=0 by 1
-rect 9x1
-rotate row y=2 by 5
-rotate row y=0 by 5
-rotate column x=0 by 1
-rect 4x1
-rotate row y=2 by 5
-rotate row y=0 by 5
-rotate column x=0 by 1
-rect 4x1
-rotate column x=40 by 1
-rotate column x=27 by 1
-rotate column x=22 by 1
-rotate column x=17 by 1
-rotate column x=12 by 1
-rotate column x=7 by 1
-rotate column x=2 by 1
-rotate row y=2 by 5
-rotate row y=1 by 3
-rotate row y=0 by 5
-rect 1x3
-rotate row y=2 by 10
-rotate row y=1 by 7
-rotate row y=0 by 2
-rotate column x=3 by 2
-rotate column x=2 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=2 by 5
-rotate row y=1 by 3
-rotate row y=0 by 3
-rect 1x3
-rotate column x=45 by 1
-rotate row y=2 by 7
-rotate row y=1 by 10
-rotate row y=0 by 2
-rotate column x=3 by 1
-rotate column x=2 by 2
-rotate column x=0 by 1
-rect 4x1
-rotate row y=2 by 13
-rotate row y=0 by 5
-rotate column x=3 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=3 by 10
-rotate row y=2 by 10
-rotate row y=0 by 5
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=3 by 8
-rotate row y=0 by 5
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=3 by 17
-rotate row y=2 by 20
-rotate row y=0 by 15
-rotate column x=13 by 1
-rotate column x=12 by 3
-rotate column x=10 by 1
-rotate column x=8 by 1
-rotate column x=7 by 2
-rotate column x=6 by 1
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 2
-rotate column x=0 by 1
-rect 14x1
-rotate row y=1 by 47
-rotate column x=9 by 1
-rotate column x=4 by 1
-rotate row y=3 by 3
-rotate row y=2 by 10
-rotate row y=1 by 8
-rotate row y=0 by 5
-rotate column x=2 by 2
-rotate column x=0 by 2
-rect 3x2
-rotate row y=3 by 12
-rotate row y=2 by 10
-rotate row y=0 by 10
-rotate column x=8 by 1
-rotate column x=7 by 3
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=1 by 1
-rotate column x=0 by 1
-rect 9x1
-rotate row y=0 by 20
-rotate column x=46 by 1
-rotate row y=4 by 17
-rotate row y=3 by 10
-rotate row y=2 by 10
-rotate row y=1 by 5
-rotate column x=8 by 1
-rotate column x=7 by 1
-rotate column x=6 by 1
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 2
-rotate column x=1 by 1
-rotate column x=0 by 1
-rect 9x1
-rotate column x=32 by 4
-rotate row y=4 by 33
-rotate row y=3 by 5
-rotate row y=2 by 15
-rotate row y=0 by 15
-rotate column x=13 by 1
-rotate column x=12 by 3
-rotate column x=10 by 1
-rotate column x=8 by 1
-rotate column x=7 by 2
-rotate column x=6 by 1
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=1 by 1
-rotate column x=0 by 1
-rect 14x1
-rotate column x=39 by 3
-rotate column x=35 by 4
-rotate column x=20 by 4
-rotate column x=19 by 3
-rotate column x=10 by 4
-rotate column x=9 by 3
-rotate column x=8 by 3
-rotate column x=5 by 4
-rotate column x=4 by 3
-rotate row y=5 by 5
-rotate row y=4 by 5
-rotate row y=3 by 33
-rotate row y=1 by 30
-rotate column x=48 by 1
-rotate column x=47 by 5
-rotate column x=46 by 5
-rotate column x=45 by 1
-rotate column x=43 by 1
-rotate column x=38 by 3
-rotate column x=37 by 3
-rotate column x=36 by 5
-rotate column x=35 by 1
-rotate column x=33 by 1
-rotate column x=32 by 5
-rotate column x=31 by 5
-rotate column x=30 by 1
-rotate column x=23 by 4
-rotate column x=22 by 3
-rotate column x=21 by 3
-rotate column x=20 by 1
-rotate column x=12 by 2
-rotate column x=11 by 2
-rotate column x=3 by 5
-rotate column x=2 by 5
-rotate column x=1 by 3
-rotate column x=0 by 4
diff --git a/advent09.hs b/advent09.hs
deleted file mode 100644 (file)
index a68ce82..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-module Main(main) where
-
-import Data.List.Split (splitOn)
-import Data.Char (isSpace)
-
-type Chunk = (Int, String)
-
-main :: IO ()
-main = do 
-        textL <- readFile "advent09.txt" 
-        let text = filter (not . isSpace) textL
-        part1 text
-        part2 text
-
-part1 :: String -> IO ()
-part1 text = do 
-    print $ cLength $ decompress text
-
-part2 :: String -> IO ()
-part2 text = do 
-    print $ cLength $ decompress2 text
-
-
-decompress :: String -> [Chunk]
-decompress text = 
-    if not (null msuf) 
-        then (1, pre):(num, chunk):drest
-        else [(1, pre)]
-    where 
-        (pre, msuf) = span ('(' /= ) text
-        (marker, suf) = span (')' /= ) msuf
-        ln = splitOn "x" (tail marker)
-        len = read (ln!!0) :: Int
-        num = read (ln!!1) :: Int
-        (chunk, remainder) = splitAt len (tail suf)
-        drest = decompress remainder
-
-decompress2 :: String -> [Chunk]
-decompress2 text = 
-    if not (null msuf) 
-        then [(1, pre)] ++ mulDchunks ++ drest
-        else [(1, pre)]
-    where 
-        (pre, msuf) = span ('(' /= ) text
-        (marker, suf) = span (')' /= ) msuf
-        ln = splitOn "x" (tail marker)
-        len = read (ln!!0) :: Int
-        num = read (ln!!1) :: Int
-        (chunk, remainder) = splitAt len (tail suf)
-        dchunks = decompress2 chunk
-        mulDchunks = [(dl * num, ds) | (dl, ds) <- dchunks]
-        drest = decompress2 remainder
-
-cLength :: [Chunk] -> Int
-cLength = sum . map (clen)
-    where clen (n, t) = n * (length t)
-
diff --git a/advent09.txt b/advent09.txt
deleted file mode 100644 (file)
index 3ccde78..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ORNXNQJQ(151x7)(5x9)OFIXU(27x3)(21x9)VDCYQELDJQUAFZUHFZVSU(34x15)(12x10)SEDIUUVFPEKY(3x9)NHR(1x11)I(15x6)(9x13)CMNDUYGYR(40x6)(4x7)RMNG(25x8)XPDSEYNCWFQFAKUMITWMBLMIK(7x11)(1x10)N(109x1)(101x15)(28x15)DYKYFCKDLFYAIHXSOAZKTPCPBUTX(18x13)SOZMWOSIQHVNMRZYYM(1x4)W(11x2)AJPKYMFRDJZ(11x11)SYIQBGHBNJL(26x9)(20x7)XLNTFHRYHLOYBBGMRPDH(269x4)(2x9)ZG(79x7)(24x3)UBTEBZLPYEDFINUQEQZUSXWY(3x5)IUH(15x10)LDDUEEJAWVGNRYA(3x5)FAO(6x3)ORDEIO(47x2)(1x10)J(2x13)DW(1x8)V(19x14)IJAAZPPGBZPFERJGOYI(103x9)(60x11)GKYOEUBZWAFDXEGWMPXZEOAQCUFCTJCXROPMNEFMJUWGBOUZRAXKRNHTBXHM(15x15)BTYXPHOQZXSBUVT(9x8)JQLNIDKMH(9x5)(4x4)BQRL(4207x15)(1464x12)(305x10)(159x14)(71x12)(24x14)(9x1)UJXIVHSUD(4x15)MAWK(26x15)(19x15)YFYDUJPUZQCKGVPOXKD(2x1)HN(2x6)GH(20x14)INJNODCLPWICQFIERROI(3x11)JUA(31x14)IUDVEHRATPGIEGELRDOZMBKZQFONCBD(130x14)(28x15)(22x7)(5x11)PHVKR(5x10)KVTDO(88x12)(8x12)POLKYDEX(27x8)(9x14)APMRPIHKQ(6x11)QTLLQU(1x4)R(29x3)(4x8)WBRL(2x15)JU(1x6)Y(1x2)U(1143x9)(364x14)(262x7)(6x9)EEJMXK(100x12)(5x1)RXXSO(5x2)VTESR(6x2)SXXSZL(49x1)OFIFQJKSCOXPXTHVWCUJVQMDBQELBLDYRKIGKHOEWRFNXNRLF(9x1)XRUFFMDVM(29x5)(3x8)VPW(6x3)WWFWRC(5x7)XMJEJ(46x9)ZBWGRECVBOPHVFQYBPOBHTPOMTYQGVZKQMKYEHCJYSNRQY(50x1)(10x5)SFPYPPQKDO(27x10)DNMTTNUGOQNAQLRBKDLNRVGRMLJ(23x12)(10x7)LCQWCIMTSV(1x12)X(15x9)JMJMKCIELUBETER(38x7)KWZVVWPBHKSBWMQWBJKCRHLIEHZSQBRAEOBRHE(130x13)(123x7)(75x10)(9x2)NUSXXITCS(11x2)JWHCFBJNEYD(10x1)QJNBNHNNDF(5x5)RWBYJ(11x10)GRRSDLTEZAW(35x9)EYHPPDLIWUITRPLKHXFBCUIQZZMYCDKWPNX(326x11)(130x1)(76x9)(9x10)TBCYBWJLT(4x8)HTQB(35x8)FUCOLJQAFSWAYTACMFRACVWDLZYRGSUMZAY(5x15)ZWHCN(17x14)CRUBDKGWUQCGGAIOS(10x7)(4x12)RWFL(3x9)TFR(27x13)(1x7)R(2x14)VY(8x2)DZMFRMGO(94x11)(61x15)(1x14)O(25x14)IKECWOPRWQBVRNEDQXWFMVBOI(15x10)QVTWMBNCISLOBJR(20x1)FIVILFBNIPNRXAWXGAMJ(32x8)LNPRYYKSLCXOEXFWZKAXERCQKDACFNYA(10x1)(4x14)WRAN(292x2)(168x7)(10x8)HQSTVLQCNK(89x4)(9x11)XCBGNGENA(22x5)BLUEARYFSAVBWTDGVHYWZP(21x12)KGRSTMCVPYJXIJWXVXREW(12x5)NKTUQMXCLFNL(17x10)UPUPBQDSHOXKHLGCR(10x12)ALIFHIZXQV(10x1)KEFBFHAOCG(100x2)(9x4)(4x9)MKGZ(80x5)(20x3)DQCKBWWUZDJICWUESBKY(14x9)EFXIDIWRKZTVUM(6x15)JRDKSE(2x14)AA(9x9)MJFTTZMTW(5x3)VLDNV(411x4)(397x1)(390x8)(46x4)(18x7)BLBFCJNGQWPSJGPOVU(16x7)(10x2)FFZWESCTXC(6x3)EUNIDH(56x14)(28x5)(2x8)CJ(2x1)EA(9x9)FLKGEMFED(10x9)OLOMVPKTRZ(1x5)R(202x5)(88x9)(6x3)VRZHGK(20x12)KKZGPZHKVMLDUKNRPDLL(7x2)CBDBTRO(3x15)XPR(23x3)EHEWCFLEUPCSTSISPKGXIMK(32x5)(16x12)KENYBOSVRILLLTVM(3x14)DYH(19x4)(7x8)FGHRXWB(1x15)E(39x8)(9x11)XRLWASPXI(17x10)RNFIHAQMBBELSLNCT(49x1)(36x4)(18x2)QKRMYMDFPSVDXUXXCH(7x3)SBFHWUF(2x6)BD(2x6)HN(1047x3)(450x2)(10x4)YQQDOELWCI(48x15)(25x7)(8x5)KUKZDUYU(7x6)(2x1)KQ(1x4)K(6x3)INDERJ(284x5)(92x7)(86x4)(13x1)PSVECPHBPYEPJ(3x15)JEY(35x8)RCTZOHPJAICRPRVAYZZLUKRZPOOPFCBCPAQ(4x9)TETC(2x11)ZV(179x5)(95x6)(8x9)HUGVMXOT(9x10)MFDYGPUWF(12x2)PSBNZPCWSANA(6x1)GICWEI(32x9)JCBCGJIMZTQUSVQDRHWMSYJYUHJIVYIV(71x13)(15x3)SXTGVVIWXDWZTZO(9x2)RASQPEQUN(7x10)TPHSDTV(7x15)EPAHSDZ(5x6)BIOZT(7x4)KYMJLYA(69x11)(63x5)(3x9)XSS(37x9)HTZKRPESNZRIWPGWAPHBOIOWAWFHWMIXWYQQC(7x6)(2x1)FA(273x3)(245x12)(39x9)(8x13)WCKBPVRZ(18x10)(11x10)VHBAIPPIWXD(2x3)XD(1x11)Q(6x15)WCPPQC(167x1)(23x15)DYHQGULKPISILTRIXNEJZAV(65x12)(2x9)FZ(14x9)WWCTYVLVAOZDAG(15x11)CZYGTNAELLIRKYW(10x6)IEXFBJJCLQ(42x4)(9x14)XRPJHVVME(6x8)XAVNCD(10x9)IBVGVWIFUD(11x7)(6x6)LSMIRR(14x4)LFACCTXVWLEDWE(287x5)(280x2)(273x1)(7x14)(1x15)U(109x12)(7x1)TPNMYVS(46x8)TWTINTRPDOQKPDPZNKXIVISRQTZODBXMSPPZKCQFAYCJCS(5x11)AKNKA(18x14)DKSKSQUAUTPZPNHIWP(4x7)DOMY(56x3)(6x6)JBJORX(7x11)IDJWUCZ(26x1)XMRHHVJEZBAIOCBKTLKEWRQHWR(46x3)(6x8)JDOJMU(5x6)ELYWH(1x1)M(1x13)Y(7x9)XRTOLWT(22x11)PXZRLOPHTRSXFEGYCCCKOZ(1x6)I(4x11)OPMW(2x11)ET(1244x13)(8x9)(3x8)ABP(1x13)B(188x1)(6x9)(1x5)H(161x8)(115x15)(15x6)(4x8)YQCB(1x1)L(73x9)(2x15)GX(25x4)NTANLQJGDHTCOIRAFZAKXQHVB(1x3)R(10x5)VDXVAGTAGQ(7x3)NKCTQVK(3x9)RRQ(1x15)C(31x15)(1x2)G(19x2)OAUAOISPSPTMKOGJEAV(4x1)DQTV(229x5)(2x4)EP(124x5)(117x6)(109x14)(16x14)UDUBGHIWRGGHYVJU(2x1)DG(7x14)XZCOKGR(4x15)XDVD(49x10)HIHUJRXURZHGHWJMFTGUQUBGCJVLZSGLDIANTUIKYZWXHMAZY(84x14)(6x15)IEUICQ(13x5)HXIRLHFWXDSIB(2x13)XU(39x4)(25x10)(11x14)MWHAQQMPPVR(1x13)R(2x9)UL(786x5)(38x10)(1x12)S(25x9)RRXFLAJRHOUZPDTBWKIZHUNGA(471x12)(54x8)(34x14)VJZSILTGZWMCZLOJSZHTQVVAZSPWHAKVFO(8x3)XCYTBHDX(221x9)(60x1)(1x2)M(17x13)PIRWGCEZQNSPPUBHK(23x10)YJEVBSPQYKPLPDOSCEHYSSA(78x12)(2x6)YY(21x5)TMWGVWVOZDOFGCFEZJRJR(32x5)ENWXNGFHIYQHCBWQEDTMBOWQKJIHAZHY(1x1)E(18x9)(2x1)OD(5x11)GGATR(32x11)(13x9)VZVAFSADAUIGI(8x2)JOUUXRCU(1x11)I(8x7)(3x8)PCV(75x3)(46x4)(28x9)PJXDTVYIRKASKJMXDIGAXSQPMPWK(6x11)SUYPHC(4x13)CBMV(8x7)QAUWLDLP(83x8)(19x7)DDNWFTSHJSTPWECIXWZ(6x5)EQWGSJ(1x5)O(20x6)(13x10)MNFVFUCESZDMF(9x15)(4x3)JZSU(7x12)(2x9)UZ(228x2)(220x15)(49x2)(1x10)C(5x9)TCPJZ(6x7)FJSPSS(4x14)FYQF(5x15)XBWKH(75x10)(5x15)KTHBO(12x5)LLZEFONZKCBI(28x5)RGMNFEEHBHZJKTMPVEPHIOJUXOMB(7x9)YWTZNCT(60x14)(3x10)DAN(15x6)BHOSLMFSEQKOGEX(1x4)D(17x11)SULIDVKKLXIWAJXRK(2x7)PX(4x1)TKPO(9x8)QFXUEZUGP(2331x2)(2323x8)(202x13)(10x13)(4x14)GFSR(178x4)(101x11)(21x9)(5x9)SWRRL(6x8)TYXYPJ(68x5)(4x10)QMJZ(19x15)APBTUGYPJQFQODZRNAC(5x13)YIVAO(14x14)QHWPZNQSRZJIEC(63x2)(32x10)(5x4)EVMQL(15x12)SAOYGPDXFSDOBTB(6x8)(1x5)C(7x13)MILUDKF(144x5)(3x8)PLQ(129x7)(27x3)(7x13)QLVZTAJ(9x4)JNLNRKPXA(4x13)EEXX(17x9)(11x9)SYQBWQASJPK(57x8)(29x8)(15x11)CFVXGJKXAAKNRRT(1x15)A(1x4)C(10x5)EFFLNXDEVJ(664x6)(357x6)(82x8)(7x12)LPCKKIX(55x10)(6x4)KXJNIR(2x4)IH(5x6)VIUMV(11x10)TCNXEQRMQJZ(4x7)DREZ(2x8)IV(119x7)(21x13)RHDEMDBNRPLOTSZRKZSHA(47x2)(22x2)ZADHZNUARPTFHKEXJKCWXY(7x6)OACRTYP(1x15)P(31x10)(5x4)VSWJT(7x1)IGAMFHI(4x3)GOCU(26x5)(19x13)(12x15)WGYBKVRPMWJT(15x7)IFUICWKGGCLHCOO(83x12)(62x8)(20x10)TJBGZCIWVKOROYITLBUA(7x11)UDSMGLK(6x3)FWPTWW(6x4)JECWEE(9x13)CUQMJOFWT(292x11)(68x14)(61x13)(28x10)ZRYXMSXXTLGDYHOVDRDVOCFJTCXJ(20x7)HZCFVXJATHXTNPHWFSIS(65x4)(11x6)BETMULBEIND(3x11)VLU(25x5)UYRFOHJXRRSJXEFEOPROCVNOA(3x4)GQJ(95x8)(81x11)(30x12)FXPGOAGXMVWAMAKJTQKJEUZNGCKDXU(10x5)YFDYGXCFTD(10x5)USWAFQFFSA(6x10)ZFVKMB(2x8)SF(16x8)MZPGUBATXFXXJOJS(17x4)AJTTIOULZONRGGMLK(448x2)(28x11)(22x2)(8x13)(3x1)TMQ(2x13)IP(5x6)AJJXN(290x1)(109x10)(5x12)CUMMS(7x7)UEWYDSN(59x12)(2x12)FP(26x3)LWFPYEPAANDDLIOJQBYCRRQYRT(1x2)O(7x10)RXDHAJH(14x6)(9x6)PQLSJTFAO(124x4)(56x12)(12x10)DOOJHOYDOTLM(10x7)VKUFQDGCPT(6x9)ONBPUY(5x5)CMPUW(5x13)WWWWM(16x9)TOPYYTZBFGFAXYBO(14x15)(8x10)FPVBQPNJ(1x15)O(18x1)UTQYAKMVOBJZDLTOVO(12x3)YHILDGGCGZXZ(20x7)(13x15)RVSYRCEYESCUC(73x10)(21x5)(15x4)EHQBVPUAJWTOZKA(22x12)FIWIHPWFDOJTMAXRCKCJZE(11x5)(5x15)PDHSQ(828x13)(1x8)P(161x8)(154x4)(11x3)DAFIIEMOBYZ(6x1)EGJWXU(107x7)(13x2)SRTDQRBOGITPI(6x2)VWSTKU(23x5)GJXMEBCGSIYQNMFLISIUFTB(1x2)D(36x8)GKPPJHVMOOTOCTUHRGVVQUKNHRCZNINYLJGB(6x11)EFSGDL(327x12)(6x2)QAAXCM(5x9)YVLGN(86x1)(10x1)SVFCLDTQEO(2x4)OA(17x15)OAEGSJHUTEFJXDOTD(7x7)HGXVBHJ(20x15)(2x6)XQ(8x5)KDXCQOFM(90x11)(14x15)(9x9)DTJSQPKYW(25x7)(12x11)SYLBSZEMQSQA(1x3)S(11x2)(5x13)KWHSE(4x7)MFSC(7x6)(1x12)F(110x2)(10x1)UIIOJNJJJI(88x8)(10x10)PQCUFWXHMC(15x12)OVVASAWDIIOZYIT(17x3)NLLLZIVNOIVEHGXDP(19x11)CDJEUHEPCUEYVLGYLTJ(311x11)(165x1)(16x7)MUMPDQFLGFEGIYLU(9x11)(3x11)FNP(1x14)U(60x4)(4x7)KDWX(4x1)LKMS(27x11)MIELWFKZJUSUYBARAGTJAZIBEDH(3x1)LDI(48x15)(10x15)DUUYAIZHKY(5x8)KEMNC(14x10)HZTAHRSCICOTIR(4x13)AUNU(45x2)FRDBNRZYFZLCAIEVZWSAIMLGBCDSBHXFPWRPYJRQHNWUZ(28x8)TCHELUEWWRHMIGBKEUCWBTIEVNCB(37x10)(30x11)(6x9)PLWKRH(2x3)PL(7x2)MAFSJHV(6697x8)(172x15)(164x10)(1x9)N(151x2)(7x2)MOYJQSA(24x4)BSZRAIBTDPFAAHQWOWDJJRCW(34x10)(2x15)QB(1x1)T(4x3)ALVX(6x7)SQFSKZ(2x11)JX(54x2)(47x14)(6x12)HOALAK(28x10)DGCVKLTWNKGAGRGSWPVEUGRDAGWA(2577x12)(88x14)(82x9)(48x2)(41x11)(4x5)KAVK(15x4)LCMPETDQZUWBRCL(6x9)CFZJGS(7x15)PGVNKAY(9x12)(4x4)NHID(827x3)(259x9)(153x12)(27x11)(21x4)PQNSUYEFBRAAVCJFJPPGZ(13x4)(7x10)NNSUBSG(70x11)LOGUFNQNLSWWQXBPQIWNJIEDRFUCRCUAVANHFGDEMQZRGSITBSBLZXVWJGXPPDZEXZQCEU(7x10)DTIEEXA(4x13)DDNZ(44x13)(37x14)(8x14)NIJOMVGP(17x1)MDXVVVWIZSXMSGJMC(4x4)ARFY(31x11)(10x14)RVZUREXEUI(1x7)M(3x5)LXC(170x5)(114x3)(83x3)(19x10)UUCHMGESOOTJCTEJVRM(3x5)ZCP(2x10)IU(25x6)TNLNLUTXNPNDWMXGVVGIPVWJL(4x12)JAAA(13x1)UFQFFPMZGZNNN(1x1)V(27x5)EDPBYCEAMMWAIPWUZODVDAWPWIJ(10x1)(4x10)VJHN(73x13)(66x12)(5x1)TAFQR(11x5)(6x8)ATBQTY(5x8)KZYJI(23x1)(17x3)VSDOKMWKSGRRIRXWF(297x5)(11x6)HTGQDOGJQSJ(49x13)(43x1)(8x5)ULVVUCJI(6x11)JAITVW(12x3)ISRQLAPACLXU(25x2)(19x7)(13x2)SRBHDIAPWUMER(51x9)(45x1)(8x9)ADOZRIJD(13x15)JXWDDHBYCJKMO(6x10)SKLMKL(129x8)(111x2)(5x10)ATJGD(22x6)OLATWNGTXFJMTWCJQAQDDA(19x1)WLYAFVAKQECTNXJRBVH(20x11)DDWDXGQEZBKJBDJBAKJB(14x5)TIZKGCXPPUBGSJ(5x14)SEHYY(1410x15)(148x5)(24x2)FHQUELWXQDUWLIBTXEPSQTJQ(111x3)(40x13)(6x7)ZAWWAD(2x15)GI(3x6)XJY(7x14)SCZWIKT(10x1)WMCTELCITD(15x12)(2x8)OD(3x3)IKM(12x2)(7x4)BEEDJSC(2x15)SZ(303x5)(89x2)(70x4)(3x7)ATQ(9x4)WSWYIUPAG(12x8)KDWAUNHURPWB(3x15)ESP(15x7)DANNZUDKDFXXSBO(7x12)VUNUHBI(1x8)M(180x9)(66x1)(20x12)MOUJOXCMCZUPVKVXPKUB(27x5)QHNMIHMVJVBBVCDGHPYOWRHTCLT(1x8)Q(22x13)ADGXYCQHWNAGCLWNPXBPIX(73x9)(1x11)J(27x14)ANTTYLYVSVWEAPXPGRRVWVINHFM(7x10)ZDBZWVE(3x12)ISL(5x4)YDXBZ(9x14)XBPBWAQTR(407x3)(186x1)(36x10)(1x2)W(23x13)DBNCARJKKIAWVQVKNOIPSJO(57x2)(6x9)VKZMPB(3x2)JIZ(22x2)AQWQZQOKXLPZSJTNBJKCXL(4x12)OAOJ(8x8)(2x10)PT(29x3)BKPFZBRCXVJUJJHVOIMJELFFHHBUR(26x5)WUACSRCIRADIQKCXKEESRJNWKU(10x9)RBSMRSUWMK(177x3)(1x10)Q(28x8)(5x5)PQQGD(6x13)LAGOEK(1x5)C(71x13)(16x12)IIAWONMLGHMCHWIH(19x11)KEYESARBBXHWWQWPQVC(1x11)A(9x12)LMADFIHXJ(6x5)MZVRQU(40x12)TOSAJVXJHKVWJKLTVBIUKKESOFCKFOPSXHYCMDXQ(8x15)XGHEISVJ(68x5)(62x3)(4x7)OOWZ(7x15)QNNVWUX(5x10)GSLOA(14x8)(1x8)B(3x3)HJL(3x11)EIK(450x6)(101x9)(30x8)(2x5)MM(17x8)GHTHOCTDDQAYBUVWP(59x8)(1x5)R(3x11)HYR(21x2)STLZXNENUFTGYWNQJHFUK(10x10)NGMEAWPFBI(28x3)LNDWFXKPRAOWKJHWZZIYLJLOOBKK(110x6)(14x2)SALGMMEIINEJOU(40x7)(4x13)AIMA(5x12)GSAFV(13x7)CSLJJRZIBBUMF(21x1)(15x9)THPSZDCPWASRUYR(2x5)EE(5x7)XDUPK(13x10)(7x13)SFWIYYQ(163x10)(26x15)(13x9)HQJQXZQCIHSAE(1x15)K(4x15)FMWB(9x12)SQVQTEWMD(41x3)(13x1)EEYHHJQCDSYRO(9x2)YCDDFHWTG(3x9)LGW(51x12)(7x14)OITBFQF(8x13)FZVMIWUM(9x8)XTZCNFOTE(4x15)KTHY(221x10)(213x14)(32x3)(26x3)GEUNPCYFYLTFFXOKWXFBDYLBMK(77x1)(41x14)(7x11)XBMCCZD(21x11)KFOJGBJCEHPTKBLUSTERX(10x4)IZWNLBDABA(8x3)IVDWYIMO(50x9)(6x5)(1x1)H(4x8)VDKE(2x5)QE(17x3)(11x7)KGYMJEMQVWS(9x4)EVWJYLBBQ(16x8)XZDDQZQPCOLVIYGD(3001x2)(724x14)(235x12)(227x11)(25x5)(1x10)N(3x4)QSO(5x3)XPKCV(24x8)(11x10)XXOIOGOKIOD(1x8)B(88x4)(1x12)I(10x6)CEIKKPKUJG(1x11)Y(6x8)QAYNKJ(41x7)BGKQCYZZGRQGCNXSGYHAXMWIJOPDKLMAQRKGFRBML(66x9)(14x12)YTKTEIISOWYZWB(3x13)UDK(12x2)PXDYSSCHAFSE(2x2)DA(6x1)UZSORT(309x1)(107x1)(81x11)(23x4)UHLCPASWMUWBQPYJSUHUFEO(5x1)NTMAV(26x7)JDNTOBRNEUELJIISZGKNRYSBRE(4x10)FVKZ(13x8)SBNXXTKLMDHII(138x4)(62x12)(55x12)OMRRSQWFPEAXAXHFHHQBWGCESBLWZBVYEQQKYRGILBNJJCAOXFHDIXU(19x13)(4x5)CVBF(5x9)EBLEV(15x1)(9x13)BATHCHMGP(16x1)BGSXRPQUKQJYDIPV(44x3)(8x1)(3x1)EWQ(7x12)JJIVUYJ(12x7)XJSYYYTSZBHD(7x14)EDHTGLH(144x13)(130x4)(12x7)(6x14)CYDLYL(43x2)(4x10)DOTG(4x8)ELJI(6x6)QGMRSQ(1x4)K(2x9)GS(40x2)(11x10)CDHAMRCSTVC(8x11)WMZDTRTD(2x14)XS(11x4)IXUNDJVBLSO(2x3)CH(7x7)(2x5)NF(1015x9)(204x1)(20x10)GPKSBZZRRZGMFICXNMIX(141x9)(24x9)NXNCFLIWVVVQNVKDRUTQYNJB(3x8)AXD(33x6)MDGPOLEPZEUNBDWGBSAFRPEMTKUXIJDRA(33x11)(2x15)PY(5x1)XYUAI(9x14)UPOUZTFRQ(17x10)YAMBZLTZMBSRFZOUK(5x10)NXKJE(11x15)GNJTBTSXLTN(299x9)(29x1)(22x10)(5x13)FSAYZ(5x14)MWJOX(178x9)(79x14)(21x12)WXTCOEECSKHDITBOAAVSF(6x15)INXWKB(8x11)NTSEQSMQ(19x1)UTQUQGUDXSFROLQWKVZ(76x6)(3x2)QOL(10x15)UIGYPYAWRR(7x7)JEELSVH(13x12)RUBSHAXAWQGYF(12x12)PGQUXPKEKXRN(4x15)BQEB(8x4)(3x1)AVE(59x15)(11x11)QGBFDCZTADF(22x8)(7x7)RJEZNHA(4x11)MMJN(8x7)(3x7)GNT(174x1)(166x12)(17x2)ZDOBQSATWXMNNJDCV(17x13)(10x14)CATNORVTYK(95x10)(9x5)LROSBZBVM(29x2)ZQBDHDVQJGZTGKDBOSHXOCVXYOSKC(22x11)FXLGIAQRSIJQCGUQPFJXFM(3x8)HSE(3x11)JVV(11x2)(6x7)YCATPH(206x5)(133x6)(31x8)(8x5)YTYSRRBZ(4x13)UYBY(3x6)SJW(32x4)ZCNRDWQGEMLBOCMJMCAJJVJPLIQXSTSG(52x3)(12x10)ENCLYDJSGEYW(13x15)EXRYDALLRZKCF(8x1)RIVKPAAB(8x14)GUSBQGHU(46x2)(1x5)P(34x8)(16x3)GDVLVDXNKOCDWQJI(6x15)YGGNZJ(98x6)(91x10)(11x5)RVKZVECGFPV(8x12)(3x7)URB(54x1)(11x12)JPMMFXPJPMQ(5x1)ZKRGP(19x13)ZJIYXFENCFNAFOEFUNL(1225x12)(534x15)(214x13)(64x15)(5x7)PZQBH(25x10)XSZONMJVANCJZOJPAAEJSRYGT(16x5)PQPCLAYGZUDSQKTZ(83x8)(40x6)ZKUMBQGMGPGEAKSJHFSIPNWEKXZEHBJUUSCVWYMY(10x5)CMXYJOWZZN(6x1)WPARZQ(4x14)FAYY(16x1)(1x11)E(3x12)MLF(25x11)(3x8)BRT(10x14)OGKXRSWWPD(4x1)VFBM(227x12)(150x2)(25x10)YFBSVADMLPNYAIXAPMBRZPTCO(8x14)PKGEMLYV(50x10)DKUPPNRQKKWAJIQCFKGQVRSXTUWPVNQZESPGLNQWMVMAOCORMP(9x6)HVKQYKZAH(26x10)RQQPTHCFQFHIBMEATIAVVKWDWG(57x9)(8x10)QVILTCPK(36x13)LUDTUSNBRJNJCTXOFFMWIMAMWBKXHMMENNSW(2x7)ZQ(62x5)(25x8)(5x15)GCZUZ(9x1)JPDRQMLTB(24x13)YTTGOHFCVHRRGLESEARVNFPQ(178x5)(42x2)(21x15)(8x5)RPZICSEL(3x4)YIL(8x13)(2x11)GF(84x11)(70x2)(7x5)MWWDPMK(7x11)TEYJOFJ(31x1)TWNBXEDRILLPRUGJDBIVBFYNVHGLUED(3x8)VDU(3x9)YYV(7x4)(1x12)L(21x1)(1x4)M(1x8)J(4x3)XJGN(491x9)(148x8)(36x3)(2x9)MG(13x11)EDWPZURXZWLML(4x1)VRBX(31x11)(14x8)KBLQBMRGRGKHCT(5x14)PRDLH(3x8)CQB(32x15)(10x15)RLWBNSAEHH(3x3)HPB(2x2)PA(15x2)TKPIZXDBJJMAZDR(133x8)(1x6)B(83x8)(13x10)WNSKNXUSTCDKE(4x8)NMAW(6x6)EJRNHD(4x14)MLJN(27x5)ZQBFSJWECOPVETZPGXQJPPDQZEL(22x1)(16x1)ZSEPLZISVDFRGRJB(4x13)YRXG(39x2)(33x7)(16x9)HMRXYWRBVITBVWTG(6x2)LCYRSW(123x13)(31x12)WVTWWQZUYGBJOSPKLUQTAGWXXURUDLI(34x10)(7x5)ZTTMEQS(2x8)YX(9x13)ROIYTCKSX(28x13)(3x9)WPV(13x14)PQHWCFNXKFFOH(3x15)EUZ(14x7)(8x15)UHHVOLEJ(914x15)(782x12)(448x5)(118x6)(26x12)(4x12)BLTT(10x2)REYZXYJJFQ(39x8)(8x6)XEWKRGZT(3x8)ECB(5x9)GOBWQ(3x2)KKM(34x7)(18x11)QSQRCJXLCKUYJBPSWG(4x9)XOSJ(34x5)CIABSNSBNQQKAARJOOETKSXJIPOFQOMAPK(24x13)(3x7)ADL(10x3)RVSLAIXAJJ(67x7)(52x9)(3x2)AJH(3x6)OGK(4x9)SQFL(1x1)T(14x14)BQZZXEWSTOKEUA(3x13)HBM(171x14)(25x9)YKLMFOEYQHSODISORNEKDIGVY(12x6)(6x13)OFJBKW(53x7)(21x11)GINJQDIXMAWRHIHJLXFIP(19x8)SVTFKYTLPWYEWWFIUPB(16x12)(2x1)PB(4x8)TMWZ(33x15)(5x3)QBMUH(10x5)UHNESLDFMY(2x4)WW(9x2)(4x7)QTKW(94x10)(47x10)UUVWDQXOXQUFEROVLOZRXIHEPHTWRPSGHLNSYGNIVHEDQGV(34x3)(21x4)(7x9)IMCZEIB(4x2)TNMA(2x9)DM(192x6)(2x7)ZF(2x3)VU(6x13)DODXJG(158x15)(1x4)K(42x12)(2x8)RM(4x6)YMIM(5x2)BXKIG(10x1)ZWQMIAOBEY(78x8)(7x1)XHAETJV(28x1)QPKULGVENLMJWWEHOROJEESLKYTA(3x5)XMZ(18x1)FZBLVDOKGEZKOBICEO(13x9)MWICPPUEWVWKH(7x10)KVNGSWM(116x10)(26x3)(20x8)(8x12)SSVBYWJX(1x9)H(77x14)(12x3)OWHWKICESREK(1x11)D(46x3)(11x5)(5x15)ORJRA(1x13)K(16x3)XRJXBYVIUITRPPYRRNHU
diff --git a/advent10-test.txt b/advent10-test.txt
deleted file mode 100644 (file)
index e9ad2b4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-value 5 goes to bot 2
-bot 2 gives low to bot 1 and high to bot 0
-value 3 goes to bot 1
-bot 1 gives low to output 1 and high to bot 0
-bot 0 gives low to output 2 and high to output 0
-value 2 goes to bot 2
diff --git a/advent10.hs b/advent10.hs
deleted file mode 100644 (file)
index 7097c7a..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-import Text.Parsec hiding (State)
--- import Control.Applicative ((<$), (<*), (*>), (<*>), liftA)
--- import Data.List (partition, union, intersect, tails)
-import Data.Text (pack, unpack, toTitle)
-import Control.Monad.State.Lazy
-import Data.List (partition, findIndices, sort, find)
-
-data Destination = Bot | Output deriving (Show, Read, Eq)
--- Rule bot low-destination high-destination
--- Gift bot value
-data Instruction = Rule { ruleId :: Int 
-                        , lowDestType :: Destination
-                        , lowDestId :: Int
-                        , highDestType :: Destination
-                        , highDestId :: Int
-                        } | 
-                   Gift { giftId :: Int
-                        , value :: Int 
-                        }
-                   deriving (Show)
-
--- bod id [item1, item2]
-data Place = Place { placeId :: Int
-                   , placeType :: Destination
-                   , items :: [Int]} 
-                   deriving (Show)
-
--- delivery by bot of low-value and high-value
-data Event = Delivery { deliveryId :: Int
-                      , lowDelivery :: Int
-                      , highDelivery :: Int
-                      } | 
-             Update { updateId :: Int
-                    , updateType :: Destination
-                    , updateItem :: Int
-                    } deriving (Show)
-
-type Factory = ([Place], [Instruction], [Event]) 
--- data FactorySt History = FactorySt (Factory -> (Factory, History))
-
-emptyFactory :: Factory
-emptyFactory = ([], [], [])
-
-main :: IO ()
-main = do 
-    text <- readFile "advent10.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions
-    part2 instructions
-
-
-part1 :: [Instruction] -> IO ()
-part1 instructions = 
-    do  let (_, _, events) = snd $  runState (runFactory instructions) emptyFactory
-        -- let (places, instructions, events) = snd finalFactory
-        print $ findDelivery events 17 61
-
-part2 :: [Instruction] -> IO ()
-part2 instructions = 
-    do  let (places, _, _) = snd $  runState (runFactory instructions) emptyFactory
-        let outs = findOutputs places [0, 1, 2]
-        let product = foldl1 (*) $ concatMap (items) outs
-        print $ product
-
-
-findDelivery :: [Event] -> Int -> Int -> Maybe Event
-findDelivery events lowItem highItem = find (delivery) events
-    where delivery Update {} = False
-          delivery Delivery {deliveryId = bot, lowDelivery = l, highDelivery = h} 
-            | l == lowItem && h == highItem = True
-            | otherwise = False
-
-findOutputs :: [Place] -> [Int] -> [Place]
-findOutputs outputs ids = filter (interesting) outputs
-    where interesting Place {placeId = p, placeType = t, items = i}
-            | (p `elem` ids) && t == Output = True
-            | otherwise = False
-
-
-runFactory :: [Instruction] -> State Factory ()
-runFactory instructions = do
-    addInstructions instructions
-    runInstructions instructions
-
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = ruleL <|> giftL
-
-
-ruleL = 
-    do (string "bot" >> spaces)
-       bot <- many1 digit
-       (spaces >> string "gives low to" >> spaces)
-       lowDestType <- (string "output" <|> string "bot")
-       spaces
-       lowDest <- many1 digit
-       (spaces >> string "and high to" >> spaces)
-       highDestType <- (string "output" <|> string "bot")
-       spaces
-       highDest <- many1 digit
-       let rule = Rule (read bot)
-                   (read $ unpack $ toTitle $ pack lowDestType)
-                   (read lowDest)
-                   (read $ unpack $ toTitle $ pack highDestType)
-                   (read highDest)
-       return rule
-
-giftL = 
-    do (string "value" >> spaces)
-       value <- many1 digit
-       (spaces >> string "goes to bot" >> spaces)
-       bot <- many1 digit
-       let gift = Gift (read bot) (read value)
-       return gift
-
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
-
-
-
-
-addInstructions :: [Instruction] -> State Factory ()
-addInstructions [] = return ()
-addInstructions (i:is) = do
-    addInstruction i
-    addInstructions is
-
-
-addInstruction :: Instruction -> State Factory ()
-addInstruction r@(Rule {lowDestType = ld, lowDestId = li,
-                     highDestType = hd, highDestId = hi}) = 
-    do (places, rules, history) <- get
-       put (places, r:rules, history)
-       addPlace (Place {placeType = ld, placeId = li, items = []})
-       addPlace (Place {placeType = hd, placeId = hi, items = []})
-addInstruction Gift {giftId = g} = 
-    do addPlace (Place {placeType = Bot, placeId = g, items = []})
-
-
-addPlace :: Place -> State Factory ()
-addPlace place = 
-    do  (places, rules, history) <- get
-        if not $ placeElem place places
-            then put ((place:places), rules, history)
-        else return ()
-
-
-runInstructions :: [Instruction] -> State Factory ()
-runInstructions [] = return ()
-runInstructions (i:is) = 
-    do  runInstruction i
-        runInstructions is
-
-
-runInstruction :: Instruction -> State Factory ()
-runInstruction Rule {} = return ()
-runInstruction g@(Gift {}) = 
-    do  updatePlace (giftId g) Bot (value g)
-        propogateUpdates
-
-updatePlace :: Int -> Destination -> Int -> State Factory ()
-updatePlace b d i = 
-    do  (places, instructions, events) <- get
-        let (place0s, otherPlaces) = partition (samePlace (Place {placeId = b, placeType = d, items = []})) places
-        let place = head place0s
-        let place' = place {items = i:(items place)}
-        let update = Update {updateId = b, updateType = d, updateItem = i}
-        put (place':otherPlaces, instructions, update:events)
-  
-
-propogateUpdates :: State Factory ()
-propogateUpdates = 
-    do  (places, instructions, events) <- get
-        let (fullBots, otherPlaces) = fullRobots places
-        if (not . null) fullBots
-            then do let fullBot = head fullBots
-                    let maybeRule = findRule instructions (placeId fullBot)
-                    case maybeRule of
-                        Nothing -> propogateUpdates
-                        Just rule -> do let small:large:_ = sort $ items fullBot
-                                        let emptyBot = fullBot {items = []}
-                                        let delivery = Delivery { deliveryId = placeId fullBot
-                                                                , lowDelivery = small
-                                                                , highDelivery = large
-                                                                }
-                                        put (emptyBot:(tail fullBots) ++ otherPlaces,
-                                             instructions, 
-                                             delivery:events)
-                                        updatePlace (lowDestId rule) (lowDestType rule) small
-                                        updatePlace (highDestId rule) (highDestType rule) large
-                                        propogateUpdates
-            else return ()
-
-
-placeElem :: Place -> [Place] -> Bool
-placeElem place places = (not . null) $ findIndices (samePlace place) places
-
-samePlace :: Place -> Place -> Bool
-samePlace p1 p2 = (placeId p1 == placeId p2) && (placeType p1 == placeType p2)
-
-fullRobots :: [Place] -> ([Place], [Place])
-fullRobots places = partition (\p -> placeType p == Bot && length (items p) >= 2) places
-
-findRule :: [Instruction] -> Int -> Maybe Instruction
-findRule instructions bot = find ruleForBot instructions
-    where ruleForBot Gift {} = False
-          ruleForBot Rule {ruleId = b}
-            | b == bot = True
-            | otherwise = False
diff --git a/advent10.txt b/advent10.txt
deleted file mode 100644 (file)
index bcede34..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-bot 123 gives low to bot 191 and high to bot 162
-bot 191 gives low to output 9 and high to bot 192
-bot 182 gives low to bot 175 and high to bot 196
-bot 113 gives low to bot 172 and high to bot 94
-bot 78 gives low to bot 37 and high to bot 25
-bot 187 gives low to bot 125 and high to bot 45
-bot 71 gives low to bot 108 and high to bot 61
-bot 154 gives low to bot 2 and high to bot 64
-bot 142 gives low to bot 110 and high to bot 163
-bot 109 gives low to output 0 and high to bot 43
-bot 198 gives low to bot 101 and high to bot 52
-bot 138 gives low to bot 9 and high to bot 47
-value 5 goes to bot 189
-bot 179 gives low to bot 176 and high to bot 14
-bot 115 gives low to bot 82 and high to bot 181
-bot 101 gives low to bot 90 and high to bot 5
-bot 9 gives low to output 5 and high to bot 149
-bot 181 gives low to bot 0 and high to bot 27
-bot 119 gives low to bot 207 and high to bot 65
-bot 202 gives low to bot 69 and high to bot 154
-bot 100 gives low to bot 206 and high to bot 169
-bot 72 gives low to bot 205 and high to bot 12
-bot 146 gives low to bot 8 and high to bot 106
-bot 58 gives low to bot 180 and high to bot 123
-value 37 goes to bot 1
-value 61 goes to bot 144
-bot 205 gives low to bot 169 and high to bot 3
-bot 91 gives low to bot 76 and high to bot 84
-bot 93 gives low to bot 122 and high to bot 100
-bot 76 gives low to bot 147 and high to bot 89
-bot 102 gives low to bot 11 and high to bot 23
-bot 43 gives low to output 11 and high to output 12
-bot 128 gives low to bot 15 and high to bot 85
-bot 137 gives low to bot 112 and high to bot 2
-bot 88 gives low to bot 103 and high to bot 55
-bot 162 gives low to bot 192 and high to bot 141
-bot 183 gives low to bot 49 and high to bot 81
-bot 127 gives low to bot 113 and high to bot 207
-value 11 goes to bot 165
-bot 28 gives low to bot 62 and high to bot 42
-bot 95 gives low to bot 42 and high to bot 32
-bot 50 gives low to bot 160 and high to bot 194
-bot 68 gives low to bot 133 and high to bot 142
-bot 20 gives low to bot 208 and high to bot 203
-bot 178 gives low to bot 182 and high to bot 54
-bot 120 gives low to bot 102 and high to bot 99
-bot 131 gives low to bot 67 and high to bot 83
-bot 21 gives low to bot 111 and high to bot 69
-bot 27 gives low to bot 46 and high to bot 193
-bot 98 gives low to bot 63 and high to bot 22
-value 13 goes to bot 7
-bot 121 gives low to bot 155 and high to bot 146
-bot 41 gives low to bot 153 and high to bot 53
-bot 75 gives low to bot 100 and high to bot 205
-value 43 goes to bot 4
-bot 206 gives low to bot 151 and high to bot 77
-bot 0 gives low to bot 95 and high to bot 46
-bot 208 gives low to output 14 and high to bot 126
-bot 40 gives low to bot 187 and high to bot 184
-bot 184 gives low to bot 45 and high to bot 124
-bot 60 gives low to bot 188 and high to bot 202
-value 67 goes to bot 198
-bot 145 gives low to bot 22 and high to bot 108
-bot 197 gives low to bot 195 and high to bot 190
-bot 203 gives low to bot 126 and high to bot 51
-bot 87 gives low to bot 51 and high to bot 179
-bot 64 gives low to bot 128 and high to bot 85
-bot 1 gives low to bot 198 and high to bot 173
-bot 29 gives low to bot 71 and high to bot 168
-bot 47 gives low to bot 149 and high to bot 113
-bot 165 gives low to bot 80 and high to bot 135
-bot 112 gives low to bot 162 and high to bot 174
-bot 149 gives low to output 1 and high to bot 172
-value 41 goes to bot 80
-bot 5 gives low to bot 136 and high to bot 62
-bot 143 gives low to bot 97 and high to bot 41
-bot 86 gives low to bot 145 and high to bot 71
-value 59 goes to bot 147
-bot 57 gives low to bot 30 and high to bot 188
-bot 36 gives low to bot 150 and high to bot 30
-bot 135 gives low to bot 44 and high to bot 117
-bot 134 gives low to bot 16 and high to bot 35
-bot 167 gives low to bot 28 and high to bot 95
-bot 22 gives low to bot 127 and high to bot 119
-bot 26 gives low to bot 81 and high to bot 16
-bot 33 gives low to bot 6 and high to bot 78
-bot 171 gives low to bot 186 and high to bot 17
-bot 16 gives low to bot 96 and high to bot 33
-bot 118 gives low to bot 117 and high to bot 56
-bot 199 gives low to bot 98 and high to bot 145
-bot 188 gives low to bot 21 and high to bot 202
-value 29 goes to bot 164
-bot 169 gives low to bot 77 and high to bot 140
-bot 96 gives low to bot 181 and high to bot 6
-value 71 goes to bot 201
-bot 194 gives low to bot 87 and high to bot 150
-bot 160 gives low to bot 203 and high to bot 87
-bot 15 gives low to bot 158 and high to bot 105
-bot 42 gives low to bot 166 and high to bot 39
-bot 133 gives low to bot 54 and high to bot 110
-value 47 goes to bot 13
-bot 31 gives low to output 8 and high to bot 9
-bot 159 gives low to bot 74 and high to bot 155
-bot 157 gives low to bot 12 and high to bot 187
-bot 176 gives low to bot 139 and high to bot 58
-bot 35 gives low to bot 33 and high to bot 78
-bot 90 gives low to bot 148 and high to bot 136
-bot 122 gives low to bot 70 and high to bot 206
-bot 114 gives low to bot 72 and high to bot 157
-bot 55 gives low to bot 40 and high to bot 184
-bot 37 gives low to bot 193 and high to bot 25
-value 31 goes to bot 13
-bot 107 gives low to bot 99 and high to bot 93
-bot 14 gives low to bot 58 and high to bot 38
-bot 77 gives low to bot 86 and high to bot 29
-bot 116 gives low to bot 79 and high to bot 170
-bot 23 gives low to bot 132 and high to bot 70
-bot 148 gives low to bot 144 and high to bot 120
-bot 195 gives low to bot 170 and high to bot 185
-bot 185 gives low to bot 138 and high to bot 63
-bot 62 gives low to bot 107 and high to bot 166
-bot 174 gives low to bot 141 and high to bot 128
-bot 7 gives low to bot 91 and high to bot 11
-bot 3 gives low to bot 140 and high to bot 34
-bot 12 gives low to bot 3 and high to bot 125
-value 7 goes to bot 148
-bot 70 gives low to bot 161 and high to bot 151
-bot 89 gives low to bot 116 and high to bot 195
-bot 108 gives low to bot 119 and high to bot 204
-bot 201 gives low to bot 1 and high to bot 104
-bot 18 gives low to output 15 and high to bot 208
-bot 66 gives low to bot 177 and high to bot 130
-bot 189 gives low to bot 165 and high to bot 177
-bot 48 gives low to output 13 and high to bot 18
-bot 186 gives low to bot 189 and high to bot 66
-bot 82 gives low to bot 167 and high to bot 0
-bot 92 gives low to bot 201 and high to bot 49
-bot 144 gives low to bot 7 and high to bot 102
-bot 97 gives low to bot 146 and high to bot 153
-bot 104 gives low to bot 173 and high to bot 82
-bot 74 gives low to bot 83 and high to bot 50
-bot 49 gives low to bot 104 and high to bot 115
-bot 172 gives low to output 20 and high to bot 48
-bot 163 gives low to bot 41 and high to bot 53
-bot 117 gives low to bot 26 and high to bot 134
-bot 168 gives low to bot 61 and high to bot 182
-bot 65 gives low to bot 131 and high to bot 74
-bot 180 gives low to output 6 and high to bot 191
-bot 126 gives low to output 19 and high to bot 19
-value 19 goes to bot 186
-bot 166 gives low to bot 93 and high to bot 75
-bot 193 gives low to bot 59 and high to bot 88
-bot 81 gives low to bot 115 and high to bot 96
-bot 207 gives low to bot 94 and high to bot 131
-bot 130 gives low to bot 118 and high to bot 56
-bot 153 gives low to bot 106 and high to bot 152
-value 17 goes to bot 92
-bot 110 gives low to bot 143 and high to bot 163
-bot 192 gives low to output 7 and high to bot 129
-bot 156 gives low to bot 10 and high to bot 68
-bot 83 gives low to bot 20 and high to bot 160
-bot 2 gives low to bot 174 and high to bot 64
-value 23 goes to bot 91
-bot 10 gives low to bot 178 and high to bot 133
-bot 103 gives low to bot 157 and high to bot 40
-bot 61 gives low to bot 204 and high to bot 175
-bot 63 gives low to bot 47 and high to bot 127
-bot 105 gives low to bot 200 and high to bot 24
-bot 79 gives low to output 10 and high to bot 31
-bot 73 gives low to bot 168 and high to bot 178
-bot 19 gives low to output 2 and high to bot 139
-bot 125 gives low to bot 34 and high to bot 156
-bot 56 gives low to bot 134 and high to bot 35
-bot 44 gives low to bot 183 and high to bot 26
-bot 4 gives low to output 3 and high to bot 79
-bot 155 gives low to bot 50 and high to bot 8
-value 73 goes to bot 101
-bot 38 gives low to bot 123 and high to bot 112
-bot 151 gives low to bot 199 and high to bot 86
-bot 17 gives low to bot 66 and high to bot 130
-bot 13 gives low to bot 171 and high to bot 17
-bot 190 gives low to bot 185 and high to bot 98
-bot 161 gives low to bot 190 and high to bot 199
-bot 139 gives low to output 16 and high to bot 180
-bot 99 gives low to bot 23 and high to bot 122
-bot 53 gives low to bot 152 and high to bot 60
-bot 94 gives low to bot 48 and high to bot 67
-bot 132 gives low to bot 197 and high to bot 161
-bot 150 gives low to bot 179 and high to bot 209
-bot 173 gives low to bot 52 and high to bot 167
-bot 45 gives low to bot 156 and high to bot 124
-bot 30 gives low to bot 209 and high to bot 21
-bot 67 gives low to bot 18 and high to bot 20
-bot 84 gives low to bot 89 and high to bot 197
-bot 8 gives low to bot 194 and high to bot 36
-bot 59 gives low to bot 114 and high to bot 103
-bot 209 gives low to bot 14 and high to bot 111
-value 53 goes to bot 76
-bot 69 gives low to bot 137 and high to bot 154
-bot 46 gives low to bot 32 and high to bot 59
-bot 111 gives low to bot 38 and high to bot 137
-bot 196 gives low to bot 121 and high to bot 97
-bot 52 gives low to bot 5 and high to bot 28
-bot 11 gives low to bot 84 and high to bot 132
-bot 204 gives low to bot 65 and high to bot 159
-bot 164 gives low to bot 92 and high to bot 183
-bot 24 gives low to bot 109 and high to bot 43
-value 2 goes to bot 171
-bot 51 gives low to bot 19 and high to bot 176
-bot 136 gives low to bot 120 and high to bot 107
-bot 147 gives low to bot 4 and high to bot 116
-bot 25 gives low to bot 88 and high to bot 55
-bot 129 gives low to output 18 and high to bot 158
-bot 152 gives low to bot 57 and high to bot 60
-bot 39 gives low to bot 75 and high to bot 72
-bot 124 gives low to bot 68 and high to bot 142
-bot 141 gives low to bot 129 and high to bot 15
-bot 85 gives low to bot 105 and high to bot 24
-value 3 goes to bot 90
-bot 80 gives low to bot 164 and high to bot 44
-bot 54 gives low to bot 196 and high to bot 143
-bot 34 gives low to bot 73 and high to bot 10
-bot 175 gives low to bot 159 and high to bot 121
-bot 32 gives low to bot 39 and high to bot 114
-bot 140 gives low to bot 29 and high to bot 73
-bot 200 gives low to output 17 and high to bot 109
-bot 106 gives low to bot 36 and high to bot 57
-bot 177 gives low to bot 135 and high to bot 118
-bot 170 gives low to bot 31 and high to bot 138
-bot 158 gives low to output 4 and high to bot 200
-bot 6 gives low to bot 27 and high to bot 37
diff --git a/advent11.hs b/advent11.hs
deleted file mode 100644 (file)
index 33bfe3c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-import Data.List (subsequences, (\\), sort, sortBy)
-import Data.Ord (comparing)
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
--- part1 = print $ length $ init $ extractJust $ hillClimb [[buildingTest]] []
-part1 = print $ length $ init $ extractJust $ hillClimb [[building1]] []
--- part1 = print $ length $ init $ extractJust $ aStar [[building1]] []
-
-part2 :: IO ()
-part2 = print $ length $ init $ extractJust $ hillClimb [[building2]] []
-
-
-extractJust :: Maybe [a] -> [a]
-extractJust Nothing = []
-extractJust (Just x) = x
-
-hillClimb :: [[Building]] -> [Building] -> Maybe [Building]
-hillClimb [] _ = Nothing
-hillClimb (currentTrail:trails) closed = 
-    if isGoal (head currentTrail) then Just currentTrail
-    else hillClimb newAgenda ((head currentTrail): closed) 
-    where newAgenda = 
-            sortBy (\t1 t2 -> (head t1) `compare` (head t2)) $ 
-            trails ++ (candidates currentTrail closed)
-
-aStar :: [[Building]] -> [Building] -> Maybe [Building]
-aStar [] _ = Nothing
-aStar (currentTrail:trails) closed = 
-    if isGoal (head currentTrail) then Just currentTrail
-    else aStar newAgenda ((head currentTrail): closed) 
-    where newAgenda = 
-            sortBy (\t1 t2 -> (trailCost t1) `compare` (trailCost t2)) $ 
-            trails ++ (candidates currentTrail closed)
-          trailCost t = estimateCost (head t) + length t - 1
-
-
-candidates :: [Building] -> [Building] -> [[Building]]
-candidates currentTrail closed = newCandidates
-    where
-        (candidate:trail) = currentTrail
-        succs = legalSuccessors $ successors candidate
-        nonloops = (succs \\ trail) \\ closed
-        newCandidates = map (\n -> n:candidate:trail) nonloops
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/advent11a.hs b/advent11a.hs
deleted file mode 100644 (file)
index 6eb5156..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
--- Using the idea of canonical representation of buildings from
--- https://andars.github.io/aoc_day11.html by Andrew Foote,
--- plus my extension of represening the pairs as an integer.
-
--- This version is A* search, using a list for the agenda.
-
-import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
-import Data.Ord (comparing)
-import Data.Char (isDigit)
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-data CBuilding = CBuilding Int Integer deriving (Show, Eq)
-data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building0 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-canonical :: Building -> CBuilding
-canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
-    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
-          floorOf (Generator g) = head (findIndices 
-                                                (\fl -> (Generator g) `elem` fl) 
-                                                floors)
-          floorOf (Microchip g) = head (findIndices 
-                                                (\fl -> (Microchip g) `elem` fl) 
-                                                floors)
-          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
-
-
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
-part1 = print $ length $ trail $ aStar (initAgenda building1) []
-
-part2 :: IO ()
-part2 = print $ length $ trail $aStar (initAgenda building2) []
-
-initAgenda :: Building -> [Agendum]
-initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
-
-
-aStar :: [Agendum] -> [CBuilding] -> Agendum
-aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
-aStar (currentAgendum:agenda) closed = 
-    if isGoal reached then currentAgendum
-    else if creached `elem` closed 
-        then aStar agenda closed
-        else aStar newAgenda (creached:closed) 
-    where 
-        reached = current currentAgendum
-        creached = canonical reached
-        newAgenda = 
-            sortOn (cost) $ 
-            agenda ++ (candidates currentAgendum closed)
-
-
-candidates :: Agendum -> [CBuilding] -> [Agendum]
-candidates agendum closed = newCandidates
-    where
-        candidate = current agendum
-        previous = trail agendum
-        succs = legalSuccessors $ successors candidate
-        excludable = previous ++ closed
-        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
-        newCandidates = map (\n -> makeAgendum n) nonloops
-        makeAgendum new = Agendum {current = new, 
-                                    trail = (canonical candidate):previous, 
-                                    cost = estimateCost new + length previous + 1}
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/advent11h.hs b/advent11h.hs
deleted file mode 100644 (file)
index ae6e566..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
--- Using the idea of canonical representation of buildings from
--- https://andars.github.io/aoc_day11.html by Andrew Foote,
--- plus my extension of represening the pairs as an integer.
-
--- This version is hillclimbing search, using a list for the agenda.
-
-import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
-import Data.Ord (comparing)
-import Data.Char (isDigit)
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-data CBuilding = CBuilding Int Integer deriving (Show, Eq)
-data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building0 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-canonical :: Building -> CBuilding
-canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
-    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
-          floorOf (Generator g) = head (findIndices 
-                                                (\fl -> (Generator g) `elem` fl) 
-                                                floors)
-          floorOf (Microchip g) = head (findIndices 
-                                                (\fl -> (Microchip g) `elem` fl) 
-                                                floors)
-          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
-
-
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
-part1 = print $ length $ trail $ hillClimb (initAgenda building1) []
-
-part2 :: IO ()
-part2 = print $ length $ trail $ hillClimb (initAgenda building2) []
-
-initAgenda :: Building -> [Agendum]
-initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
-
-hillClimb :: [Agendum] -> [CBuilding] -> Agendum
-hillClimb [] _ = Agendum {current=buildingTest, trail=[], cost=0}
-hillClimb (currentAgendum:agenda) closed = 
-    if isGoal reached then currentAgendum
-    else if creached `elem` closed 
-        then hillClimb agenda closed
-        else hillClimb newAgenda (creached:closed) 
-    where 
-        reached = current currentAgendum
-        creached = canonical reached
-        newAgenda = 
-            sortOn (cost) $ 
-            agenda ++ (candidates currentAgendum closed)
-
-
-candidates :: Agendum -> [CBuilding] -> [Agendum]
-candidates agendum closed = newCandidates
-    where
-        candidate = current agendum
-        previous = trail agendum
-        succs = legalSuccessors $ successors candidate
-        excludable = previous ++ closed
-        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
-        newCandidates = map (\n -> makeAgendum n) nonloops
-        makeAgendum new = Agendum {current = new, 
-                                    trail = (canonical candidate):previous, 
-                                    cost = estimateCost new}
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/advent11p.hs b/advent11p.hs
deleted file mode 100644 (file)
index cdcf030..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
--- Using the idea of canonical representation of buildings from
--- https://andars.github.io/aoc_day11.html by Andrew Foote,
--- plus my extension of represening the pairs as an integer.
-
--- This version is A* search, using a priority queue for the agenda.
-
-import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
-import Data.Ord (comparing)
-import Data.Char (isDigit)
-import Data.Maybe (fromMaybe)
-import qualified Data.PQueue.Prio.Min as P
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-data CBuilding = CBuilding Int Integer deriving (Show, Eq)
-data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
-type Agenda = P.MinPQueue Int Agendum
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building0 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-canonical :: Building -> CBuilding
-canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
-    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
-          floorOf (Generator g) = head (findIndices 
-                                                (\fl -> (Generator g) `elem` fl) 
-                                                floors)
-          floorOf (Microchip g) = head (findIndices 
-                                                (\fl -> (Microchip g) `elem` fl) 
-                                                floors)
-          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
-
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-part1 :: IO ()
-part1 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building1) []
-
-part2 :: IO ()
-part2 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building2) []
-
-initAgenda :: Building -> Agenda
-initAgenda b = P.singleton (estimateCost b) Agendum {current = b, trail=[], cost = estimateCost b}
-
-
-aStar :: Agenda -> [CBuilding] -> Maybe Agendum
--- aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
-aStar agenda closed 
-    | P.null agenda = Nothing
-    | otherwise = 
-        if isGoal reached then Just currentAgendum
-        else if creached `elem` closed 
-            then aStar (P.deleteMin agenda) closed
-            else aStar newAgenda (creached:closed) 
-        where 
-            (_, currentAgendum) = P.findMin agenda
-            reached = current currentAgendum
-            creached = canonical reached
-            newAgenda = P.union (P.deleteMin agenda) 
-                                (P.fromList $ candidates currentAgendum closed)
-
-
-candidates :: Agendum -> [CBuilding] -> [(Int, Agendum)]
-candidates agendum closed = newCandidates
-    where
-        candidate = current agendum
-        previous = trail agendum
-        succs = legalSuccessors $ successors candidate
-        nonloops = filter (\s -> not $ (canonical s) `elem` closed) succs
-        newCandidates = map (\a -> (cost a, a)) $ map (\n -> makeAgendum n) nonloops
-        makeAgendum new = Agendum {current = new, 
-                                    trail = (canonical candidate):previous, 
-                                    cost = estimateCost new + length previous + 1}
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/advent12.hs b/advent12.hs
deleted file mode 100644 (file)
index 21ed32d..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-import Text.Parsec hiding (State)
-import Text.ParserCombinators.Parsec.Number
-import Control.Applicative ((<$), (<*), (*>), (<*>), liftA)
-import Data.List (partition, union, intersect, tails)
-import Data.Char (isDigit)
-import Control.Monad.State.Lazy
-
-data Location = Literal Int | Register Char deriving (Show)
-data Instruction = Cpy Location Location | 
-                   Inc Location |
-                   Dec Location | 
-                   Jnz Location Int
-                   deriving (Show)
-
-data Machine = Machine { a :: Int
-                       , b :: Int
-                       , c :: Int
-                       , d :: Int
-                       , pc :: Int
-                       , instructions :: [Instruction]} 
-               deriving (Show)
-
-emptyMachine :: Machine
-emptyMachine = Machine {a=0, b=0, c=0, d=0, pc=0, instructions=[]}
-
-main :: IO ()
-main = do 
-    text <- readFile "advent12.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions
-    part2 instructions
-
-
-part1 :: [Instruction] -> IO ()
-part1 instrs = 
-    do  let m0 = emptyMachine {instructions=instrs}
-        let mf = snd $ runState runMachine m0
-        print (a mf)
-
-part2 :: [Instruction] -> IO ()
-part2 instrs = 
-    do  let m0 = emptyMachine {instructions=instrs, c=1}
-        let mf = snd $ runState runMachine m0
-        print (a mf)
-
-
-
-runMachine :: State Machine ()
-runMachine = 
-    do  m <- get
-        if (pc m) >= (length $ instructions m)
-            then return ()
-            else do executeStep
-                    runMachine
-
-executeStep :: State Machine ()
-executeStep = 
-    do  m <- get
-        let i = (instructions m)!!(pc m)
-        put (executeInstruction i m)
-
-executeInstruction :: Instruction -> Machine -> Machine
-executeInstruction (Inc (Register r)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m (Register r)
-          m' = writeValue m (Register r) (v+1)
-executeInstruction (Dec (Register r)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m (Register r)
-          m' = writeValue m (Register r) (v-1)
-executeInstruction (Cpy s d) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m s
-          m' = writeValue m d v
-executeInstruction (Jnz s d) m 
-    | v == 0 = m {pc=pc1}
-    | otherwise = m {pc=pcj}
-    where pc1 = (pc m) + 1
-          pcj = (pc m) + d
-          v = evaluate m s
-          
-
-evaluate :: Machine -> Location -> Int
-evaluate _ (Literal i) = i
-evaluate m (Register r) = 
-    case r of
-        'a' -> (a m)
-        'b' -> (b m)
-        'c' -> (c m)
-        'd' -> (d m)
-
-writeValue :: Machine -> Location -> Int -> Machine
-writeValue m (Literal i) _ = m
-writeValue m (Register r) v =
-    case r of 
-        'a' -> m {a=v}
-        'b' -> m {b=v}
-        'c' -> m {c=v}
-        'd' -> m {d=v}
-
-
-instructionFile = instructionLine `endBy` newline 
--- instructionLine = choice [cpyL, incL, decL, jnzL]
-instructionLine = incL <|> decL <|> cpyL <|> jnzL
-
-incL = incify <$> (string "inc" *> spaces *> (oneOf "abcd"))
-        where incify r = Inc (Register r)
-decL = decify <$> (string "dec" *> spaces *> (oneOf "abcd"))
-        where decify r = Dec (Register r)
-cpyL = cpyify <$> (string "cpy" *> spaces *> ((many1 letter) <|> (many1 digit))) 
-                  <*> (spaces *> (oneOf "abcd"))
-        where cpyify s r = Cpy (readLocation s) (Register r)
-jnzL = jnzify <$> (string "jnz" *> spaces *> ((many1 letter) <|> (many1 digit))) 
-                  <*> (spaces *> int)
-        where jnzify r d = Jnz (readLocation r) d
-
-
-readLocation :: String -> Location
-readLocation l
-    | all (isDigit) l = Literal (read l)
-    | otherwise = Register (head l)
-
-
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
\ No newline at end of file
diff --git a/advent12.txt b/advent12.txt
deleted file mode 100644 (file)
index 538e9ea..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-cpy 1 a
-cpy 1 b
-cpy 26 d
-jnz c 2
-jnz 1 5
-cpy 7 c
-inc d
-dec c
-jnz c -2
-cpy a c
-inc a
-dec b
-jnz b -2
-cpy c b
-dec d
-jnz d -6
-cpy 18 c
-cpy 11 d
-inc a
-dec d
-jnz d -2
-dec c
-jnz c -5
diff --git a/advent13.hs b/advent13.hs
deleted file mode 100644 (file)
index 719bc6a..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-import Data.List ((\\), nub, sortOn)
-import Data.Bits (popCount)
-import Data.Maybe (fromMaybe)
-
-type Pos = (Int, Int)
-
-seed = 1362
-
-goal1 = (31, 39)
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
-part1 = print $ length $ tail $ fromMaybe [] $ aStar [[(1, 1)]] []
-
-part2 :: IO ()
-part2 = do print $ length $ tail $ edl 50 [[(1, 1)]] []
-           putStrLn $ showRoomR 30 25 $ edl 50 [[(1, 1)]] []
-
-
--- extractJust :: Maybe [a] -> [a]
--- extractJust Nothing = []
--- extractJust (Just x) = x
-isWall :: Int -> Int -> Bool
-isWall x y = odd $ popCount n
-    where 
-        n = x*x + 3*x + 2*x*y + y + y*y + seed
-
-
-showRoom w h = showRoomR w h []
-
-showRoomR w h reached = unlines rows
-    where 
-        rows = [row x | x <- [0..h]]
-        row x = [showCell x y | y <- [0..w]]
-        showCell x y = if (isWall x y) 
-            then '#' 
-            else if (x, y) `elem` reached 
-                then 'O'
-                else '.'
-
-
-aStar :: [[Pos]] -> [Pos] -> Maybe [Pos]
-aStar [] _ = Nothing
-aStar (currentTrail:trails) closed = 
-    if isGoal (head currentTrail) then Just currentTrail
-    else if (head currentTrail) `elem` closed then aStar trails closed
-         else aStar newAgenda ((head currentTrail): closed) 
-    where newAgenda = 
-            sortOn (\a -> trailCost a) $ 
-            trails ++ (candidates currentTrail closed)
-          trailCost t = estimateCost (head t) + length t - 1
-
-
--- exhaustive depth-limited
-edl :: Int -> [[Pos]] -> [Pos] -> [Pos]
-edl _ [] closed = nub closed
-edl limit (currentTrail:trails) closed = 
-    if (length currentTrail) > (limit+1) then edl limit trails ((head currentTrail):closed)
-    else if (head currentTrail) `elem` closed then edl limit trails closed
-         else edl limit newAgenda ((head currentTrail):closed) 
-    where newAgenda = trails ++ (candidates currentTrail closed)
-
-candidates :: [Pos] -> [Pos] -> [[Pos]]
-candidates currentTrail closed = newCandidates
-    where
-        (candidate:trail) = currentTrail
-        succs = legalSuccessors $ successors candidate
-        nonloops = (succs \\ trail) \\ closed
-        newCandidates = map (\n -> n:candidate:trail) nonloops
-
-isGoal :: Pos -> Bool
-isGoal p = p == goal1
-
-isLegal :: Pos -> Bool
-isLegal (x, y) = 
-    x >= 0 && y >= 0 && (not $ isWall x y)
-
-successors :: Pos -> [Pos]
-successors (x, y) = [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]
-
-legalSuccessors :: [Pos] -> [Pos]
-legalSuccessors = filter (isLegal)
-
-estimateCost :: Pos -> Int
-estimateCost (x, y) = abs (x - gx) + abs (y - gy)
-    where (gx, gy) = goal1
-
diff --git a/advent14.hs b/advent14.hs
deleted file mode 100644 (file)
index 22491dd..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-import Data.List (nub, tails, null)
-import Data.Hash.MD5 (md5s, Str(..))
-
-salt = "yjdafjpo"
--- salt = "abc"
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequence
-
-part2 :: IO ()
-part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequenceS
-
-md5sequence :: [String]
-md5sequence = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = md5s (Str (salt ++ show i))
-
-md5sequenceS :: [String]
-md5sequenceS = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = stretch $ md5s (Str (salt ++ show i)) 
-          stretch h0 = foldr (\_ h -> md5s (Str h)) h0 [1..2016]
-
-possibleKey :: [String] -> Int-> Bool
-possibleKey s = not . null . repeats 3 . ((!!) s)
-
-confirmKey :: [String] -> Int -> Bool
-confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
-    where c = head $ repeats 3 $ s!!i
-          confirmation m = c `elem` (repeats 5 m)
-
-repeats :: Int -> String -> [String]
-repeats n = filter (null . tail) . map (nub) . substrings n
-
-substrings :: Int -> [a] -> [[a]]
-substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/advent14c.hs b/advent14c.hs
deleted file mode 100644 (file)
index af8a4af..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-import Data.List (nub, tails)
-import Data.ByteString.Char8 (pack)
-import Crypto.Hash (hash, Digest, MD5)
-
-salt = "yjdafjpo"
--- salt = "abc"
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequence
-
-part2 :: IO ()
-part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequenceS
-
-getHash :: String -> String
-getHash bs = show (hash $ pack bs :: Digest MD5)
-
-md5sequence :: [String]
-md5sequence = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = getHash (salt ++ show i)
-
-md5sequenceS :: [String]
-md5sequenceS = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = stretch $ getHash (salt ++ show i)
-          stretch h0 = foldr (\_ h -> getHash h) h0 [1..2016]
-
-possibleKey :: [String] -> Int-> Bool
-possibleKey s = not . null . repeats 3 . ((!!) s)
-
-confirmKey :: [String] -> Int -> Bool
-confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
-    where c = head $ repeats 3 $ s!!i
-          confirmation m = c `elem` (repeats 5 m)
-                              
-repeats :: Int -> String -> [String]
-repeats n = filter (null . tail) . map (nub) . substrings n
-
-substrings :: Int -> [a] -> [[a]]
-substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/advent14parallel.hs b/advent14parallel.hs
deleted file mode 100644 (file)
index 482b5e0..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-import Data.List (nub, tails)
-import Data.ByteString.Char8 (pack)
-import Crypto.Hash (hash, Digest, MD5)
-import Control.Parallel.Strategies (withStrategy, parBuffer, rdeepseq)
-
-salt = "yjdafjpo"
--- salt = "abc"
-
-stretch_factor = [1..2016]
--- stretch_factor = [1..100]
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequence
-
-part2 :: IO ()
-part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequenceS
-
-getHash :: String -> String
-getHash bs = show (hash $ pack bs :: Digest MD5)
-
-md5sequence :: [String]
--- md5sequence = [makeMd5 i | i <- [0..]]
-md5sequence = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
-    where makeMd5 i = getHash (salt ++ show i)
-
-md5sequenceS :: [String]
--- md5sequenceS = [makeMd5 i | i <- [0..]]
-md5sequenceS = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
-    where makeMd5 i = stretch $ getHash (salt ++ show i)
-          stretch h0 = foldr (\_ h -> getHash h) h0 stretch_factor
-
-possibleKey :: [String] -> Int-> Bool
-possibleKey s = not . null . repeats 3 . ((!!) s)
-
-confirmKey :: [String] -> Int -> Bool
-confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
-    where c = head $ repeats 3 $ s!!i
-          confirmation m = c `elem` (repeats 5 m)
-                              
-repeats :: Int -> String -> [String]
-repeats n = filter (null . tail) . map (nub) . substrings n
-
-substrings :: Int -> [a] -> [[a]]
-substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/advent15.hs b/advent15.hs
deleted file mode 100644 (file)
index 27793c1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-
-type Disk = (Int -> Bool)
-
-main :: IO ()
-main = do 
-    text <- readFile "advent15.txt" 
-    let disks = successfulParse $ parseIfile text
-    part1 disks
-    part2 disks
-
-part1 :: [Disk] -> IO ()
-part1 disks = print $ head $ filter (canFall disks) [0..]
-
-part2 :: [Disk] -> IO ()
-part2 disks = print $ head $ filter (canFall disks2) [0..]
-    where disks2 = disks ++ [diskify 7 11 0]
-
-canFall :: [Disk] -> Int -> Bool
-canFall ds i = all (\d -> (d i)) ds
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = diskify <$> (string "Disc #" *> int) 
-                          <*> (string " has " *> int)
-                          <*> (string " positions; at time=0, it is at position " *> int)
-                          <*  (string ".")
-
-diskify :: Int -> Int -> Int -> (Int -> Bool)
-diskify n size pos0 = (\i -> (size + n + pos0 + i) `mod` size == 0)
-
-parseIfile :: String -> Either ParseError [Disk]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Disk
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/advent15.test.txt b/advent15.test.txt
deleted file mode 100644 (file)
index 3683605..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Disc #1 has 5 positions; at time=0, it is at position 4.
-Disc #2 has 2 positions; at time=0, it is at position 1.
-
diff --git a/advent15.txt b/advent15.txt
deleted file mode 100644 (file)
index d2463d1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Disc #1 has 5 positions; at time=0, it is at position 2.
-Disc #2 has 13 positions; at time=0, it is at position 7.
-Disc #3 has 17 positions; at time=0, it is at position 10.
-Disc #4 has 3 positions; at time=0, it is at position 2.
-Disc #5 has 19 positions; at time=0, it is at position 9.
-Disc #6 has 7 positions; at time=0, it is at position 0.
diff --git a/advent15l.hs b/advent15l.hs
deleted file mode 100644 (file)
index f04ab9c..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-
-main :: IO ()
-main = do 
-    text <- readFile "advent15.txt" 
-    let disks = successfulParse $ parseIfile text
-    part1 disks
-    part2 disks
-
-part1 :: [[Int]] -> IO ()
-part1 disks = print $ head $ filter (canFall disks) [0..]
-
-part2 :: [[Int]] -> IO ()
-part2 disks = print $ head $ filter (canFall disks2) [0..]
-    where disks2 = disks ++ [drop 7 $ drop 0 $ cycle [0..(11-1)]]
-
-canFall :: [[Int]] -> Int -> Bool
-canFall ds i = all (\d -> (d!!i) == 0) ds
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = diskify <$> (string "Disc #" *> int) 
-                          <*> (string " has " *> int)
-                          <*> (string " positions; at time=0, it is at position " *> int)
-                          <*  (string ".")
-                    where diskify n size pos0 = drop n $ drop pos0 $ cycle [0..(size-1)]
-
-parseIfile :: String -> Either ParseError [[Int]]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError [Int]
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/advent16.hs b/advent16.hs
deleted file mode 100644 (file)
index 0c7bfbb..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-import Data.List (nub)
-
-input = "11100010111110100"
-disk1length = 272
-disk2length = 35651584
-
--- input = "10000"
--- disk1length = 20
-
-main :: IO ()
-main = do 
-    part1 
-    part2
-
-
-part1 :: IO ()
-part1 = print $ checksum $ take disk1length $ expand disk1length input
-
-part2 :: IO ()
-part2 = print $ checksum $ take disk2length $ expand disk2length input
-
-
-expand :: Int -> String -> String
-expand len a
-    | length a >= len = a
-    | otherwise = expand len $ a ++ "0" ++ b
-        where b = map (invert) $ reverse a
-              invert '0' = '1'
-              invert '1' = '0'
-
-checksum :: String -> String
-checksum digits
-    | odd $ length digits = digits
-    | otherwise = checksum $ map (checksumPair) $ pairs digits
-        where checksumPair p = if (length $ nub p) == 1 then '1' else '0'
-
-
-pairs :: [a] -> [[a]]
-pairs [] = []
-pairs xs = [p] ++ (pairs ys)
-    where (p, ys) = splitAt 2 xs 
diff --git a/advent16i.hs b/advent16i.hs
deleted file mode 100644 (file)
index 4cf13f6..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-input = "11100010111110100"
-disk1length = 272
-disk2length = 35651584
-
--- input = "10000"
--- disk1length = 20
-
-main :: IO ()
-main = do 
-    part1 
-    part2
-
-part1 :: IO ()
-part1 = print $ fill disk1length input
-
-part2 :: IO ()
-part2 = print $ fill disk2length input
-
-fill :: Int -> String -> String
-fill len filler = deBool $ checksum $ take len $ expand len $ enBool filler
-
-enBool :: String -> [Bool]
-enBool = map (== '1')
-
-deBool :: [Bool] -> String
-deBool = map (\b -> if b then '1' else '0')
-
-
-expand :: Int -> [Bool] -> [Bool]
-expand len = head . dropWhile ((<= len) . length) . iterate expandStep
-
-expandStep :: [Bool] -> [Bool]
-expandStep a = a ++ [False] ++ b
-        where b = map (not) $ reverse a
-
-checksum :: [Bool] -> [Bool]
-checksum = head . dropWhile (even . length) . iterate checksumStep 
-
-checksumStep :: [Bool] -> [Bool]
-checksumStep [] = []
-checksumStep [x] = [x]
-checksumStep (x:y:xs) = (x==y):(checksumStep xs)
-
diff --git a/advent17.hs b/advent17.hs
deleted file mode 100644 (file)
index d8be772..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-import Data.ByteString.Char8 (pack)
-import qualified Crypto.Hash as C
-
-type Position = (Int, Int)
-data Agendum = Agendum {position :: Position, path :: String, hash :: String} deriving (Show, Eq)
-type Agenda = [Agendum]
-
--- input = "hijkl"
--- input = "ihgpwlah"
-
-input = "qljzarfv" -- my input
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-part1 :: IO ()
-part1 = print $ path $ extractJust $ bfs initialAgenda
-
-part2 :: IO ()
-part2 = print $ bfs2 initialAgenda 0
-
-initialAgenda :: Agenda
-initialAgenda = [Agendum {position=(1, 1), path="", hash=(getHash "")}]
-
-getHash :: String -> String
-getHash path = show (C.hash $ pack (input ++ path) :: C.Digest C.MD5)
-
-extractJust :: Maybe Agendum -> Agendum
-extractJust Nothing = head initialAgenda
-extractJust (Just x) = x
-
-bfs :: Agenda -> Maybe Agendum
-bfs [] = Nothing
-bfs (current:agenda) = 
-    if isGoal current then Just current
-    else bfs (agenda ++ (successors current))
-
-bfs2 :: Agenda -> Int -> Int
-bfs2 [] l = l
-bfs2 (current:agenda) l = 
-    if isGoal current then bfs2 agenda (length $ path $ current)
-    else bfs2 (agenda ++ (successors current)) l
-
-isGoal :: Agendum -> Bool
-isGoal agendum = (position agendum) == (4, 4)
-
-isLegalPos :: Position -> Bool
-isLegalPos p = fst p >= 1 && fst p <= 4 && snd p >= 1 && snd p <= 4
-
-successors :: Agendum -> Agenda
-successors state = [Agendum {position = step p0 ld, 
-                             path = path0 ++ [ld],
-                             hash = getHash (path0 ++ [ld])} | ld <- legalDoors ]
-    where 
-        p0 = position state
-        path0 = path state
-        h0 = hash state
-        doors = openDoors h0
-        legalDoors = filter (isLegalPos . (step p0)) doors
-
-openDoors :: String -> String
-openDoors h = up ++ down ++ left ++ right
-    where
-        up    = if h!!0 `elem` "bcdef" then "U" else ""
-        down  = if h!!1 `elem` "bcdef" then "D" else ""
-        left  = if h!!2 `elem` "bcdef" then "L" else ""
-        right = if h!!3 `elem` "bcdef" then "R" else ""
-
-step :: Position -> Char -> Position
-step (r, c) 'U' = (r-1, c)
-step (r, c) 'D' = (r+1, c)
-step (r, c) 'L' = (r, c-1)
-step (r, c) 'R' = (r, c+1)
diff --git a/advent18.hs b/advent18.hs
deleted file mode 100644 (file)
index e7c304f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-import Data.List (tails)
-
--- input = "..^^."
--- input = ".^^.^.^^^^"
-input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
--- part1 = putStrLn $ unlines $ map (showRow) $ take 10 $ iterate nextRow $ readRow input
-part1 = print $ length $ filter (not) $ concat $ take 40 $ iterate nextRow $ readRow input
-
-part2 :: IO ()
-part2 = print $ length $ filter (not) $ concat $ take 400000 $ iterate nextRow $ readRow input
-
-readRow :: String -> [Bool]
-readRow = map (=='^')
-
-showRow :: [Bool] -> String
-showRow = map (\c -> if c then '^' else '.')
-
-extended :: [Bool] -> [Bool]
-extended row = [False] ++ row ++ [False]
-
-nextRow :: [Bool] -> [Bool]
-nextRow = map (isTrap) . segments . extended
-
-segments :: [a] -> [[a]]
-segments = filter ((==3) . length) . map (take 3) . tails
-
-isTrap :: [Bool] -> Bool
-isTrap segment
-    | segment == [True, True, False] = True
-    | segment == [False, True, True] = True
-    | segment == [True, False, False] = True
-    | segment == [False, False, True] = True
-    | otherwise = False
diff --git a/advent18f.hs b/advent18f.hs
deleted file mode 100644 (file)
index a1cd59b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-import Data.List (tails, foldl')
-
--- input = "..^^."
--- input = ".^^.^.^^^^"
-input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..40]
-    where row = readRow input
-
-part2 :: IO ()
-part2 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..400000]
-    where row = readRow input
-
-readRow :: String -> [Bool]
-readRow = map (=='^')
-
-showRow :: [Bool] -> String
-showRow = map (\c -> if c then '^' else '.')
-
-extended :: [Bool] -> [Bool]
-extended row = [False] ++ row ++ [False]
-
-nextRow :: [Bool] -> [Bool]
-nextRow = map (isTrap) . segments . extended
-
-nextRowFold :: (Int, [Bool]) -> Int -> (Int, [Bool])
-nextRowFold (n, row) _ = (n + countSafe newRow, newRow)
-    where newRow = nextRow row
-
-countSafe :: [Bool] -> Int
-countSafe = length . filter (not)
-
-segments :: [a] -> [[a]]
-segments = filter ((==3) . length) . map (take 3) . tails
-
-isTrap :: [Bool] -> Bool
-isTrap segment
-    | segment == [True, True, False] = True
-    | segment == [False, True, True] = True
-    | segment == [True, False, False] = True
-    | segment == [False, False, True] = True
-    | otherwise = False
diff --git a/advent19.hs b/advent19.hs
deleted file mode 100644 (file)
index a544da6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-import Prelude hiding (length, take, drop)
-import Data.Sequence
-
--- input = 5 
-input = 3012210 
-
-main :: IO ()
-main = do 
-    part1 
-    part2
-
-part1 :: IO ()
-part1 = print $ 2 * (input - 2 ^ (toInteger (floor $ logBase 2 (fromIntegral input)))) + 1
-
-part2 :: IO ()
-part2 = print $ flip index 0 $ presentSteps initial
-
-presentSteps :: Seq Int -> Seq Int
-presentSteps elves 
-    | isFinished elves = elves
-    | otherwise = presentSteps $ next elves
-
-initial :: Seq Int
-initial = fromList [1..input] 
-
-isFinished :: Seq Int -> Bool
-isFinished elves = length elves == 1
-
-next :: Seq Int -> Seq Int
-next elves = prefix >< (midfix |> suffix)
-    where 
-        target = length elves `quot` 2
-        prefix = drop 1 $ take target elves
-        midfix = drop (target+1) elves
-        suffix = index elves 0
diff --git a/advent20.hs b/advent20.hs
deleted file mode 100644 (file)
index 3f43710..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-import Control.Applicative ((<$), (<*), (*>), (<*>), liftA)
-import Data.List (foldl')
-
-data Interval = Interval Int Int deriving (Show, Eq)
-
-low :: Interval -> Int
-low (Interval l _) = l
-
-high :: Interval -> Int
-high (Interval _ h) = h
-
-main :: IO ()
-main = do 
-    text <- readFile "advent20.txt" 
-    let intervals = successfulParse $ parseIfile text
-    part1 intervals
-    part2 intervals
-
-part1 :: [Interval] -> IO ()
-part1 intervals = print $ (+1) $ high $ head $ foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
-
-part2 :: [Interval] -> IO ()
-part2 intervals = do
-    let ints = foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
-    let gapCount = gaps ints
-    let lowGap = low $ head ints
-    let highGap = 4294967295 - (high $ last ints)
-    print (lowGap + gapCount + highGap)
-
-disjoint :: Interval -> Interval -> Bool
-disjoint (Interval a b) (Interval c d)
-    | b < c = True
-    | d < a = True
-    | a > d = True
-    | c > b = True
-    | otherwise = False
-
-intersect :: Interval -> Interval -> Bool
-intersect a b = not $ disjoint a b
-
-merge :: [Interval] -> Interval -> [Interval]
-merge [] i0 = [i0]
-merge (i1:intervals) i0
-    | (high i0) < (low i1) = i0:i1:intervals
-    | intersect i0 i1 = merge intervals (Interval a' b')
-    | otherwise = i1:(merge intervals i0)
-        where a' = minimum [low i0, low i1]
-              b' = maximum [high i0, high i1]
-
-mergeAdjacent :: [Interval] -> Interval -> [Interval]
-mergeAdjacent [] i0 = [i0]
-mergeAdjacent (i1:intervals) i0
-    | high i0 + 1 == low i1 = (Interval (low i0) (high i1)):intervals
-    | low i0 == high i1 + 1 = (Interval (low i1) (high i0)):intervals
-    | otherwise = i1:(mergeAdjacent intervals i0)
-
-gaps :: [Interval] -> Int
-gaps [] = 0
-gaps [_] = 0
-gaps ((Interval _ b):(Interval c d):intervals) = 
-    (c - b - 1) + gaps ((Interval c d):intervals)
-
-intervalFile = intervalLine `endBy` newline 
-intervalLine = Interval <$> int <*> (string "-" *> int)
-
-parseIfile :: String -> Either ParseError [Interval]
-parseIfile input = parse intervalFile "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/advent20.txt b/advent20.txt
deleted file mode 100644 (file)
index 222a0d9..0000000
+++ /dev/null
@@ -1,1029 +0,0 @@
-1397985562-1399927095
-3833336583-3842601761
-155087348-169525214
-980790001-1002844256
-1977065361-1995466542
-36411396-50881439
-3640866817-3644930814
-2920060305-2932561292
-2865550534-2890593328
-3904139550-3908601694
-732092457-735186747
-1787486182-1806545011
-1491600386-1521258835
-2566773511-2568507598
-2201927929-2217336001
-948934267-952537088
-2146567862-2152339711
-3301828099-3306223909
-476027067-495966189
-2724939184-2726302873
-2270442513-2292973307
-1889038911-1895488302
-1578483230-1586330750
-2640456298-2651236024
-4254290660-4256486512
-1399927096-1421446962
-3253590561-3255525299
-4165315034-4173427102
-2875463797-2888803426
-3656533491-3659451752
-1995466544-2025204494
-3947779886-3987268039
-1521258837-1538635254
-735486056-744123494
-230221149-237996554
-3652971511-3653104884
-3019667516-3024190047
-969642901-977292032
-3645248112-3645595401
-3107902888-3148345903
-3202431537-3216963208
-1220746925-1223070151
-3267241325-3270573499
-903635659-931632639
-2847235008-2856948110
-4224654922-4236958325
-856464812-859836714
-1804748836-1825290046
-4082899236-4091369419
-953634177-954158487
-185823994-190243500
-1964052811-1976412955
-2420916052-2424566745
-953985134-954947310
-2584348542-2614406629
-2191157950-2198152569
-792721019-802271235
-3791161572-3800845341
-1864843815-1865425121
-1974124152-1989195256
-7825290-22939478
-440787397-441318113
-43830518-44800277
-3060173435-3065634268
-3165692093-3169381847
-1833191664-1858547431
-1931833201-1935239219
-57759373-67515020
-4113876528-4114024438
-1942285042-1951328312
-1604942683-1619936021
-853121890-865841853
-1837742103-1838104083
-3653104885-3680835942
-461163769-461467242
-3154277391-3159331043
-1689521647-1696389379
-4132416435-4154260806
-3575213588-3600527150
-962221692-989154668
-1935239220-1964052809
-853763614-856527667
-1529882226-1553729207
-2908870325-2931754108
-2317225465-2326207645
-550660010-557063544
-2362374340-2370047564
-3154439917-3169895876
-2971931902-2973888167
-3915276202-3919826635
-3443104535-3459421692
-2452320784-2463651682
-2645465344-2652262587
-623576471-624671363
-251678316-253256260
-3892899041-3898838343
-464002012-476960875
-3778510328-3794259788
-1032494594-1042075604
-1726869059-1729493515
-3050865580-3058403387
-4096451268-4105743850
-1794978532-1818366498
-1687963887-1693429657
-1919840326-1931792580
-3890085195-3896657673
-687727514-697989805
-2130251157-2132529361
-3709755147-3710261877
-2103854130-2136933959
-1240822471-1247567713
-2490928812-2517604025
-2792885084-2793563605
-4033319760-4037319553
-643767762-679821627
-2244191155-2263679816
-783204448-826857019
-874202754-876456673
-944792902-949779600
-1014490072-1020320091
-3709667893-3710060580
-3034067373-3060173434
-2380617387-2398492444
-3913418161-3925664598
-1327421559-1355573458
-2029296660-2060654925
-1015438314-1024776747
-758467105-766508249
-3196737715-3203535886
-4113219652-4113918216
-1900161068-1903498607
-737196603-742913680
-2762651281-2782581391
-1241724970-1273412553
-2234377553-2234408980
-3485475801-3485850742
-2823889184-2825719103
-546429220-552909166
-3889312069-3891497364
-1402469948-1411853934
-1612881279-1613899725
-609769932-611526589
-2821381184-2837715581
-2793443367-2793757783
-3865830130-3882113243
-2302840856-2330280758
-1587820493-1589487382
-1925168590-1930014298
-139238032-141721873
-3159767763-3165446614
-3124692923-3128639222
-2270740594-2281991663
-1338789977-1355677780
-1748641567-1751344173
-1416549076-1421417040
-4096185893-4097103352
-2627343873-2650750532
-3948622110-3962424399
-3734105837-3770337993
-557813236-573792261
-551603476-555886358
-1030836305-1032494592
-1839182718-1840151300
-833662859-842106273
-1375985004-1393778055
-1219332117-1221436570
-191846359-198587644
-984829875-987740125
-3262588159-3269982376
-4113255424-4114203177
-3754035901-3768277382
-182356017-189508231
-4235072872-4237128944
-2423845665-2424035634
-2247134633-2249391253
-1857070653-1864762228
-2960971255-2986516950
-3609807449-3629876533
-4232009521-4238664410
-2517604027-2532315540
-2284458125-2290950480
-1864762230-1865525184
-1534410012-1552842249
-1413197933-1418525745
-943004746-952141611
-3692615771-3699711756
-1641152229-1667111341
-3747007580-3765218619
-2379349853-2380702573
-2147254282-2171495074
-1839659452-1840812997
-3895746954-3895831312
-1969771475-1979046124
-3083853152-3107315352
-3503489045-3537546786
-2926162506-2931745365
-1533535067-1553811000
-4201206086-4201731554
-3151335418-3163702483
-3589540929-3593463200
-1469107231-1474901685
-1696389381-1748641566
-3910219915-3918863153
-3431523383-3432952214
-4219640842-4234037045
-2150930801-2173615229
-3364393582-3403187084
-3294593092-3301828098
-690072645-725395887
-1123029535-1135646014
-122125578-124303606
-4157086822-4157139009
-3561413702-3569934827
-3814389694-3815485217
-1931792582-1935186677
-3601713750-3623094300
-2322435284-2327697391
-1362099577-1366674586
-628898939-635522883
-3117359644-3135324932
-1119748429-1139457622
-3998554882-4014887284
-2837930003-2838092963
-2123885505-2126641084
-559576606-579617582
-2712491763-2723761235
-1391544337-1397769783
-3416595318-3422405875
-3403187085-3409221687
-1096346351-1099114997
-2703273295-2705328183
-4113785067-4113908859
-206706372-209083880
-3270160481-3271551430
-3285776930-3292794583
-461234099-461937747
-750957483-775003729
-4184090903-4204400455
-362276042-362676210
-4249953310-4250510076
-3477313433-3479866795
-3421127715-3428203812
-900263617-943004744
-835969757-836263940
-1368935057-1381717988
-149206242-166300349
-2154227228-2154605899
-1906507809-1919840325
-305745049-306370999
-1726861064-1728699678
-1357107426-1362288056
-799761595-801167452
-229374054-231369444
-1529834231-1535566821
-754999390-757160209
-1889190091-1897618002
-2138256423-2146567860
-2295710373-2336599718
-1019914990-1023404843
-969695821-980184547
-1443906340-1473362681
-833198360-836801840
-1598512205-1604942681
-3199387842-3210382637
-3895688557-3895758051
-1377900216-1382117658
-3504189983-3527083803
-3577792742-3598561740
-613575187-632091293
-2551456957-2551799726
-4058092124-4103653807
-3381308208-3381342063
-13984873-15227949
-1727002523-1727443872
-2357289728-2361812594
-3876054666-3879516291
-3278228783-3281894754
-1640252019-1649137061
-2372620720-2374166948
-4109383543-4110464683
-2069304258-2091857479
-4107063052-4115320079
-700724903-704038468
-2443015838-2445045788
-2487239190-2506741363
-2840932452-2854276703
-3023346911-3024737732
-855982891-864879970
-3794259789-3803801069
-500728802-502979928
-2043915271-2045977041
-2883286342-2889401600
-3645471325-3645615199
-2570503460-2572567939
-602978860-611682641
-3014237470-3019165777
-82763197-99917251
-3459591973-3480841023
-3726344670-3753436804
-778825357-781459133
-3501129290-3535003794
-2110603192-2124722020
-783458439-789801399
-3244733157-3257526606
-3107315354-3107902887
-3485245437-3487101327
-2981323037-2986657197
-4250870060-4262722661
-402547398-411983817
-1723037247-1732297154
-2168632715-2175630061
-35807058-48835050
-3967606126-3981776003
-1175337592-1177759663
-531093126-538642617
-3639437354-3641516465
-2313078075-2334991622
-2166324817-2172350995
-4271478996-4279496401
-4224492579-4228356386
-213570433-219586693
-3577738508-3578878626
-2004747361-2023251091
-638907979-651338734
-2042269899-2052960282
-3459421693-3470010193
-1255554697-1256876442
-547623253-554247422
-1091999863-1096115712
-3603876264-3620115458
-3743564125-3764787998
-1727097235-1727512693
-3360184134-3361837705
-2693328393-2699639043
-944625756-949285354
-2867948986-2885571238
-3815862045-3817192748
-85521215-90999860
-3492959364-3496450746
-2370047566-2373514273
-978064227-982934994
-3002922234-3034067371
-3702198906-3708772192
-1762248212-1777087215
-3200048313-3217284316
-310731268-314864040
-4256139187-4257030493
-4225267250-4242760473
-4236421277-4249953308
-456593320-464031864
-4173427103-4219640840
-3415471996-3417373524
-517786225-518353134
-2348225752-2349209975
-988767498-1002507583
-251787031-253294331
-2049843175-2053651832
-3272267359-3280700773
-1880334878-1897812119
-2180116083-2181662625
-1325501561-1332569991
-1977956589-1980243809
-1419475215-1429076341
-1571066989-1593324419
-1908591293-1926977363
-892862026-900263616
-2375708935-2420847226
-4252569311-4259706067
-611682642-636576980
-4069864506-4088316591
-3429899073-3443104533
-2881173909-2904242568
-838248538-839457347
-1040048945-1048427339
-2790325698-2817756908
-259065357-260284546
-4251177319-4254787503
-1727035024-1727220036
-1750189264-1751440819
-1182854783-1199103982
-1565110550-1598512204
-1870272544-1906507807
-2294404836-2313311754
-605934295-611508831
-3164119802-3167924307
-1833545461-1834287253
-2077509652-2090604632
-2880238444-2890262424
-1142031337-1148518669
-4005987455-4006591959
-1570054798-1576009746
-2071505543-2096650688
-3485106835-3485722365
-577813461-602978858
-2776866362-2786901141
-652895584-671838947
-3299449839-3300020065
-1623460193-1638054811
-3340666115-3353087971
-2160043893-2166478186
-1096507969-1101378526
-800088830-803013264
-13565145-17743483
-85024888-98806837
-3823224649-3827480049
-3931062541-3938277752
-1012892921-1030836304
-1565255853-1583189516
-1647708193-1660811906
-657010776-666847464
-1839278378-1840330117
-1008973854-1015912839
-1910283066-1913763928
-837557263-838411350
-1282815406-1288995029
-3980611-5584893
-3148345905-3165692092
-2742421263-2776592447
-229688447-231610502
-2743245719-2776866361
-3878098271-3883221309
-801316931-804135040
-1471664269-1473302685
-1667111343-1669791317
-1610947175-1617629889
-2003085048-2013051153
-3307457133-3360184133
-1195340209-1203343093
-2025204495-2028453665
-32923438-47156091
-3168696227-3170592073
-3235742576-3255614827
-2266729227-2280080556
-775349160-775813901
-1473362682-1482720843
-3572312385-3575213587
-528189743-538093910
-2448613175-2454994921
-2843283603-2855830818
-2890593329-2907911642
-153191907-164713586
-4043150608-4096451267
-605875663-610305444
-3021650-3111593
-2420847228-2420916051
-4105743852-4113419273
-2460397045-2462412256
-567585936-602788586
-1727082530-1727671255
-4033434900-4037286987
-4144511592-4162791978
-3075535768-3080851776
-1639907267-1641352662
-920282814-940069234
-3826936712-3829839713
-1916925688-1925357559
-1845213589-1860279111
-1854550234-1855331759
-3065495280-3066648567
-170353613-171186253
-3212824412-3220097963
-2853141261-2853700351
-3556640-3614471
-1976412956-1988224560
-3296627900-3297163117
-725395889-749479392
-2233996777-2234267091
-1757843247-1759325879
-4279435928-4280514617
-801130429-802441496
-3751681078-3760769957
-2347982977-2366662085
-4235682663-4235983270
-3496282296-3499776408
-3821333501-3824224274
-2723761236-2742421261
-2827790660-2835001032
-1935288812-1941728417
-1726855325-1728050569
-1726544710-1727430469
-3940016790-3941936080
-546101318-552097193
-4184013882-4199809831
-2425846522-2426458497
-3361306788-3362865310
-453108094-456181406
-860613212-892862024
-362299769-362572315
-17407637-23147236
-3504547466-3505717615
-985733821-987978530
-2735458050-2740276231
-270737999-279345075
-1787997707-1795677405
-3680835944-3709667892
-3818408771-3825605323
-16201770-24236234
-1158649495-1176112357
-952141612-961131855
-2690399120-2697050905
-2837757591-2838004534
-3487101328-3501129288
-3888980907-3889308041
-3139002312-3144216973
-1812389934-1832528171
-4062104130-4081249321
-4109985868-4116611691
-261499681-305729049
-414982559-415941657
-2837715582-2837939443
-1612314605-1613532579
-1847293843-1854555869
-2048771211-2052518908
-701565294-713634431
-208666820-210559343
-2827420738-2834300681
-4141218867-4154796647
-1970845509-1978651442
-1552842250-1565110548
-412226938-422230809
-596789633-599083332
-571536075-580257978
-4162791979-4165315032
-2578608882-2600367385
-2953753655-2967704893
-1620638998-1623460191
-3652181866-3653081107
-1226734954-1263413684
-208300600-209821102
-3019452277-3019912348
-1614701447-1620638997
-3941936081-3996282520
-3237157247-3249234449
-2348186235-2349807460
-3562813382-3565898388
-3710261879-3738818624
-2629772693-2635508362
-2443958025-2447376004
-399974274-423562472
-1778846705-1790086524
-2234646109-2266729225
-1668227842-1689521646
-3549361830-3564965209
-1286877599-1288249900
-2117171419-2125943104
-3620689032-3652181864
-3299261942-3299688775
-1490791491-1514099208
-3817192749-3833336581
-3410915712-3429899072
-541342032-546429219
-918411171-924314929
-2182745019-2185607312
-2212606518-2214621946
-1779983196-1804748835
-1936162035-1950945741
-3704618658-3705051939
-1764680564-1778846703
-2698697285-2709059938
-1326793529-1329535111
-3702328552-3704015912
-2008848662-2015608293
-1231732813-1247626190
-1750754899-1752420348
-1093229127-1099058712
-4234037046-4236997947
-3493552026-3497919102
-3235053958-3252106974
-4018470466-4036608102
-701727470-719544055
-574115703-596179511
-3202587506-3210265222
-698102469-706160479
-1832528173-1833853020
-441673267-452453492
-2911169435-2921998083
-2229856423-2234646108
-2196901664-2204841238
-1675352425-1691381949
-4250455374-4250513503
-3237515102-3260318492
-171161905-175877664
-2581539215-2596898898
-4004311193-4012385537
-1324083574-1324546090
-4096883078-4097164771
-780817620-784569858
-208242283-211110211
-1330525084-1336070077
-4008229513-4009226682
-834427868-838848257
-348999024-350410733
-467200453-500728800
-4121379695-4138903168
-2949401565-2976409803
-3917170902-3926057375
-3071781061-3074945017
-3299433864-3300019479
-3894069601-3909653487
-3741129648-3770933677
-1337537272-1347157874
-216818049-245842326
-1626689836-1641152228
-1112292760-1131928222
-1651219196-1654305795
-506374440-513152599
-430626871-453108093
-3297525469-3306042698
-3256944-3556639
-2937659849-2949401563
-3915476081-3917349752
-170273133-170386354
-3896834322-3906255111
-2911101673-2912870470
-2383625542-2388030504
-2202988069-2215864531
-3931566185-3938787313
-3893325063-3903409791
-1677593295-1694860962
-1726429432-1726959531
-550814749-553019695
-328183437-332828273
-2463651684-2490928811
-2532315541-2561777512
-902393943-906380753
-3255012511-3262588157
-464031865-471880579
-987894291-990856994
-2994108099-3016224261
-1464668452-1468573067
-3817599599-3819192240
-4281205900-4284988083
-1610485824-1614835930
-2922504894-2943149643
-1366674588-1391544336
-2716673569-2724196148
-2136933960-2141630673
-952929934-954132488
-102430362-103410808
-1097408788-1102041819
-1411884657-1413275434
-1569519099-1595018443
-3314630119-3351858696
-1159063633-1161383669
-1306210365-1310168207
-65606761-70210379
-969367195-1005028750
-305729050-305810398
-2964351925-2968998528
-2586831864-2598752947
-2717800067-2732550815
-1357733985-1357970980
-3142078167-3146050939
-836110255-836394578
-2855830819-2865550532
-1854118661-1854889002
-3275779087-3291457029
-481061771-497879373
-2572567941-2573814074
-3653825904-3656453968
-1752420350-1764680563
-3381301699-3381332932
-1499205864-1508841960
-2568948534-2571512127
-124303608-171161904
-834540652-842353886
-3296634137-3297348568
-756487393-757398433
-2920277931-2929967348
-775003730-775425950
-4006843235-4009222380
-4173461462-4180792939
-2573814075-2627343871
-3379943605-3385769428
-3613135813-3622915872
-456181408-463675190
-1679128363-1689145745
-1771462652-1775663407
-3896043704-3896601721
-3668521412-3670169542
-3189676166-3211906595
-4178058206-4197742264
-649282356-651528503
-4118830219-4151607552
-3403081369-3405163204
-1295416035-1327421558
-3535003795-3540392660
-2521028658-2521094946
-3378794770-3384471028
-3876141848-3885724936
-3415436447-3434089766
-3236961463-3242080308
-1289735149-1320942247
-20583890-31053879
-2039793197-2062178184
-3361173897-3362649522
-476445996-491796622
-2305715287-2337252117
-1407865145-1413213862
-100343325-122125577
-4259473250-4260027959
-1539624652-1558856769
-3388893007-3406562225
-3815438953-3819219050
-88644450-100343323
-2838092965-2853295826
-2298582785-2308283977
-1911552487-1924425897
-3486137486-3495337804
-3087487707-3105123828
-2449249575-2459990446
-1114195378-1147840884
-3084130783-3090098247
-280604127-291812349
-251655795-252002640
-2065738411-2068050329
-3540392662-3561413701
-4108709270-4110339849
-185357325-191846357
-2988550972-3002922233
-2008583503-2009174592
-367514957-375053863
-3738337-5109287
-2068050330-2103854128
-2185761689-2201113375
-502979929-541342030
-437711847-441825502
-763342493-770307022
-3891568242-3896055908
-2771403009-2783873057
-857296477-865365400
-2372996602-2415318753
-209779549-212434153
-3904992626-3910219913
-2976409804-2983591595
-3614472-4019606
-3429649651-3432451145
-2312224052-2330392688
-3889124925-3889312068
-3368044346-3369236254
-2485542419-2506962662
-3703774963-3704692844
-249324444-259065356
-3038718563-3063082755
-2348008128-2348750596
-4027659985-4040018381
-4020167637-4028011463
-631597603-638907977
-156806924-163856510
-465625162-475575707
-1653345924-1655794173
-644029368-673749955
-1342645425-1348056082
-754961620-757509941
-2185607313-2229856421
-2430693014-2452320783
-2423618253-2423991135
-2578007008-2593849390
-251455290-252167220
-2141431440-2145256393
-461551382-490688234
-1280627802-1282187341
-2447416346-2448485092
-801034819-803950109
-3803801071-3817168598
-2791159575-2797552524
-2444538618-2447695611
-3656900217-3658497760
-362424586-362913246
-2315692184-2318703938
-2658294991-2705851874
-758225777-762221309
-3220097965-3253590560
-3918863154-3937848140
-3842601762-3867989792
-1362989964-1365638761
-2669543622-2698580716
-204441701-216667513
-3337068522-3351226708
-2910214082-2911637865
-2887286425-2894235722
-2556506098-2564781736
-3660974732-3670236178
-3738818625-3765658510
-3926612436-3931754899
-849660339-860613211
-3878152839-3882588354
-1198564716-1203493708
-90563967-91509385
-4113419274-4118830217
-2421569872-2430693012
-1380512818-1382191639
-2171495075-2182745017
-2346496816-2347982976
-2773187116-2776527627
-3264380514-3275779086
-2795335811-2807483836
-1255625643-1259049524
-3039851327-3062062714
-3477125643-3485106833
-368161721-385647773
-557063546-567450813
-2662245837-2698867380
-409471723-415008368
-2692399192-2709671522
-3289361982-3294593090
-2444382077-2446243156
-995864334-1008973852
-1485359185-1511483438
-3170296689-3173219013
-651528504-684359142
-2799805080-2819283989
-2745894337-2761860632
-4021069786-4034189388
-2423235028-2423776100
-1161581883-1172788321
-575303235-584246627
-1323324671-1324380624
-423562473-430626869
-3173219015-3207487851
-256367467-256655264
-2729359684-2736808477
-2979779055-2988550970
-1482720845-1491600385
-1057830454-1067468142
-107593407-117739880
-251911362-252150667
-3569934829-3575123572
-2241251261-2263701349
-2726382705-2727247227
-4037319554-4043150606
-3718405500-3739070428
-2364203325-2366532950
-836023031-836878401
-961131857-995864333
-3961933297-3977917454
-3180447251-3212824411
-3124189059-3126106003
-793312386-802938899
-3873230388-3877536365
-2841402828-2852690950
-2931754109-2946377103
-4097161122-4098833023
-2953494240-2963922968
-1016080923-1023809512
-2305965588-2325470268
-1726429959-1728139098
-1725984972-1746517984
-2280080557-2294404834
-1453817212-1468119920
-3343366097-3354792825
-2726120736-2727168410
-1726047629-1726491275
-2425599810-2428632507
-1127809348-1136655248
-784569859-830872706
-3362865312-3399674855
-467374870-490345878
-2028166733-2029296658
-3793434985-3799550158
-4113324238-4114378130
-2768224805-2776292356
-3076910664-3083853151
-3795367294-3799559727
-983334314-985924731
-2566325429-2567644886
-2079828370-2095628301
-1355677782-1357107425
-3139807-3256943
-2297016509-2339606996
-3937987517-3940016788
-3111594-3180044
-3408799234-3410915710
-2736163676-2737085107
-2927299659-2930923781
-2828368238-2835482134
-2924361649-2933817173
-3278336262-3282205864
-209200196-211114889
-1089312986-1101840140
-2426098602-2426594407
-3761524602-3771101074
-4038400571-4039718550
-4278817904-4281979539
-1971790010-1982080495
-2482451447-2482859303
-696142504-708558552
-832751897-838668629
-522885199-537712867
-3854296653-3860724814
-4250257176-4250870059
-1098058891-1101871591
-2041494246-2044474847
-3379302636-3380200608
-2823631138-2825091086
-3114946479-3141035176
-2564781738-2570503459
-3066648569-3072839529
-2963998950-2966815574
-3996282522-4010140708
-2609189498-2612898027
-1398040334-1399196426
-2705851875-2712491761
-3303896197-3307457131
-3072710194-3078315569
-2650750533-2658294989
-125494120-152726161
-1799712687-1813651344
-4113647358-4114354821
-914689746-931400632
-2334991623-2346496814
-952020939-952231689
-3279484720-3279924084
-826369329-829381680
-306371001-356731744
-2545936899-2562194811
-755902693-769100113
-2423872436-2428440493
-1040252532-1043084518
-2531373947-2564360722
-3758158314-3765326552
-250882458-253102421
-2445299323-2451474922
-2845734926-2859990778
-2571586320-2571725933
-4010140709-4018470464
-1397769785-1398762710
-3812038748-3819957572
-2446738279-2447892957
-3600527152-3609409007
-260284548-271403358
-108405773-115248353
-1910315960-1918268562
-1323436354-1327278720
-2234068374-2234384404
-982370550-984890793
-362487749-363332785
-3703404287-3704710600
-511536791-531472470
-1204860806-1211356557
-1280824569-1283027536
-1864956505-1865664159
-1264539978-1280627800
-838668630-849660337
-1039302291-1048802154
-3820162182-3829891468
-252725400-258978812
-3811611218-3815532558
-5584894-20583889
-2571534738-2571657850
-383938370-391077230
-732225856-735643042
-2968582589-2972324720
-2379822184-2380941432
-775813903-782941501
-836283753-836553990
-2786901143-2790325697
-2907911644-2910586722
-3879031171-3883342655
-2446835992-2450584620
-3604970524-3620689031
-3656986634-3664253237
-108870276-116802953
-50881441-82763196
-830872708-834595234
-948787824-952327285
-3554278607-3558372901
-1411483095-1443906338
-1305613100-1306576996
-1171167570-1175215348
-145365808-166164576
-3344972328-3354937927
-178346121-180017093
-3487950867-3498067707
-3455826248-3468331688
-1357654405-1361499079
-2373804146-2375708934
-1682091088-1685006321
-2532666674-2554100432
-3872534964-3888980905
-684359144-690072644
-31053881-36411395
-749479393-750957481
-1233001829-1257233242
-1109953682-1114195377
-175877666-185357324
-1283027537-1289735147
-3374715947-3381800912
-1283434504-1286474690
-1402640030-1423128613
-1426046568-1440437597
-3021217411-3028438706
-3449839444-3455646128
-2192814747-2207353667
-1039244541-1044508076
-363332786-399974272
-620349463-624462815
-3118427268-3142548507
-1177759665-1219332116
-1223070153-1264539977
-2469319931-2491726485
-1101840141-1109953680
-1048427340-1089312984
-2577948853-2584544199
-43965520-47689181
-1833568506-1857070652
-356731745-362276040
-4262722663-4294967295
-2632338905-2641519671
-0-3021649
-1148518671-1158649494
-3562116150-3562242974
-567450814-585792807
-198587645-249324442
-3756871898-3778510326
-2815453754-2821381182
-3562113904-3562138636
-2567358294-2571273144
-2061605698-2065382934
-1865301101-1870272543
-2565458232-2569021972
-267026988-275785393
-2570888765-2571620263
-179248341-180073497
-267066134-277088479
-2060654926-2062597974
-2065382936-2066893485
-3298704119-3299564801
-2194534845-2218883408
diff --git a/advent21.hs b/advent21.hs
deleted file mode 100644 (file)
index d51bd10..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-import Text.Parsec hiding (State)
-import Text.ParserCombinators.Parsec.Number
-import Data.Maybe (fromJust)
-import Data.List (elemIndex)
-
-import Control.Monad.Identity
-import Control.Monad.State
-import Control.Monad.Writer
-
-data Instruction =    SwapPosition Int Int 
-                    | SwapLetter Char Char
-                    | RotateSteps Int
-                    | RotateLetter Char
-                    | Reverse Int Int
-                    | Move Int Int 
-                    deriving (Show, Eq)
-
-data Log = Log {
-    action :: String
-    } deriving (Show)
-
-data Password = Password {
-    password :: String
-    } deriving (Show)
-
-
-type App = WriterT [Log] (StateT Password Identity)
-
-infixl 9 ??
-
-(??) :: Eq a => [a] -> a -> Int
-(??) items item = fromJust $ elemIndex item items
-
-
-initial = "abcdefgh"
-final   = "fbgdceah"
-
-testInstructions = "\
-\swap position 4 with position 0\n\
-\swap letter d with letter b\n\
-\reverse positions 0 through 4\n\
-\rotate left 1 step\n\
-\move position 1 to position 4\n\
-\move position 3 to position 0\n\
-\rotate based on position of letter b\n\
-\rotate based on position of letter d\n"
-
-main :: IO ()
-main = do 
-    -- let ti = successfulParse $ parseIfile testInstructions
-    -- part1 ti "abcde"
-    -- part2 (reverse ti) "decab"
-    text <- readFile "advent21.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions initial
-    part2 (reverse instructions) final
-
-part1 :: [Instruction] -> String -> IO ()
-part1 instructions start = 
-    let st = Password {password = start}
-        ((_, log), st') = runIdentity (runStateT (runWriterT (apply instructions)) st)
-    in do 
-        -- putStrLn $ unlines $ map (action) log
-        putStrLn $ password st'
-
-part2 :: [Instruction] -> String -> IO ()
-part2 instructions end = 
-    let st = Password {password = end}
-        ((_, log), st') = runIdentity (runStateT (runWriterT (unApply instructions)) st)
-    in do 
-        -- putStrLn $ unlines $ map (action) log
-        putStrLn $ password st'
-
-
-apply :: [Instruction] -> App ()
-apply [] = return ()
-apply (i:is) = 
-    do  st <- get
-        let p0 = password st
-        let p1 = applyInstruction i p0
-        put st {password = p1}
-        tell [Log (p0 ++ " -> " ++ p1 ++ " : " ++ (show i))]
-        apply is
-
-
-applyInstruction :: Instruction -> String -> String
-applyInstruction (SwapPosition from to) p0 
-    | from == to = p0
-    | otherwise = prefix ++ [p0!!end] ++ midfix ++ [p0!!start] ++ suffix
-        where start = minimum [from, to]
-              end = maximum [from, to]
-              prefix = take start p0
-              midfix = take (end-start-1) $ drop (start+1) p0
-              suffix = drop (end+1) p0
-
-applyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapPosition (p0??l0) (p0??l1)) p0
-
-applyInstruction (RotateSteps n) p0 = (drop n' p0) ++ (take n' p0)
-    where n' = if n < 0 
-                then (-1 * n)
-                else (length p0) - n
-
-applyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
-    where n = (1 + (p0??l) + if (p0??l) >= 4 then 1 else 0) `mod` (length p0)
-
-applyInstruction (Reverse from to) p0
-    | from == to = p0
-    | otherwise = prefix ++ (reverse midfix) ++ suffix
-        where start = minimum [from, to]
-              end = maximum [from, to]
-              prefix = take start p0
-              midfix = take (end-start+1) $ drop start p0
-              suffix = drop (end+1) p0
-
-applyInstruction (Move from to) p0 
-    | from == to = p0
-    | otherwise = prefix ++ [p0!!from] ++ suffix
-        where without = take from p0 ++ drop (from+1) p0
-              prefix = take to without
-              suffix = drop (to) without
-
-
-unApply :: [Instruction] -> App ()
-unApply [] = return ()
-unApply (i:is) = 
-    do  st <- get
-        let p0 = password st
-        let p1 = unApplyInstruction i p0
-        put st {password = p1}
-        tell [Log (p1 ++ " <- " ++ p0 ++ " : " ++ (show i))]
-        unApply is
-
-unApplyInstruction :: Instruction -> String -> String
-unApplyInstruction (SwapPosition from to) p0 = applyInstruction (SwapPosition from to) p0
-unApplyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapLetter l0 l1) p0
-unApplyInstruction (RotateSteps n) p0 = applyInstruction (RotateSteps (-1 * n)) p0
-unApplyInstruction (Reverse from to) p0 = applyInstruction (Reverse from to) p0
-unApplyInstruction (Move from to) p0 = applyInstruction (Move to from) p0
-unApplyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
-    where n = case (p0??l) of
-                0 -> -1
-                1 -> -1
-                2 ->  2
-                3 -> -2
-                4 ->  1
-                5 -> -3
-                6 ->  0
-                7 -> -4
-    -- where n = case (p0??l) of
-    --             0 -> -1
-    --             1 -> -1
-    --             2 ->  1
-    --             3 -> -2
-    --             4 ->  1
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = choice [ swapL 
-                         , rotateL
-                         , reverseL
-                         , moveL
-                         ]
-
-swapL = (try (string "swap ")) *> (swapPosL <|> swapLetterL)
-
-swapPosL = SwapPosition <$> (string "position" *> spaces *> int) 
-                        <*> (spaces *> string "with position" *> spaces *> int)
-
-swapLetterL = SwapLetter <$> (string "letter" *> spaces *> letter) 
-                         <*> (spaces *> string "with letter" *> spaces *> letter)
-
-rotateL = (try (string "rotate ")) *> (rotateDirL <|> rotateLetterL)
-
-rotateDirL = rotateStepify <$> ((string "left") <|> (string "right"))
-                           <*> (spaces *> int <* spaces <* skipMany letter)
-    where rotateStepify dir n = case dir of 
-                                     "left" -> (RotateSteps (-1 * n))
-                                     "right" -> (RotateSteps n)
-rotateLetterL = RotateLetter <$> (string "based on position of letter " *> letter)
-
-reverseL = Reverse <$> (string "reverse positions" *> spaces *> int)
-                   <*> (spaces *> (string "through") *> spaces *> int)
-
-moveL = Move <$> (string "move position" *> spaces *> int)
-             <*> (spaces *> (string "to position") *> spaces *> int)
-
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/advent21.txt b/advent21.txt
deleted file mode 100644 (file)
index b445817..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-rotate based on position of letter a
-swap letter g with letter d
-move position 1 to position 5
-reverse positions 6 through 7
-move position 5 to position 4
-rotate based on position of letter b
-reverse positions 6 through 7
-swap letter h with letter f
-swap letter e with letter c
-reverse positions 0 through 7
-swap position 6 with position 4
-rotate based on position of letter e
-move position 2 to position 7
-swap position 6 with position 4
-rotate based on position of letter e
-reverse positions 2 through 3
-rotate right 2 steps
-swap position 7 with position 1
-move position 1 to position 2
-move position 4 to position 7
-move position 5 to position 0
-swap letter e with letter f
-move position 4 to position 7
-reverse positions 1 through 7
-rotate based on position of letter g
-move position 7 to position 4
-rotate right 6 steps
-rotate based on position of letter g
-reverse positions 0 through 5
-reverse positions 0 through 7
-swap letter c with letter f
-swap letter h with letter f
-rotate right 7 steps
-rotate based on position of letter g
-rotate based on position of letter c
-swap position 1 with position 4
-move position 7 to position 3
-reverse positions 2 through 6
-move position 7 to position 0
-move position 7 to position 1
-move position 6 to position 7
-rotate right 5 steps
-reverse positions 0 through 6
-move position 1 to position 4
-rotate left 3 steps
-swap letter d with letter c
-move position 4 to position 5
-rotate based on position of letter f
-rotate right 1 step
-move position 7 to position 6
-swap position 6 with position 0
-move position 6 to position 2
-rotate right 1 step
-swap position 1 with position 6
-move position 2 to position 6
-swap position 2 with position 1
-reverse positions 1 through 7
-move position 4 to position 1
-move position 7 to position 0
-swap position 6 with position 7
-rotate left 1 step
-reverse positions 0 through 4
-rotate based on position of letter c
-rotate based on position of letter b
-move position 2 to position 1
-rotate right 0 steps
-swap letter b with letter d
-swap letter f with letter c
-swap letter d with letter a
-swap position 7 with position 6
-rotate right 0 steps
-swap position 0 with position 3
-swap position 2 with position 5
-swap letter h with letter f
-reverse positions 2 through 3
-rotate based on position of letter c
-rotate left 2 steps
-move position 0 to position 5
-swap position 2 with position 3
-rotate right 1 step
-rotate left 2 steps
-move position 0 to position 4
-rotate based on position of letter c
-rotate based on position of letter g
-swap position 3 with position 0
-rotate right 3 steps
-reverse positions 0 through 2
-move position 1 to position 2
-swap letter e with letter c
-rotate right 7 steps
-move position 0 to position 7
-rotate left 2 steps
-reverse positions 0 through 4
-swap letter e with letter b
-reverse positions 2 through 7
-rotate right 5 steps
-swap position 2 with position 4
-swap letter d with letter g
-reverse positions 3 through 4
-reverse positions 4 through 5
diff --git a/adventofcode16/Setup.hs b/adventofcode16/Setup.hs
new file mode 100644 (file)
index 0000000..9a994af
--- /dev/null
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/adventofcode16/adventofcode16.cabal b/adventofcode16/adventofcode16.cabal
new file mode 100644 (file)
index 0000000..39c0942
--- /dev/null
@@ -0,0 +1,355 @@
+name:                adventofcode16
+version:             0.1.0.0
+synopsis:            Initial project template from stack
+description:         Please see README.md
+homepage:            https://github.com/neilnjae/adventofcode16#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Neil Smith
+maintainer:          noone@njae.me.uk
+copyright:           2016 Neil Smith
+category:            None
+build-type:          Simple
+extra-source-files:  README.md
+cabal-version:       >=1.10
+
+library
+  hs-source-dirs:      src
+  exposed-modules:     Lib
+  build-depends:       base >= 4.7 && < 5
+  default-language:    Haskell2010
+
+executable advent01
+  hs-source-dirs:      app
+  main-is:             advent01.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+  default-language:    Haskell2010
+
+executable advent02
+  hs-source-dirs:      app
+  main-is:             advent02.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , array
+  default-language:    Haskell2010
+
+executable advent03
+  hs-source-dirs:      app
+  main-is:             advent03.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+  default-language:    Haskell2010
+
+executable advent04
+  hs-source-dirs:      app
+  main-is:             advent04.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+                     , containers
+  default-language:    Haskell2010
+
+executable advent05
+  hs-source-dirs:      app
+  main-is:             advent05.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , containers
+                     , MissingH
+  default-language:    Haskell2010
+
+executable advent06
+  hs-source-dirs:      app
+  main-is:             advent06.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent07
+  hs-source-dirs:      app
+  main-is:             advent07.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+  default-language:    Haskell2010
+
+executable advent08
+  hs-source-dirs:      app
+  main-is:             advent08.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , array
+                     , parsec
+  default-language:    Haskell2010
+
+executable advent09
+  hs-source-dirs:      app
+  main-is:             advent09.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+  default-language:    Haskell2010
+
+executable advent10
+  hs-source-dirs:      app
+  main-is:             advent10.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , text
+                     , mtl
+  default-language:    Haskell2010
+
+executable advent11
+  hs-source-dirs:      app
+  main-is:             advent11.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent11a
+  hs-source-dirs:      app
+  main-is:             advent11a.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent11h
+  hs-source-dirs:      app
+  main-is:             advent11h.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent11p
+  hs-source-dirs:      app
+  main-is:             advent11p.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , pqueue
+  default-language:    Haskell2010
+
+executable advent12
+  hs-source-dirs:      app
+  main-is:             advent12.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , mtl
+  default-language:    Haskell2010
+
+executable advent13
+  hs-source-dirs:      app
+  main-is:             advent13.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , MissingH
+  default-language:    Haskell2010
+
+executable advent14
+  hs-source-dirs:      app
+  main-is:             advent14.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , MissingH
+  default-language:    Haskell2010
+
+executable advent14c
+  hs-source-dirs:      app
+  main-is:             advent14c.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , bytestring
+                     , cryptonite
+  default-language:    Haskell2010
+
+executable advent14parallel
+  hs-source-dirs:      app
+  main-is:             advent14parallel.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parallel
+                     , bytestring
+                     , cryptonite
+  default-language:    Haskell2010
+
+executable advent15
+  hs-source-dirs:      app
+  main-is:             advent15.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent15l
+  hs-source-dirs:      app
+  main-is:             advent15l.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent16
+  hs-source-dirs:      app
+  main-is:             advent16.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent16i
+  hs-source-dirs:      app
+  main-is:             advent16i.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent17
+  hs-source-dirs:      app
+  main-is:             advent17.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , bytestring
+                     , cryptonite
+  default-language:    Haskell2010
+
+executable advent18
+  hs-source-dirs:      app
+  main-is:             advent18.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent18f
+  hs-source-dirs:      app
+  main-is:             advent18f.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent19
+  hs-source-dirs:      app
+  main-is:             advent19.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , containers
+  default-language:    Haskell2010
+
+executable advent20
+  hs-source-dirs:      app
+  main-is:             advent20.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent21
+  hs-source-dirs:      app
+  main-is:             advent21.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , mtl
+  default-language:    Haskell2010
+
+executable advent22
+  hs-source-dirs:      app
+  main-is:             advent22.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent22search
+  hs-source-dirs:      app
+  main-is:             advent22search.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent22showgrid
+  hs-source-dirs:      app
+  main-is:             advent22showgrid.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent22library
+  hs-source-dirs:      app
+  main-is:             advent22library.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , containers
+                     , astar
+                     , unordered-containers
+                     , hashable
+  default-language:    Haskell2010
+
+
+executable adventofcode16-exe
+  hs-source-dirs:      app
+  main-is:             Main.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+test-suite adventofcode16-test
+  type:                exitcode-stdio-1.0
+  hs-source-dirs:      test
+  main-is:             Spec.hs
+  build-depends:       base
+                     , adventofcode16
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  default-language:    Haskell2010
+
+source-repository head
+  type:     git
+  location: https://github.com/neilnjae/adventofcode16
diff --git a/adventofcode16/app/Main.hs b/adventofcode16/app/Main.hs
new file mode 100644 (file)
index 0000000..de1c1ab
--- /dev/null
@@ -0,0 +1,6 @@
+module Main where
+
+import Lib
+
+main :: IO ()
+main = someFunc
diff --git a/adventofcode16/app/advent01.hs b/adventofcode16/app/advent01.hs
new file mode 100644 (file)
index 0000000..b76195d
--- /dev/null
@@ -0,0 +1,99 @@
+module Main(main) where
+
+import Data.List (sort)
+import Data.List.Split (splitOn)
+
+-- turn direction, number of steps
+data Step = Step Char Int deriving (Show)
+
+data Direction = North | East | South | West 
+    deriving (Enum, Show, Bounded, Eq)
+
+-- direction, easting, northing
+data Position = Position Direction Int Int deriving (Show)
+-- Two positions are the same if they're in the same place, 
+-- regardless of facing
+instance Eq Position where
+    Position _ e n == Position _ e' n' = e == e' && n == n'
+
+main :: IO ()
+main = do 
+        instructions <- readFile "data/advent01.txt"
+        part1 instructions
+        part2 instructions
+
+part1 :: String -> IO ()
+part1 instructions = do
+        let answer = finalDistance $ last $ stepsFromStart $ steps instructions
+        print answer
+
+part2 :: String -> IO ()
+part2 instructions = do
+        let visited = finalDistance $ firstRepeat $ stepsFromStart $ expandSteps $ steps instructions
+        print visited
+
+
+-- Extract the steps from the input string.
+steps :: String -> [Step]
+steps s = map readStep $ splitOn ", " s
+    where readStep (d:l) = Step d (read l)
+
+-- Take steps from the starting position
+stepsFromStart :: [Step] -> [Position]
+stepsFromStart = takeSteps (Position North 0 0)
+
+-- Calculate manhattan distance from start to this state
+finalDistance :: Position -> Int
+finalDistance (Position _ e n) = (abs e) + (abs n)
+
+-- For part 2: convert one step of many spaces to many steps of one space each
+expandSteps :: [Step] -> [Step]
+expandSteps = 
+    concatMap expandStep
+    where expandStep (Step dir d) = (Step dir 1) : replicate (d - 1) (Step 'S' 1)
+
+-- Execute a series of steps, keeping track of the positions after each step
+takeSteps :: Position -> [Step] -> [Position]
+-- takeSteps pos steps = scanl move pos steps
+takeSteps = scanl move
+
+-- Make one move, by updating direction then position
+move :: Position -> Step -> Position
+move (Position facing easting northing)
+    (Step turnInstr distance) = 
+    Position facing' easting' northing'
+    where facing' = turn turnInstr facing
+          (easting', northing') = takeStep facing' distance easting northing
+
+-- Turn right, left, or straight
+turn :: Char -> Direction -> Direction
+turn 'R' direction = turnCW direction
+turn 'L' direction = turnACW direction
+turn 'S' direction = direction
+
+-- Move in the current direction
+takeStep :: Direction -> Int -> Int -> Int -> (Int, Int)
+takeStep North d e n = (e, n+d)
+takeStep South d e n = (e, n-d)
+takeStep West  d e n = (e-d, n)
+takeStep East  d e n = (e+d, n)
+
+
+-- | a `succ` that wraps 
+turnCW :: (Bounded a, Enum a, Eq a) => a -> a 
+turnCW dir | dir == maxBound = minBound
+         | otherwise = succ dir
+
+-- | a `pred` that wraps
+turnACW :: (Bounded a, Enum a, Eq a) => a -> a
+turnACW dir | dir == minBound = maxBound
+            | otherwise = pred dir
+
+-- All the prefixes of a list of items
+prefixes = scanl addTerm []
+    where addTerm ps t = ps ++ [t]
+
+-- The first item that exists in a prefix of the list to that point
+firstRepeat positions = 
+    last $ head $ dropWhile (\p -> (last p) `notElem` (tail $ reverse p)) 
+                            (tail $ prefixes positions)
diff --git a/adventofcode16/app/advent02.hs b/adventofcode16/app/advent02.hs
new file mode 100644 (file)
index 0000000..747001d
--- /dev/null
@@ -0,0 +1,90 @@
+module Main(main) where
+
+import Data.Array.IArray
+
+-- Row 1 is top, column 1 is left
+type Position = (Int, Int)
+type Keyboard = Array Position Char
+
+kb1 = ["xxxxx", 
+       "x123x", 
+       "x456x",
+       "x789x",
+       "xxxxx"]
+
+kb2 = ["xxxxxxx",
+       "xxx1xxx",
+       "xx234xx",
+       "x56789x",
+       "xxABCxx",
+       "xxxDxxx",
+       "xxxxxxx"]
+
+enumerate = zip [0..]
+
+mkKeyboard :: [String] -> Keyboard
+mkKeyboard kb = array ((0, 0), (length kb - 1, length (kb!!0) - 1))
+    [((i, j), c) | (i, r) <- enumerate kb, (j, c) <- enumerate r]
+
+keyboard1 = mkKeyboard kb1
+keyboard2 = mkKeyboard kb2
+
+findKey :: Keyboard -> Char-> Position
+findKey kb c = fst $ head $ filter (\a -> (snd a) == c) $ assocs kb
+
+-- data Coord = One | Two | Three
+--     deriving (Read, Show, Eq, Ord, Enum, Bounded)
+-- -- instance Bounded Coord where
+-- --     minBound = Coord 1
+-- --     maxBound = Coord 3
+
+-- data Position = Position Coord Coord
+--     deriving (Show, Eq)
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent02.txt" 
+        let instructions = lines instrText
+        part1 instructions
+        part2 instructions
+
+part1 :: [String] -> IO ()
+part1 instructions = do 
+        putStrLn $ followInstructions keyboard1 instructions
+
+
+part2 :: [String] -> IO ()
+part2 instructions = do 
+        putStrLn $ followInstructions keyboard2 instructions
+
+
+followInstructions :: Keyboard -> [String] -> String
+followInstructions kb instr = moveSeries kb (startPosition kb) instr
+
+
+startPosition :: Keyboard -> Position
+startPosition kb = findKey kb '5'
+
+moveSeries :: Keyboard -> Position -> [String] -> String
+moveSeries _ _ [] = []
+moveSeries kb p (i:is) = (n:ns)
+    where p' = makeMoves kb p i
+          n = kb ! p'
+          ns = moveSeries kb p' is
+
+makeMoves :: Keyboard -> Position -> [Char] -> Position
+makeMoves kb p ms = foldl (safeMove kb) p ms
+
+safeMove :: Keyboard -> Position -> Char -> Position
+safeMove kb pos dir = maybeRevert kb pos (move pos dir)
+
+move :: Position -> Char -> Position
+move (r, c) 'U' = (r-1, c)
+move (r, c) 'D' = (r+1, c)
+move (r, c) 'L' = (r, c-1)
+move (r, c) 'R' = (r, c+1)
+
+maybeRevert :: Keyboard -> Position -> Position -> Position
+maybeRevert kb oldPos newPos 
+    | kb ! newPos == 'x' = oldPos
+    | otherwise = newPos
diff --git a/adventofcode16/app/advent03.hs b/adventofcode16/app/advent03.hs
new file mode 100644 (file)
index 0000000..ef40bcc
--- /dev/null
@@ -0,0 +1,33 @@
+module Main(main) where
+
+import Data.List (transpose, sort)
+import Data.List.Split (splitOn, chunksOf)
+
+type Triple = [Integer]
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent03.txt" 
+        let triangles = map (parseLine) $ lines instrText
+        part1 triangles
+        part2 triangles
+
+
+part1 :: [Triple] -> IO ()
+part1 triangles = do 
+    print $ length $ filter (validTriangle) triangles 
+
+part2 :: [Triple] -> IO ()
+part2 triangles = do 
+    print $ length $ filter (validTriangle) $ byColumns triangles 
+
+
+parseLine :: String -> Triple
+parseLine = map (read) . filter (not . null) . splitOn " "
+
+validTriangle :: Triple -> Bool
+validTriangle triple = sortedTriple!!0 + sortedTriple!!1 > sortedTriple!!2
+    where sortedTriple = sort triple
+
+byColumns :: [[Integer]] -> [Triple]
+byColumns = chunksOf 3 . concat . transpose 
diff --git a/adventofcode16/app/advent04.hs b/adventofcode16/app/advent04.hs
new file mode 100644 (file)
index 0000000..85b7555
--- /dev/null
@@ -0,0 +1,66 @@
+module Main(main) where
+
+import Data.List (last, intersperse, sortBy, intercalate, isInfixOf, init)
+import Data.List.Split (splitOn)
+import Data.Char (isLetter, ord, chr)
+import qualified Data.Map.Lazy as Map
+
+data Room = Room { name :: String
+                 , sector :: Int
+                 , checksum :: String
+                 } deriving (Show)
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent04.txt" 
+        let rooms = map (parseLine) $ lines instrText
+        part1 rooms
+        part2 rooms
+
+
+part1 :: [Room] -> IO ()
+part1 rooms = do 
+    print $ sum $ map (sector) validRooms
+    where 
+        validChecksum room = (checksum room) == makeChecksum (name room)
+        validRooms = filter (validChecksum) rooms
+
+part2 :: [Room] -> IO ()
+part2 rooms = do 
+    print $ fst $ head $ filter (\sn -> isInfixOf "north" (snd sn)) sectorNames
+    where 
+        validChecksum room = (checksum room) == makeChecksum (name room)
+        validRooms = filter (validChecksum) rooms
+        sectorNames = [((sector r),
+            shiftWord (sector r) (name r)) | r <- validRooms]
+
+
+parseLine :: String -> Room
+parseLine line = Room {name=name, sector=sector, checksum=checksum}
+    where components = splitOn "-" line
+          name = intercalate "-" $ init components
+          sector = read $ head $ splitOn "[" $ last components
+          checksum = filter (isLetter) $ last components
+
+countedLetters :: String -> [(Char, Int)]
+countedLetters name = sortBy sortCLetter $ unsortedCountedLetters name
+    where unsortedCountedLetters name = 
+            Map.toList $ Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
+
+sortCLetter :: (Char, Int) -> (Char, Int) -> Ordering
+sortCLetter (l1, n1) (l2, n2)
+    | n1 < n2 = GT
+    | n1 > n2 = LT
+    | n1 == n2 = compare l1 l2
+
+makeChecksum :: String -> String
+makeChecksum name = [l | (l, _) <- take 5 $ countedLetters name]
+
+
+shiftWord :: Int -> String -> String
+shiftWord shift letters = map (shiftLetter shift) letters
+
+shiftLetter :: Int -> Char -> Char
+shiftLetter shift letter
+    | isLetter letter = chr $ (ord letter - ord 'a' + shift) `mod` 26 + ord 'a'
+    | otherwise = ' '
diff --git a/adventofcode16/app/advent05.hs b/adventofcode16/app/advent05.hs
new file mode 100644 (file)
index 0000000..82a035e
--- /dev/null
@@ -0,0 +1,44 @@
+module Main(main) where
+
+import Data.Hash.MD5 (md5s, Str(..))
+import Data.List (isPrefixOf)
+import qualified Data.Map.Lazy as Map 
+
+type Password = Map.Map Integer Char
+
+input = "cxdnnyjw"
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+
+part1 :: IO ()
+part1 = do 
+    putStrLn $ take 8 [h!!5 | h <- filter (interesting) $ md5sequence input 0]
+
+part2 :: IO ()
+part2 = do 
+    putStrLn $ Map.foldr (:) [] password
+    where interestingHashes = 
+            [(read [h!!5], h!!6) | 
+              h <- filter (interesting) (md5sequence input 0), 
+              h!!5 `elem` "01234567"]
+          password = findPassword Map.empty interestingHashes
+
+
+md5sequence :: String -> Integer -> [String]
+md5sequence key i = (md5s (Str (key ++ show i))) : (md5sequence key (i+1))
+
+interesting :: String -> Bool
+interesting hash = "00000" `isPrefixOf` hash
+
+dontReplace :: (Integer, Char) -> Password -> Password
+dontReplace (k, v) = Map.insertWith (\_ v -> v) k v
+
+findPassword :: Password -> [(Integer, Char)] -> Password
+findPassword p (c:cs)
+  | Map.size p == 8 = p
+  | otherwise = findPassword p' cs
+      where p' = dontReplace c p
diff --git a/adventofcode16/app/advent06-old.hs b/adventofcode16/app/advent06-old.hs
new file mode 100644 (file)
index 0000000..77d4093
--- /dev/null
@@ -0,0 +1,36 @@
+module Main(main) where
+
+import Data.List (transpose)
+import Data.Char (isLetter)
+import qualified Data.Map.Lazy as Map
+
+main :: IO ()
+main = do 
+    text <- readFile "advent06.txt" 
+    let message = lines text
+    part1 message
+    part2 message
+
+part1 :: [String] -> IO ()
+part1 message = do 
+    print $ map (fst) $ map (mostCommon) $ map (countedLetters) $ transpose message
+
+part2 :: [String] -> IO ()
+part2 message = do 
+    print $ map (fst) $ map (leastCommon) $ map (countedLetters) $ transpose message
+
+
+countedLetters :: String -> Map.Map Char Int
+countedLetters name = Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
+
+mostCommon = Map.foldlWithKey (mostCommonP) ('a', 0)
+
+mostCommonP (letter0, count0) letter count
+    | count > count0 = (letter, count)
+    | otherwise = (letter0, count0)
+
+leastCommon = Map.foldlWithKey (leastCommonP) ('a', maxBound :: Int)
+
+leastCommonP (letter0, count0) letter count
+    | count < count0 = (letter, count)
+    | otherwise = (letter0, count0)
\ No newline at end of file
diff --git a/adventofcode16/app/advent06.hs b/adventofcode16/app/advent06.hs
new file mode 100644 (file)
index 0000000..96c4aa2
--- /dev/null
@@ -0,0 +1,22 @@
+module Main(main) where
+
+import Data.List (transpose, maximum, minimum, sort, group)
+import Data.Tuple (swap)
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent06.txt" 
+    let message = lines text
+    part1 message
+    part2 message
+
+part1 :: [String] -> IO ()
+part1 message = do 
+    putStrLn $ map (snd . maximum . counts) $ transpose message
+
+part2 :: [String] -> IO ()
+part2 message = do 
+    putStrLn $ map (snd . minimum . counts) $ transpose message
+
+counts :: (Eq a, Ord a) => [a] -> [(Int, a)]
+counts = map (\g -> (length g, head g)) . group . sort
\ No newline at end of file
diff --git a/adventofcode16/app/advent07.hs b/adventofcode16/app/advent07.hs
new file mode 100644 (file)
index 0000000..8700958
--- /dev/null
@@ -0,0 +1,136 @@
+module Main(main) where
+
+import Text.Parsec
+import Data.List (partition, union, intersect, tails)
+import Data.Char (isAlphaNum)
+
+data Chunk = Include String | Exclude String deriving (Show)
+data ChunkV = Includev Bool | Excludev Bool deriving (Show)
+
+chunkValue :: Chunk -> String
+chunkValue (Include v) = v
+chunkValue (Exclude v) = v
+
+isInclude :: Chunk -> Bool
+isInclude (Include _) = True
+isInclude (Exclude _) = False
+
+chunkValueV :: ChunkV -> Bool
+chunkValueV (Includev v) = v
+chunkValueV (Excludev v) = v
+
+isIncludeV :: ChunkV -> Bool
+isIncludeV (Includev _) = True
+isIncludeV (Excludev _) = False
+
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent07.txt" 
+    part1 text
+    part2 text
+
+
+part1 :: String -> IO ()
+part1 text = do 
+    print $ length $ filter (allowsAbba) $ successfulParse $ parseI7vf text
+
+
+part2 :: String -> IO ()
+part2 text = do 
+    print $ length $ filter (supportsSSL) $ successfulParse $ parseI7f text
+
+allowsAbba :: [ChunkV] -> Bool
+allowsAbba chunks = (any (chunkValueV) includeChunks) && (not (any (chunkValueV) excludeChunks))
+    where (includeChunks, excludeChunks) = partition (isIncludeV) chunks
+
+i7file = i7line `endBy` newline 
+i7line = many1 (includeChunk <|> excludeChunk)
+
+chunk = many1 alphaNum
+
+excludeChunk = Exclude <$> (between (char '[') (char ']') $ chunk)
+includeChunk = Include <$> chunk
+
+hasABBA = preambleAbba <* (many alphaNum)
+preambleAbba = (try abba) <|> (alphaNum >> preambleAbba)
+
+-- abba = 
+--     do  a <- alphaNum
+--         b <- alphaNum
+--         if a == b then
+--             fail "Identical"
+--         else do char b
+--                 char a
+--                 return [a, b, b, a]
+
+abba = 
+    do  a <- alphaNum
+        b <- noneOf [a]
+        char b
+        char a
+        return [a, b, b, a]
+
+--         where
+-- Â  firstChar = satisfy (\a -> isLetter a || a == '_')
+-- Â  nonFirstChar = satisfy (\a -> isDigit a || isLetter a || a == '_')
+
+   -- b <- bChar
+-- where bChar = satisfy (\l -> lsLetter l && l /= a)
+
+
+
+i7filev = i7linev `endBy` newline
+i7linev = many1 (includeChunkv <|> excludeChunkv)
+
+excludeChunkv = Excludev <$> (between (char '[') (char ']') $ hasABBAv)
+includeChunkv = Includev <$> hasABBAv
+
+hasABBAv = 
+    (try (id True <$ preambleAbba <* (many alphaNum)))
+    <|>
+    (id False <$ (many1 alphaNum))
+
+
+parseI7f :: String -> Either ParseError [[Chunk]]
+parseI7f input = parse i7file "(unknown)" input
+
+parseI7 :: String -> Either ParseError [Chunk]
+parseI7 input = parse i7line "(unknown)" input
+
+parseAbba :: String -> Either ParseError String
+parseAbba input = parse hasABBA "(unknown)" input
+
+parseI7v :: String -> Either ParseError [ChunkV]
+parseI7v input = parse i7linev "(unknown)" input
+
+parseI7vf :: String -> Either ParseError [[ChunkV]]
+parseI7vf input = parse i7filev "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
+
+
+allSubstrings :: Int -> [a] -> [[a]]
+-- allSubstrings n es 
+--     | length es < n = []
+--     | otherwise = (take n es) : (allSubstrings n $ tail es)
+allSubstrings n e = filter (\s -> length s == n) $ map (take n) $ tails e
+
+
+ieCandidates :: [Chunk] -> ([String], [String])
+ieCandidates chunks = (includeCandidates, excludeCandidates)
+    where (includeChunks, excludeChunks) = partition (isInclude) chunks
+          isABA s = (s!!0 == s!!2) && (s!!0 /= s!!1)
+          candidates = (filter (isABA)) . (foldl (union) []) . (map ((allSubstrings 3) . chunkValue))
+          includeCandidates = candidates includeChunks
+          excludeCandidates = candidates excludeChunks
+          
+inverseABA :: String -> String
+inverseABA s = [s!!1, s!!0, s!!1]
+
+supportsSSL :: [Chunk] -> Bool
+supportsSSL chunks = not $ null $ intersect abas eabas
+    where (abas, babs) = ieCandidates chunks
+          eabas = map (inverseABA) babs
diff --git a/adventofcode16/app/advent08.hs b/adventofcode16/app/advent08.hs
new file mode 100644 (file)
index 0000000..ccf2de0
--- /dev/null
@@ -0,0 +1,148 @@
+module Main(main) where
+
+import Data.Array.IArray
+import Text.Parsec
+import Control.Monad (liftM, ap)
+
+-- Row 1 is top, column 1 is left
+type Position = (Int, Int)
+type Screen = Array Position Bool
+
+data Direction = Row | Column deriving (Show)
+data Command = Rect Int Int | Rotate Direction Int Int deriving (Show)
+
+data ScState a = ScState (Screen -> (Screen, a))
+
+mkScreen :: Int -> Int -> Screen
+mkScreen w h = array ((0, 0), (h - 1, w - 1))
+    [((i, j), False) | i <- [0..(h-1)], j <- [0..(w-1)]]
+
+showScreen :: Screen -> String
+showScreen screen = unlines [showRow r | r <- [minRow..maxRow]]
+    where ((minRow, minCol), (maxRow, maxCol)) = bounds screen
+          showCell True  = '*'
+          showCell False = ' '
+          showRow r = [showCell (screen!(r, c)) | c <- [minCol..maxCol]]
+
+countLights :: Screen -> Int
+countLights screen = length $ filter (id) $ elems screen
+
+screen0 :: Screen
+screen0 = mkScreen 50 6
+
+
+main :: IO ()
+main = do
+    text <- readFile "data/advent08.txt"
+    let instrs = successfulParse $ parseCommands text
+    part1 instrs
+    part2 instrs
+
+part1 :: [Command] -> IO ()
+part1 commands =
+    print $ countLights $ (extractScreen . doCommands) commands
+
+part2 :: [Command] -> IO ()
+part2 commands = 
+    putStrLn $ showScreen $ (extractScreen . doCommands) commands
+
+
+instance Functor ScState where
+  fmap = liftM
+
+instance Applicative ScState where
+  pure  = return
+  (<*>) = ap
+
+instance Monad ScState where
+    return x = ScState (\screen -> (screen, x))
+
+    (ScState st) >>= f
+        = ScState (\screen -> let
+                            (newScreen, y) = st screen
+                            (ScState transformer) = f y
+                            in
+                            transformer newScreen)
+
+doCommands :: [Command] -> ScState (Int)
+doCommands [] = return 0
+doCommands (i:is) = 
+    do doCommand i
+       doCommands is
+       return 0
+
+doCommand :: Command -> ScState Int
+doCommand i = ScState (execute i)
+
+execute :: Command -> (Screen -> (Screen, Int))
+execute (Rect w h) screen = (rect screen w h, 0)
+execute (Rotate Column c n) screen = (rotateColumn screen c n, 0)
+execute (Rotate Row r n) screen = (rotateRow screen r n, 0)
+
+extractScreen :: ScState Int -> Screen
+extractScreen (ScState st) = fst (st screen0)
+
+
+
+parseCommands :: String -> Either ParseError [Command]
+parseCommands input = parse commandFile "(unknown)" input
+
+commandFile = commandLine `endBy` newline
+commandLine = (try rectCommand) <|> rotateCommand
+
+rectCommand = 
+    do  string "rect"
+        spaces
+        w <- (many1 digit)
+        char 'x'
+        h <- (many1 digit)
+        return (Rect (read w) (read h))
+
+rotateCommand = 
+    do  string "rotate"
+        spaces
+        direction <- (string "row" <|> string "column")
+        spaces
+        string "x=" <|> string "y="
+        index <- (many1 digit)
+        spaces
+        string "by"
+        spaces
+        distance <- (many1 digit)
+        return (buildCommand direction index distance)
+
+buildCommand "row" i d = Rotate Row (read i) (read d)
+buildCommand "column" i d = Rotate Column (read i) (read d)
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
+
+
+
+
+rect :: Screen -> Int -> Int -> Screen
+rect screen w h = screen // newBits
+    where newBits = [((i, j), True) | i <- [0..(h-1)], j <- [0..(w-1)]]
+
+rotateColumn :: Screen -> Int -> Int -> Screen
+rotateColumn screen column givenShift = screen // newCells
+    where 
+        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
+        colLength = 1 + maxRow - minRow
+        shift = givenShift `mod` colLength
+        offset = colLength - shift
+        column0 = [screen!(r, column) | r <- [minRow..maxRow]]
+        newColumn = (drop offset column0) ++ (take offset column0)
+        newCells = [((r, column), cell) | (r, cell) <- zip [minRow..maxRow] newColumn]
+
+rotateRow :: Screen -> Int -> Int -> Screen
+rotateRow screen row givenShift = screen // newCells
+    where 
+        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
+        rowLength = 1 + maxCol - minCol
+        shift = givenShift `mod` rowLength
+        offset = rowLength - shift
+        row0 = [screen!(row, c) | c <- [minCol..maxCol]]
+        newRow = (drop offset row0) ++ (take offset row0)
+        newCells = [((row, c), cell) | (c, cell) <- zip [minCol..maxCol] newRow]
diff --git a/adventofcode16/app/advent09.hs b/adventofcode16/app/advent09.hs
new file mode 100644 (file)
index 0000000..a3ce495
--- /dev/null
@@ -0,0 +1,57 @@
+module Main(main) where
+
+import Data.List.Split (splitOn)
+import Data.Char (isSpace)
+
+type Chunk = (Int, String)
+
+main :: IO ()
+main = do 
+        textL <- readFile "data/advent09.txt" 
+        let text = filter (not . isSpace) textL
+        part1 text
+        part2 text
+
+part1 :: String -> IO ()
+part1 text = do 
+    print $ cLength $ decompress text
+
+part2 :: String -> IO ()
+part2 text = do 
+    print $ cLength $ decompress2 text
+
+
+decompress :: String -> [Chunk]
+decompress text = 
+    if not (null msuf) 
+        then (1, pre):(num, chunk):drest
+        else [(1, pre)]
+    where 
+        (pre, msuf) = span ('(' /= ) text
+        (marker, suf) = span (')' /= ) msuf
+        ln = splitOn "x" (tail marker)
+        len = read (ln!!0) :: Int
+        num = read (ln!!1) :: Int
+        (chunk, remainder) = splitAt len (tail suf)
+        drest = decompress remainder
+
+decompress2 :: String -> [Chunk]
+decompress2 text = 
+    if not (null msuf) 
+        then [(1, pre)] ++ mulDchunks ++ drest
+        else [(1, pre)]
+    where 
+        (pre, msuf) = span ('(' /= ) text
+        (marker, suf) = span (')' /= ) msuf
+        ln = splitOn "x" (tail marker)
+        len = read (ln!!0) :: Int
+        num = read (ln!!1) :: Int
+        (chunk, remainder) = splitAt len (tail suf)
+        dchunks = decompress2 chunk
+        mulDchunks = [(dl * num, ds) | (dl, ds) <- dchunks]
+        drest = decompress2 remainder
+
+cLength :: [Chunk] -> Int
+cLength = sum . map (clen)
+    where clen (n, t) = n * (length t)
+
diff --git a/adventofcode16/app/advent10.hs b/adventofcode16/app/advent10.hs
new file mode 100644 (file)
index 0000000..70e80e0
--- /dev/null
@@ -0,0 +1,217 @@
+import Text.Parsec hiding (State)
+import Data.Text (pack, unpack, toTitle)
+import Control.Monad.State.Lazy
+import Data.List (partition, findIndices, sort, find)
+import Data.Maybe (fromJust)
+
+data Destination = Bot | Output deriving (Show, Read, Eq)
+-- Rule bot low-destination high-destination
+-- Gift bot value
+data Instruction = Rule { ruleId :: Int 
+                        , lowDestType :: Destination
+                        , lowDestId :: Int
+                        , highDestType :: Destination
+                        , highDestId :: Int
+                        } | 
+                   Gift { giftId :: Int
+                        , value :: Int 
+                        }
+                   deriving (Show)
+
+-- bod id [item1, item2]
+data Place = Place { placeId :: Int
+                   , placeType :: Destination
+                   , items :: [Int]} 
+                   deriving (Show)
+
+-- delivery by bot of low-value and high-value
+data Event = Delivery { deliveryId :: Int
+                      , lowDelivery :: Int
+                      , highDelivery :: Int
+                      } | 
+             Update { updateId :: Int
+                    , updateType :: Destination
+                    , updateItem :: Int
+                    } deriving (Show)
+
+type Factory = ([Place], [Instruction], [Event]) 
+-- data FactorySt History = FactorySt (Factory -> (Factory, History))
+
+emptyFactory :: Factory
+emptyFactory = ([], [], [])
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent10.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions
+    part2 instructions
+
+
+part1 :: [Instruction] -> IO ()
+part1 instructions = 
+    do  let (_, _, events) = snd $  runState (runFactory instructions) emptyFactory
+        -- let (places, instructions, events) = snd finalFactory
+        print $ deliveryId $ fromJust $ findDelivery events 17 61
+
+part2 :: [Instruction] -> IO ()
+part2 instructions = 
+    do  let (places, _, _) = snd $  runState (runFactory instructions) emptyFactory
+        let outs = findOutputs places [0, 1, 2]
+        let product = foldl1 (*) $ concatMap (items) outs
+        print $ product
+
+
+findDelivery :: [Event] -> Int -> Int -> Maybe Event
+findDelivery events lowItem highItem = find (delivery) events
+    where delivery Update {} = False
+          delivery Delivery {deliveryId = bot, lowDelivery = l, highDelivery = h} 
+            | l == lowItem && h == highItem = True
+            | otherwise = False
+
+findOutputs :: [Place] -> [Int] -> [Place]
+findOutputs outputs ids = filter (interesting) outputs
+    where interesting Place {placeId = p, placeType = t, items = i}
+            | (p `elem` ids) && t == Output = True
+            | otherwise = False
+
+
+runFactory :: [Instruction] -> State Factory ()
+runFactory instructions = do
+    addInstructions instructions
+    runInstructions instructions
+
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = ruleL <|> giftL
+
+
+ruleL = 
+    do (string "bot" >> spaces)
+       bot <- many1 digit
+       (spaces >> string "gives low to" >> spaces)
+       lowDestType <- (string "output" <|> string "bot")
+       spaces
+       lowDest <- many1 digit
+       (spaces >> string "and high to" >> spaces)
+       highDestType <- (string "output" <|> string "bot")
+       spaces
+       highDest <- many1 digit
+       let rule = Rule (read bot)
+                   (read $ unpack $ toTitle $ pack lowDestType)
+                   (read lowDest)
+                   (read $ unpack $ toTitle $ pack highDestType)
+                   (read highDest)
+       return rule
+
+giftL = 
+    do (string "value" >> spaces)
+       value <- many1 digit
+       (spaces >> string "goes to bot" >> spaces)
+       bot <- many1 digit
+       let gift = Gift (read bot) (read value)
+       return gift
+
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
+
+
+
+
+addInstructions :: [Instruction] -> State Factory ()
+addInstructions [] = return ()
+addInstructions (i:is) = do
+    addInstruction i
+    addInstructions is
+
+
+addInstruction :: Instruction -> State Factory ()
+addInstruction r@(Rule {lowDestType = ld, lowDestId = li,
+                     highDestType = hd, highDestId = hi}) = 
+    do (places, rules, history) <- get
+       put (places, r:rules, history)
+       addPlace (Place {placeType = ld, placeId = li, items = []})
+       addPlace (Place {placeType = hd, placeId = hi, items = []})
+addInstruction Gift {giftId = g} = 
+    do addPlace (Place {placeType = Bot, placeId = g, items = []})
+
+
+addPlace :: Place -> State Factory ()
+addPlace place = 
+    do  (places, rules, history) <- get
+        if not $ placeElem place places
+            then put ((place:places), rules, history)
+        else return ()
+
+
+runInstructions :: [Instruction] -> State Factory ()
+runInstructions [] = return ()
+runInstructions (i:is) = 
+    do  runInstruction i
+        runInstructions is
+
+
+runInstruction :: Instruction -> State Factory ()
+runInstruction Rule {} = return ()
+runInstruction g@(Gift {}) = 
+    do  updatePlace (giftId g) Bot (value g)
+        propogateUpdates
+
+updatePlace :: Int -> Destination -> Int -> State Factory ()
+updatePlace b d i = 
+    do  (places, instructions, events) <- get
+        let (place0s, otherPlaces) = partition (samePlace (Place {placeId = b, placeType = d, items = []})) places
+        let place = head place0s
+        let place' = place {items = i:(items place)}
+        let update = Update {updateId = b, updateType = d, updateItem = i}
+        put (place':otherPlaces, instructions, update:events)
+  
+
+propogateUpdates :: State Factory ()
+propogateUpdates = 
+    do  (places, instructions, events) <- get
+        let (fullBots, otherPlaces) = fullRobots places
+        if (not . null) fullBots
+            then do let fullBot = head fullBots
+                    let maybeRule = findRule instructions (placeId fullBot)
+                    case maybeRule of
+                        Nothing -> propogateUpdates
+                        Just rule -> do let small:large:_ = sort $ items fullBot
+                                        let emptyBot = fullBot {items = []}
+                                        let delivery = Delivery { deliveryId = placeId fullBot
+                                                                , lowDelivery = small
+                                                                , highDelivery = large
+                                                                }
+                                        put (emptyBot:(tail fullBots) ++ otherPlaces,
+                                             instructions, 
+                                             delivery:events)
+                                        updatePlace (lowDestId rule) (lowDestType rule) small
+                                        updatePlace (highDestId rule) (highDestType rule) large
+                                        propogateUpdates
+            else return ()
+
+
+placeElem :: Place -> [Place] -> Bool
+placeElem place places = (not . null) $ findIndices (samePlace place) places
+
+samePlace :: Place -> Place -> Bool
+samePlace p1 p2 = (placeId p1 == placeId p2) && (placeType p1 == placeType p2)
+
+fullRobots :: [Place] -> ([Place], [Place])
+fullRobots places = partition (\p -> placeType p == Bot && length (items p) >= 2) places
+
+findRule :: [Instruction] -> Int -> Maybe Instruction
+findRule instructions bot = find ruleForBot instructions
+    where ruleForBot Gift {} = False
+          ruleForBot Rule {ruleId = b}
+            | b == bot = True
+            | otherwise = False
diff --git a/adventofcode16/app/advent11.hs b/adventofcode16/app/advent11.hs
new file mode 100644 (file)
index 0000000..0286d77
--- /dev/null
@@ -0,0 +1,137 @@
+module Main(main) where
+
+import Data.List (subsequences, (\\), sort, sortBy)
+import Data.Ord (comparing)
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+-- part1 = print $ length $ init $ extractJust $ hillClimb [[buildingTest]] []
+part1 = print $ length $ init $ extractJust $ hillClimb [[building1]] []
+-- part1 = print $ length $ init $ extractJust $ aStar [[building1]] []
+
+part2 :: IO ()
+part2 = print $ length $ init $ extractJust $ hillClimb [[building2]] []
+
+
+extractJust :: Maybe [a] -> [a]
+extractJust Nothing = []
+extractJust (Just x) = x
+
+hillClimb :: [[Building]] -> [Building] -> Maybe [Building]
+hillClimb [] _ = Nothing
+hillClimb (currentTrail:trails) closed = 
+    if isGoal (head currentTrail) then Just currentTrail
+    else hillClimb newAgenda ((head currentTrail): closed) 
+    where newAgenda = 
+            sortBy (\t1 t2 -> (head t1) `compare` (head t2)) $ 
+            trails ++ (candidates currentTrail closed)
+
+aStar :: [[Building]] -> [Building] -> Maybe [Building]
+aStar [] _ = Nothing
+aStar (currentTrail:trails) closed = 
+    if isGoal (head currentTrail) then Just currentTrail
+    else aStar newAgenda ((head currentTrail): closed) 
+    where newAgenda = 
+            sortBy (\t1 t2 -> (trailCost t1) `compare` (trailCost t2)) $ 
+            trails ++ (candidates currentTrail closed)
+          trailCost t = estimateCost (head t) + length t - 1
+
+
+candidates :: [Building] -> [Building] -> [[Building]]
+candidates currentTrail closed = newCandidates
+    where
+        (candidate:trail) = currentTrail
+        succs = legalSuccessors $ successors candidate
+        nonloops = (succs \\ trail) \\ closed
+        newCandidates = map (\n -> n:candidate:trail) nonloops
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/adventofcode16/app/advent11a.hs b/adventofcode16/app/advent11a.hs
new file mode 100644 (file)
index 0000000..c5349c8
--- /dev/null
@@ -0,0 +1,164 @@
+-- Using the idea of canonical representation of buildings from
+-- https://andars.github.io/aoc_day11.html by Andrew Foote,
+-- plus my extension of represening the pairs as an integer.
+
+-- This version is A* search, using a list for the agenda.
+
+module Main(main) where
+
+import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
+import Data.Ord (comparing)
+import Data.Char (isDigit)
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+data CBuilding = CBuilding Int Integer deriving (Show, Eq)
+data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building0 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+canonical :: Building -> CBuilding
+canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
+    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
+          floorOf (Generator g) = head (findIndices 
+                                                (\fl -> (Generator g) `elem` fl) 
+                                                floors)
+          floorOf (Microchip g) = head (findIndices 
+                                                (\fl -> (Microchip g) `elem` fl) 
+                                                floors)
+          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
+
+
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+part1 = print $ length $ trail $ aStar (initAgenda building1) []
+
+part2 :: IO ()
+part2 = print $ length $ trail $aStar (initAgenda building2) []
+
+initAgenda :: Building -> [Agendum]
+initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
+
+
+aStar :: [Agendum] -> [CBuilding] -> Agendum
+aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
+aStar (currentAgendum:agenda) closed = 
+    if isGoal reached then currentAgendum
+    else if creached `elem` closed 
+        then aStar agenda closed
+        else aStar newAgenda (creached:closed) 
+    where 
+        reached = current currentAgendum
+        creached = canonical reached
+        newAgenda = 
+            sortOn (cost) $ 
+            agenda ++ (candidates currentAgendum closed)
+
+
+candidates :: Agendum -> [CBuilding] -> [Agendum]
+candidates agendum closed = newCandidates
+    where
+        candidate = current agendum
+        previous = trail agendum
+        succs = legalSuccessors $ successors candidate
+        excludable = previous ++ closed
+        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
+        newCandidates = map (\n -> makeAgendum n) nonloops
+        makeAgendum new = Agendum {current = new, 
+                                    trail = (canonical candidate):previous, 
+                                    cost = estimateCost new + length previous + 1}
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/adventofcode16/app/advent11h.hs b/adventofcode16/app/advent11h.hs
new file mode 100644 (file)
index 0000000..d362ee8
--- /dev/null
@@ -0,0 +1,162 @@
+-- Using the idea of canonical representation of buildings from
+-- https://andars.github.io/aoc_day11.html by Andrew Foote,
+-- plus my extension of represening the pairs as an integer.
+
+-- This version is hillclimbing search, using a list for the agenda.
+module Main(main) where
+    
+import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
+import Data.Ord (comparing)
+import Data.Char (isDigit)
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+data CBuilding = CBuilding Int Integer deriving (Show, Eq)
+data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building0 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+canonical :: Building -> CBuilding
+canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
+    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
+          floorOf (Generator g) = head (findIndices 
+                                                (\fl -> (Generator g) `elem` fl) 
+                                                floors)
+          floorOf (Microchip g) = head (findIndices 
+                                                (\fl -> (Microchip g) `elem` fl) 
+                                                floors)
+          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
+
+
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+part1 = print $ length $ trail $ hillClimb (initAgenda building1) []
+
+part2 :: IO ()
+part2 = print $ length $ trail $ hillClimb (initAgenda building2) []
+
+initAgenda :: Building -> [Agendum]
+initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
+
+hillClimb :: [Agendum] -> [CBuilding] -> Agendum
+hillClimb [] _ = Agendum {current=buildingTest, trail=[], cost=0}
+hillClimb (currentAgendum:agenda) closed = 
+    if isGoal reached then currentAgendum
+    else if creached `elem` closed 
+        then hillClimb agenda closed
+        else hillClimb newAgenda (creached:closed) 
+    where 
+        reached = current currentAgendum
+        creached = canonical reached
+        newAgenda = 
+            sortOn (cost) $ 
+            agenda ++ (candidates currentAgendum closed)
+
+
+candidates :: Agendum -> [CBuilding] -> [Agendum]
+candidates agendum closed = newCandidates
+    where
+        candidate = current agendum
+        previous = trail agendum
+        succs = legalSuccessors $ successors candidate
+        excludable = previous ++ closed
+        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
+        newCandidates = map (\n -> makeAgendum n) nonloops
+        makeAgendum new = Agendum {current = new, 
+                                    trail = (canonical candidate):previous, 
+                                    cost = estimateCost new}
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/adventofcode16/app/advent11p.hs b/adventofcode16/app/advent11p.hs
new file mode 100644 (file)
index 0000000..4136e8f
--- /dev/null
@@ -0,0 +1,166 @@
+-- Using the idea of canonical representation of buildings from
+-- https://andars.github.io/aoc_day11.html by Andrew Foote,
+-- plus my extension of represening the pairs as an integer.
+
+-- This version is A* search, using a priority queue for the agenda.
+
+module Main(main) where
+
+import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
+import Data.Ord (comparing)
+import Data.Char (isDigit)
+import Data.Maybe (fromMaybe)
+import qualified Data.PQueue.Prio.Min as P
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+data CBuilding = CBuilding Int Integer deriving (Show, Eq)
+data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
+type Agenda = P.MinPQueue Int Agendum
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building0 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+canonical :: Building -> CBuilding
+canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
+    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
+          floorOf (Generator g) = head (findIndices 
+                                                (\fl -> (Generator g) `elem` fl) 
+                                                floors)
+          floorOf (Microchip g) = head (findIndices 
+                                                (\fl -> (Microchip g) `elem` fl) 
+                                                floors)
+          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
+
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+part1 :: IO ()
+part1 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building1) []
+
+part2 :: IO ()
+part2 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building2) []
+
+initAgenda :: Building -> Agenda
+initAgenda b = P.singleton (estimateCost b) Agendum {current = b, trail=[], cost = estimateCost b}
+
+
+aStar :: Agenda -> [CBuilding] -> Maybe Agendum
+-- aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
+aStar agenda closed 
+    | P.null agenda = Nothing
+    | otherwise = 
+        if isGoal reached then Just currentAgendum
+        else if creached `elem` closed 
+            then aStar (P.deleteMin agenda) closed
+            else aStar newAgenda (creached:closed) 
+        where 
+            (_, currentAgendum) = P.findMin agenda
+            reached = current currentAgendum
+            creached = canonical reached
+            newAgenda = P.union (P.deleteMin agenda) 
+                                (P.fromList $ candidates currentAgendum closed)
+
+
+candidates :: Agendum -> [CBuilding] -> [(Int, Agendum)]
+candidates agendum closed = newCandidates
+    where
+        candidate = current agendum
+        previous = trail agendum
+        succs = legalSuccessors $ successors candidate
+        nonloops = filter (\s -> not $ (canonical s) `elem` closed) succs
+        newCandidates = map (\a -> (cost a, a)) $ map (\n -> makeAgendum n) nonloops
+        makeAgendum new = Agendum {current = new, 
+                                    trail = (canonical candidate):previous, 
+                                    cost = estimateCost new + length previous + 1}
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/adventofcode16/app/advent12.hs b/adventofcode16/app/advent12.hs
new file mode 100644 (file)
index 0000000..906c185
--- /dev/null
@@ -0,0 +1,134 @@
+module Main(main) where
+
+import Text.Parsec hiding (State)
+import Text.ParserCombinators.Parsec.Number
+import Data.List (partition, union, intersect, tails)
+import Data.Char (isDigit)
+import Control.Monad.State.Lazy
+
+data Location = Literal Int | Register Char deriving (Show)
+data Instruction = Cpy Location Location | 
+                   Inc Location |
+                   Dec Location | 
+                   Jnz Location Int
+                   deriving (Show)
+
+data Machine = Machine { a :: Int
+                       , b :: Int
+                       , c :: Int
+                       , d :: Int
+                       , pc :: Int
+                       , instructions :: [Instruction]} 
+               deriving (Show)
+
+emptyMachine :: Machine
+emptyMachine = Machine {a=0, b=0, c=0, d=0, pc=0, instructions=[]}
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent12.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions
+    part2 instructions
+
+
+part1 :: [Instruction] -> IO ()
+part1 instrs = 
+    do  let m0 = emptyMachine {instructions=instrs}
+        let mf = snd $ runState runMachine m0
+        print (a mf)
+
+part2 :: [Instruction] -> IO ()
+part2 instrs = 
+    do  let m0 = emptyMachine {instructions=instrs, c=1}
+        let mf = snd $ runState runMachine m0
+        print (a mf)
+
+
+
+runMachine :: State Machine ()
+runMachine = 
+    do  m <- get
+        if (pc m) >= (length $ instructions m)
+            then return ()
+            else do executeStep
+                    runMachine
+
+executeStep :: State Machine ()
+executeStep = 
+    do  m <- get
+        let i = (instructions m)!!(pc m)
+        put (executeInstruction i m)
+
+executeInstruction :: Instruction -> Machine -> Machine
+executeInstruction (Inc (Register r)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m (Register r)
+          m' = writeValue m (Register r) (v+1)
+executeInstruction (Dec (Register r)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m (Register r)
+          m' = writeValue m (Register r) (v-1)
+executeInstruction (Cpy s d) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m s
+          m' = writeValue m d v
+executeInstruction (Jnz s d) m 
+    | v == 0 = m {pc=pc1}
+    | otherwise = m {pc=pcj}
+    where pc1 = (pc m) + 1
+          pcj = (pc m) + d
+          v = evaluate m s
+          
+
+evaluate :: Machine -> Location -> Int
+evaluate _ (Literal i) = i
+evaluate m (Register r) = 
+    case r of
+        'a' -> (a m)
+        'b' -> (b m)
+        'c' -> (c m)
+        'd' -> (d m)
+
+writeValue :: Machine -> Location -> Int -> Machine
+writeValue m (Literal i) _ = m
+writeValue m (Register r) v =
+    case r of 
+        'a' -> m {a=v}
+        'b' -> m {b=v}
+        'c' -> m {c=v}
+        'd' -> m {d=v}
+
+
+instructionFile = instructionLine `endBy` newline 
+-- instructionLine = choice [cpyL, incL, decL, jnzL]
+instructionLine = incL <|> decL <|> cpyL <|> jnzL
+
+incL = incify <$> (string "inc" *> spaces *> (oneOf "abcd"))
+        where incify r = Inc (Register r)
+decL = decify <$> (string "dec" *> spaces *> (oneOf "abcd"))
+        where decify r = Dec (Register r)
+cpyL = cpyify <$> (string "cpy" *> spaces *> ((many1 letter) <|> (many1 digit))) 
+                  <*> (spaces *> (oneOf "abcd"))
+        where cpyify s r = Cpy (readLocation s) (Register r)
+jnzL = jnzify <$> (string "jnz" *> spaces *> ((many1 letter) <|> (many1 digit))) 
+                  <*> (spaces *> int)
+        where jnzify r d = Jnz (readLocation r) d
+
+
+readLocation :: String -> Location
+readLocation l
+    | all (isDigit) l = Literal (read l)
+    | otherwise = Register (head l)
+
+
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
\ No newline at end of file
diff --git a/adventofcode16/app/advent13.hs b/adventofcode16/app/advent13.hs
new file mode 100644 (file)
index 0000000..86981df
--- /dev/null
@@ -0,0 +1,95 @@
+module Main(main) where
+
+import Data.List ((\\), nub, sortOn)
+import Data.Bits (popCount)
+import Data.Maybe (fromMaybe)
+
+type Pos = (Int, Int)
+
+seed = 1362
+
+goal1 = (31, 39)
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+part1 = print $ length $ tail $ fromMaybe [] $ aStar [[(1, 1)]] []
+
+part2 :: IO ()
+part2 = do print $ length $ tail $ edl 50 [[(1, 1)]] []
+           putStrLn $ showRoomR 30 25 $ edl 50 [[(1, 1)]] []
+
+
+-- extractJust :: Maybe [a] -> [a]
+-- extractJust Nothing = []
+-- extractJust (Just x) = x
+isWall :: Int -> Int -> Bool
+isWall x y = odd $ popCount n
+    where 
+        n = x*x + 3*x + 2*x*y + y + y*y + seed
+
+
+showRoom w h = showRoomR w h []
+
+showRoomR w h reached = unlines rows
+    where 
+        rows = [row x | x <- [0..h]]
+        row x = [showCell x y | y <- [0..w]]
+        showCell x y = if (isWall x y) 
+            then '#' 
+            else if (x, y) `elem` reached 
+                then 'O'
+                else '.'
+
+
+aStar :: [[Pos]] -> [Pos] -> Maybe [Pos]
+aStar [] _ = Nothing
+aStar (currentTrail:trails) closed = 
+    if isGoal (head currentTrail) then Just currentTrail
+    else if (head currentTrail) `elem` closed then aStar trails closed
+         else aStar newAgenda ((head currentTrail): closed) 
+    where newAgenda = 
+            sortOn (\a -> trailCost a) $ 
+            trails ++ (candidates currentTrail closed)
+          trailCost t = estimateCost (head t) + length t - 1
+
+
+-- exhaustive depth-limited
+edl :: Int -> [[Pos]] -> [Pos] -> [Pos]
+edl _ [] closed = nub closed
+edl limit (currentTrail:trails) closed = 
+    if (length currentTrail) > (limit+1) then edl limit trails ((head currentTrail):closed)
+    else if (head currentTrail) `elem` closed then edl limit trails closed
+         else edl limit newAgenda ((head currentTrail):closed) 
+    where newAgenda = trails ++ (candidates currentTrail closed)
+
+candidates :: [Pos] -> [Pos] -> [[Pos]]
+candidates currentTrail closed = newCandidates
+    where
+        (candidate:trail) = currentTrail
+        succs = legalSuccessors $ successors candidate
+        nonloops = (succs \\ trail) \\ closed
+        newCandidates = map (\n -> n:candidate:trail) nonloops
+
+isGoal :: Pos -> Bool
+isGoal p = p == goal1
+
+isLegal :: Pos -> Bool
+isLegal (x, y) = 
+    x >= 0 && y >= 0 && (not $ isWall x y)
+
+successors :: Pos -> [Pos]
+successors (x, y) = [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]
+
+legalSuccessors :: [Pos] -> [Pos]
+legalSuccessors = filter (isLegal)
+
+estimateCost :: Pos -> Int
+estimateCost (x, y) = abs (x - gx) + abs (y - gy)
+    where (gx, gy) = goal1
+
diff --git a/adventofcode16/app/advent14.hs b/adventofcode16/app/advent14.hs
new file mode 100644 (file)
index 0000000..c6c092e
--- /dev/null
@@ -0,0 +1,43 @@
+module Main(main) where
+
+import Data.List (nub, tails, null)
+import Data.Hash.MD5 (md5s, Str(..))
+
+salt = "yjdafjpo"
+-- salt = "abc"
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequence
+
+part2 :: IO ()
+part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequenceS
+
+md5sequence :: [String]
+md5sequence = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = md5s (Str (salt ++ show i))
+
+md5sequenceS :: [String]
+md5sequenceS = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = stretch $ md5s (Str (salt ++ show i)) 
+          stretch h0 = foldr (\_ h -> md5s (Str h)) h0 [1..2016]
+
+possibleKey :: [String] -> Int-> Bool
+possibleKey s = not . null . repeats 3 . ((!!) s)
+
+confirmKey :: [String] -> Int -> Bool
+confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
+    where c = head $ repeats 3 $ s!!i
+          confirmation m = c `elem` (repeats 5 m)
+
+repeats :: Int -> String -> [String]
+repeats n = filter (null . tail) . map (nub) . substrings n
+
+substrings :: Int -> [a] -> [[a]]
+substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/adventofcode16/app/advent14c.hs b/adventofcode16/app/advent14c.hs
new file mode 100644 (file)
index 0000000..ea699ed
--- /dev/null
@@ -0,0 +1,47 @@
+module Main(main) where
+
+import Data.List (nub, tails)
+import Data.ByteString.Char8 (pack)
+import Crypto.Hash (hash, Digest, MD5)
+
+salt = "yjdafjpo"
+-- salt = "abc"
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequence
+
+part2 :: IO ()
+part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequenceS
+
+getHash :: String -> String
+getHash bs = show (hash $ pack bs :: Digest MD5)
+
+md5sequence :: [String]
+md5sequence = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = getHash (salt ++ show i)
+
+md5sequenceS :: [String]
+md5sequenceS = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = stretch $ getHash (salt ++ show i)
+          stretch h0 = foldr (\_ h -> getHash h) h0 [1..2016]
+
+possibleKey :: [String] -> Int-> Bool
+possibleKey s = not . null . repeats 3 . ((!!) s)
+
+confirmKey :: [String] -> Int -> Bool
+confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
+    where c = head $ repeats 3 $ s!!i
+          confirmation m = c `elem` (repeats 5 m)
+                              
+repeats :: Int -> String -> [String]
+repeats n = filter (null . tail) . map (nub) . substrings n
+
+substrings :: Int -> [a] -> [[a]]
+substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/adventofcode16/app/advent14parallel.hs b/adventofcode16/app/advent14parallel.hs
new file mode 100644 (file)
index 0000000..b0ca781
--- /dev/null
@@ -0,0 +1,53 @@
+module Main(main) where
+
+import Data.List (nub, tails)
+import Data.ByteString.Char8 (pack)
+import Crypto.Hash (hash, Digest, MD5)
+import Control.Parallel.Strategies (withStrategy, parBuffer, rdeepseq)
+
+salt = "yjdafjpo"
+-- salt = "abc"
+
+stretch_factor = [1..2016]
+-- stretch_factor = [1..100]
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequence
+
+part2 :: IO ()
+part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequenceS
+
+getHash :: String -> String
+getHash bs = show (hash $ pack bs :: Digest MD5)
+
+md5sequence :: [String]
+-- md5sequence = [makeMd5 i | i <- [0..]]
+md5sequence = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
+    where makeMd5 i = getHash (salt ++ show i)
+
+md5sequenceS :: [String]
+-- md5sequenceS = [makeMd5 i | i <- [0..]]
+md5sequenceS = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
+    where makeMd5 i = stretch $ getHash (salt ++ show i)
+          stretch h0 = foldr (\_ h -> getHash h) h0 stretch_factor
+
+possibleKey :: [String] -> Int-> Bool
+possibleKey s = not . null . repeats 3 . ((!!) s)
+
+confirmKey :: [String] -> Int -> Bool
+confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
+    where c = head $ repeats 3 $ s!!i
+          confirmation m = c `elem` (repeats 5 m)
+                              
+repeats :: Int -> String -> [String]
+repeats n = filter (null . tail) . map (nub) . substrings n
+
+substrings :: Int -> [a] -> [[a]]
+substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/adventofcode16/app/advent15.hs b/adventofcode16/app/advent15.hs
new file mode 100644 (file)
index 0000000..5970bd6
--- /dev/null
@@ -0,0 +1,43 @@
+module Main(main) where
+
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+
+type Disk = (Int -> Bool)
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent15.txt" 
+    let disks = successfulParse $ parseIfile text
+    part1 disks
+    part2 disks
+
+part1 :: [Disk] -> IO ()
+part1 disks = print $ head $ filter (canFall disks) [0..]
+
+part2 :: [Disk] -> IO ()
+part2 disks = print $ head $ filter (canFall disks2) [0..]
+    where disks2 = disks ++ [diskify 7 11 0]
+
+canFall :: [Disk] -> Int -> Bool
+canFall ds i = all (\d -> (d i)) ds
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = diskify <$> (string "Disc #" *> int) 
+                          <*> (string " has " *> int)
+                          <*> (string " positions; at time=0, it is at position " *> int)
+                          <*  (string ".")
+
+diskify :: Int -> Int -> Int -> (Int -> Bool)
+diskify n size pos0 = (\i -> (size + n + pos0 + i) `mod` size == 0)
+
+parseIfile :: String -> Either ParseError [Disk]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Disk
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent15l.hs b/adventofcode16/app/advent15l.hs
new file mode 100644 (file)
index 0000000..67e2ac0
--- /dev/null
@@ -0,0 +1,39 @@
+module Main(main) where
+
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent15.txt" 
+    let disks = successfulParse $ parseIfile text
+    part1 disks
+    part2 disks
+
+part1 :: [[Int]] -> IO ()
+part1 disks = print $ head $ filter (canFall disks) [0..]
+
+part2 :: [[Int]] -> IO ()
+part2 disks = print $ head $ filter (canFall disks2) [0..]
+    where disks2 = disks ++ [drop 7 $ drop 0 $ cycle [0..(11-1)]]
+
+canFall :: [[Int]] -> Int -> Bool
+canFall ds i = all (\d -> (d!!i) == 0) ds
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = diskify <$> (string "Disc #" *> int) 
+                          <*> (string " has " *> int)
+                          <*> (string " positions; at time=0, it is at position " *> int)
+                          <*  (string ".")
+                    where diskify n size pos0 = drop n $ drop pos0 $ cycle [0..(size-1)]
+
+parseIfile :: String -> Either ParseError [[Int]]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError [Int]
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent16.hs b/adventofcode16/app/advent16.hs
new file mode 100644 (file)
index 0000000..88b8b59
--- /dev/null
@@ -0,0 +1,42 @@
+module Main(main) where
+
+import Data.List (nub)
+
+input = "11100010111110100"
+disk1length = 272
+disk2length = 35651584
+
+-- input = "10000"
+-- disk1length = 20
+
+main :: IO ()
+main = do 
+    part1 
+    part2
+
+part1 :: IO ()
+part1 = putStrLn $ checksum $ take disk1length $ expand disk1length input
+
+part2 :: IO ()
+part2 = putStrLn $ checksum $ take disk2length $ expand disk2length input
+
+
+expand :: Int -> String -> String
+expand len a
+    | length a >= len = a
+    | otherwise = expand len $ a ++ "0" ++ b
+        where b = map (invert) $ reverse a
+              invert '0' = '1'
+              invert '1' = '0'
+
+checksum :: String -> String
+checksum digits
+    | odd $ length digits = digits
+    | otherwise = checksum $ map (checksumPair) $ pairs digits
+        where checksumPair p = if (length $ nub p) == 1 then '1' else '0'
+
+
+pairs :: [a] -> [[a]]
+pairs [] = []
+pairs xs = [p] ++ (pairs ys)
+    where (p, ys) = splitAt 2 xs 
diff --git a/adventofcode16/app/advent16i.hs b/adventofcode16/app/advent16i.hs
new file mode 100644 (file)
index 0000000..897559d
--- /dev/null
@@ -0,0 +1,45 @@
+module Main(main) where
+
+input = "11100010111110100"
+disk1length = 272
+disk2length = 35651584
+
+-- input = "10000"
+-- disk1length = 20
+
+main :: IO ()
+main = do 
+    part1 
+    part2
+
+part1 :: IO ()
+part1 = print $ fill disk1length input
+
+part2 :: IO ()
+part2 = print $ fill disk2length input
+
+fill :: Int -> String -> String
+fill len filler = deBool $ checksum $ take len $ expand len $ enBool filler
+
+enBool :: String -> [Bool]
+enBool = map (== '1')
+
+deBool :: [Bool] -> String
+deBool = map (\b -> if b then '1' else '0')
+
+
+expand :: Int -> [Bool] -> [Bool]
+expand len = head . dropWhile ((<= len) . length) . iterate expandStep
+
+expandStep :: [Bool] -> [Bool]
+expandStep a = a ++ [False] ++ b
+        where b = map (not) $ reverse a
+
+checksum :: [Bool] -> [Bool]
+checksum = head . dropWhile (even . length) . iterate checksumStep 
+
+checksumStep :: [Bool] -> [Bool]
+checksumStep [] = []
+checksumStep [x] = [x]
+checksumStep (x:y:xs) = (x==y):(checksumStep xs)
+
diff --git a/adventofcode16/app/advent17.hs b/adventofcode16/app/advent17.hs
new file mode 100644 (file)
index 0000000..e757def
--- /dev/null
@@ -0,0 +1,77 @@
+module Main(main) where
+
+import Data.ByteString.Char8 (pack)
+import qualified Crypto.Hash as C
+
+type Position = (Int, Int)
+data Agendum = Agendum {position :: Position, path :: String, hash :: String} deriving (Show, Eq)
+type Agenda = [Agendum]
+
+-- input = "hijkl"
+-- input = "ihgpwlah"
+
+input = "qljzarfv" -- my input
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+part1 :: IO ()
+part1 = putStrLn $ path $ extractJust $ bfs initialAgenda
+
+part2 :: IO ()
+part2 = print $ bfs2 initialAgenda 0
+
+initialAgenda :: Agenda
+initialAgenda = [Agendum {position=(1, 1), path="", hash=(getHash "")}]
+
+getHash :: String -> String
+getHash path = show (C.hash $ pack (input ++ path) :: C.Digest C.MD5)
+
+extractJust :: Maybe Agendum -> Agendum
+extractJust Nothing = head initialAgenda
+extractJust (Just x) = x
+
+bfs :: Agenda -> Maybe Agendum
+bfs [] = Nothing
+bfs (current:agenda) = 
+    if isGoal current then Just current
+    else bfs (agenda ++ (successors current))
+
+bfs2 :: Agenda -> Int -> Int
+bfs2 [] l = l
+bfs2 (current:agenda) l = 
+    if isGoal current then bfs2 agenda (length $ path $ current)
+    else bfs2 (agenda ++ (successors current)) l
+
+isGoal :: Agendum -> Bool
+isGoal agendum = (position agendum) == (4, 4)
+
+isLegalPos :: Position -> Bool
+isLegalPos p = fst p >= 1 && fst p <= 4 && snd p >= 1 && snd p <= 4
+
+successors :: Agendum -> Agenda
+successors state = [Agendum {position = step p0 ld, 
+                             path = path0 ++ [ld],
+                             hash = getHash (path0 ++ [ld])} | ld <- legalDoors ]
+    where 
+        p0 = position state
+        path0 = path state
+        h0 = hash state
+        doors = openDoors h0
+        legalDoors = filter (isLegalPos . (step p0)) doors
+
+openDoors :: String -> String
+openDoors h = up ++ down ++ left ++ right
+    where
+        up    = if h!!0 `elem` "bcdef" then "U" else ""
+        down  = if h!!1 `elem` "bcdef" then "D" else ""
+        left  = if h!!2 `elem` "bcdef" then "L" else ""
+        right = if h!!3 `elem` "bcdef" then "R" else ""
+
+step :: Position -> Char -> Position
+step (r, c) 'U' = (r-1, c)
+step (r, c) 'D' = (r+1, c)
+step (r, c) 'L' = (r, c-1)
+step (r, c) 'R' = (r, c+1)
diff --git a/adventofcode16/app/advent18.hs b/adventofcode16/app/advent18.hs
new file mode 100644 (file)
index 0000000..2b1462f
--- /dev/null
@@ -0,0 +1,42 @@
+module Main(main) where
+
+import Data.List (tails)
+
+-- input = "..^^."
+-- input = ".^^.^.^^^^"
+input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+-- part1 = putStrLn $ unlines $ map (showRow) $ take 10 $ iterate nextRow $ readRow input
+part1 = print $ length $ filter (not) $ concat $ take 40 $ iterate nextRow $ readRow input
+
+part2 :: IO ()
+part2 = print $ length $ filter (not) $ concat $ take 400000 $ iterate nextRow $ readRow input
+
+readRow :: String -> [Bool]
+readRow = map (=='^')
+
+showRow :: [Bool] -> String
+showRow = map (\c -> if c then '^' else '.')
+
+extended :: [Bool] -> [Bool]
+extended row = [False] ++ row ++ [False]
+
+nextRow :: [Bool] -> [Bool]
+nextRow = map (isTrap) . segments . extended
+
+segments :: [a] -> [[a]]
+segments = filter ((==3) . length) . map (take 3) . tails
+
+isTrap :: [Bool] -> Bool
+isTrap segment
+    | segment == [True, True, False] = True
+    | segment == [False, True, True] = True
+    | segment == [True, False, False] = True
+    | segment == [False, False, True] = True
+    | otherwise = False
diff --git a/adventofcode16/app/advent18f.hs b/adventofcode16/app/advent18f.hs
new file mode 100644 (file)
index 0000000..d1650e6
--- /dev/null
@@ -0,0 +1,50 @@
+module Main(main) where
+
+import Data.List (tails, foldl')
+
+-- input = "..^^."
+-- input = ".^^.^.^^^^"
+input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..40]
+    where row = readRow input
+
+part2 :: IO ()
+part2 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..400000]
+    where row = readRow input
+
+readRow :: String -> [Bool]
+readRow = map (=='^')
+
+showRow :: [Bool] -> String
+showRow = map (\c -> if c then '^' else '.')
+
+extended :: [Bool] -> [Bool]
+extended row = [False] ++ row ++ [False]
+
+nextRow :: [Bool] -> [Bool]
+nextRow = map (isTrap) . segments . extended
+
+nextRowFold :: (Int, [Bool]) -> Int -> (Int, [Bool])
+nextRowFold (n, row) _ = (n + countSafe newRow, newRow)
+    where newRow = nextRow row
+
+countSafe :: [Bool] -> Int
+countSafe = length . filter (not)
+
+segments :: [a] -> [[a]]
+segments = filter ((==3) . length) . map (take 3) . tails
+
+isTrap :: [Bool] -> Bool
+isTrap segment
+    | segment == [True, True, False] = True
+    | segment == [False, True, True] = True
+    | segment == [True, False, False] = True
+    | segment == [False, False, True] = True
+    | otherwise = False
diff --git a/adventofcode16/app/advent19.hs b/adventofcode16/app/advent19.hs
new file mode 100644 (file)
index 0000000..009a07c
--- /dev/null
@@ -0,0 +1,37 @@
+module Main(main) where
+
+import Prelude hiding (length, take, drop)
+import Data.Sequence
+
+-- input = 5 
+input = 3012210 
+
+main :: IO ()
+main = do 
+    part1 
+    part2
+
+part1 :: IO ()
+part1 = print $ 2 * (input - 2 ^ (toInteger (floor $ logBase 2 (fromIntegral input)))) + 1
+
+part2 :: IO ()
+part2 = print $ flip index 0 $ presentSteps initial
+
+presentSteps :: Seq Int -> Seq Int
+presentSteps elves 
+    | isFinished elves = elves
+    | otherwise = presentSteps $ next elves
+
+initial :: Seq Int
+initial = fromList [1..input] 
+
+isFinished :: Seq Int -> Bool
+isFinished elves = length elves == 1
+
+next :: Seq Int -> Seq Int
+next elves = prefix >< (midfix |> suffix)
+    where 
+        target = length elves `quot` 2
+        prefix = drop 1 $ take target elves
+        midfix = drop (target+1) elves
+        suffix = index elves 0
diff --git a/adventofcode16/app/advent20.hs b/adventofcode16/app/advent20.hs
new file mode 100644 (file)
index 0000000..8830c45
--- /dev/null
@@ -0,0 +1,74 @@
+module Main(main) where
+
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.List (foldl')
+
+data Interval = Interval Int Int deriving (Show, Eq)
+
+low :: Interval -> Int
+low (Interval l _) = l
+
+high :: Interval -> Int
+high (Interval _ h) = h
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent20.txt" 
+    let intervals = successfulParse $ parseIfile text
+    part1 intervals
+    part2 intervals
+
+part1 :: [Interval] -> IO ()
+part1 intervals = print $ (+1) $ high $ head $ foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
+
+part2 :: [Interval] -> IO ()
+part2 intervals = do
+    let ints = foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
+    let gapCount = gaps ints
+    let lowGap = low $ head ints
+    let highGap = 4294967295 - (high $ last ints)
+    print (lowGap + gapCount + highGap)
+
+disjoint :: Interval -> Interval -> Bool
+disjoint (Interval a b) (Interval c d)
+    | b < c = True
+    | d < a = True
+    | a > d = True
+    | c > b = True
+    | otherwise = False
+
+intersect :: Interval -> Interval -> Bool
+intersect a b = not $ disjoint a b
+
+merge :: [Interval] -> Interval -> [Interval]
+merge [] i0 = [i0]
+merge (i1:intervals) i0
+    | (high i0) < (low i1) = i0:i1:intervals
+    | intersect i0 i1 = merge intervals (Interval a' b')
+    | otherwise = i1:(merge intervals i0)
+        where a' = minimum [low i0, low i1]
+              b' = maximum [high i0, high i1]
+
+mergeAdjacent :: [Interval] -> Interval -> [Interval]
+mergeAdjacent [] i0 = [i0]
+mergeAdjacent (i1:intervals) i0
+    | high i0 + 1 == low i1 = (Interval (low i0) (high i1)):intervals
+    | low i0 == high i1 + 1 = (Interval (low i1) (high i0)):intervals
+    | otherwise = i1:(mergeAdjacent intervals i0)
+
+gaps :: [Interval] -> Int
+gaps [] = 0
+gaps [_] = 0
+gaps ((Interval _ b):(Interval c d):intervals) = 
+    (c - b - 1) + gaps ((Interval c d):intervals)
+
+intervalFile = intervalLine `endBy` newline 
+intervalLine = Interval <$> int <*> (string "-" *> int)
+
+parseIfile :: String -> Either ParseError [Interval]
+parseIfile input = parse intervalFile "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent21.hs b/adventofcode16/app/advent21.hs
new file mode 100644 (file)
index 0000000..2415974
--- /dev/null
@@ -0,0 +1,198 @@
+module Main(main) where
+
+import Text.Parsec hiding (State)
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (fromJust)
+import Data.List (elemIndex)
+
+import Control.Monad.Identity
+import Control.Monad.State
+import Control.Monad.Writer
+
+data Instruction =    SwapPosition Int Int 
+                    | SwapLetter Char Char
+                    | RotateSteps Int
+                    | RotateLetter Char
+                    | Reverse Int Int
+                    | Move Int Int 
+                    deriving (Show, Eq)
+
+data Log = Log {
+    action :: String
+    } deriving (Show)
+
+data Password = Password {
+    password :: String
+    } deriving (Show)
+
+
+type App = WriterT [Log] (StateT Password Identity)
+
+infixl 9 ??
+
+(??) :: Eq a => [a] -> a -> Int
+(??) items item = fromJust $ elemIndex item items
+
+
+initial = "abcdefgh"
+final   = "fbgdceah"
+
+testInstructions = "\
+\swap position 4 with position 0\n\
+\swap letter d with letter b\n\
+\reverse positions 0 through 4\n\
+\rotate left 1 step\n\
+\move position 1 to position 4\n\
+\move position 3 to position 0\n\
+\rotate based on position of letter b\n\
+\rotate based on position of letter d\n"
+
+main :: IO ()
+main = do 
+    -- let ti = successfulParse $ parseIfile testInstructions
+    -- part1 ti "abcde"
+    -- part2 (reverse ti) "decab"
+    text <- readFile "data/advent21.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions initial
+    part2 (reverse instructions) final
+
+part1 :: [Instruction] -> String -> IO ()
+part1 instructions start = 
+    let st = Password {password = start}
+        ((_, log), st') = runIdentity (runStateT (runWriterT (apply instructions)) st)
+    in do 
+        -- putStrLn $ unlines $ map (action) log
+        putStrLn $ password st'
+
+part2 :: [Instruction] -> String -> IO ()
+part2 instructions end = 
+    let st = Password {password = end}
+        ((_, log), st') = runIdentity (runStateT (runWriterT (unApply instructions)) st)
+    in do 
+        -- putStrLn $ unlines $ map (action) log
+        putStrLn $ password st'
+
+
+apply :: [Instruction] -> App ()
+apply [] = return ()
+apply (i:is) = 
+    do  st <- get
+        let p0 = password st
+        let p1 = applyInstruction i p0
+        put st {password = p1}
+        tell [Log (p0 ++ " -> " ++ p1 ++ " : " ++ (show i))]
+        apply is
+
+
+applyInstruction :: Instruction -> String -> String
+applyInstruction (SwapPosition from to) p0 
+    | from == to = p0
+    | otherwise = prefix ++ [p0!!end] ++ midfix ++ [p0!!start] ++ suffix
+        where start = minimum [from, to]
+              end = maximum [from, to]
+              prefix = take start p0
+              midfix = take (end-start-1) $ drop (start+1) p0
+              suffix = drop (end+1) p0
+
+applyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapPosition (p0??l0) (p0??l1)) p0
+
+applyInstruction (RotateSteps n) p0 = (drop n' p0) ++ (take n' p0)
+    where n' = if n < 0 
+                then (-1 * n)
+                else (length p0) - n
+
+applyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
+    where n = (1 + (p0??l) + if (p0??l) >= 4 then 1 else 0) `mod` (length p0)
+
+applyInstruction (Reverse from to) p0
+    | from == to = p0
+    | otherwise = prefix ++ (reverse midfix) ++ suffix
+        where start = minimum [from, to]
+              end = maximum [from, to]
+              prefix = take start p0
+              midfix = take (end-start+1) $ drop start p0
+              suffix = drop (end+1) p0
+
+applyInstruction (Move from to) p0 
+    | from == to = p0
+    | otherwise = prefix ++ [p0!!from] ++ suffix
+        where without = take from p0 ++ drop (from+1) p0
+              prefix = take to without
+              suffix = drop (to) without
+
+
+unApply :: [Instruction] -> App ()
+unApply [] = return ()
+unApply (i:is) = 
+    do  st <- get
+        let p0 = password st
+        let p1 = unApplyInstruction i p0
+        put st {password = p1}
+        tell [Log (p1 ++ " <- " ++ p0 ++ " : " ++ (show i))]
+        unApply is
+
+unApplyInstruction :: Instruction -> String -> String
+unApplyInstruction (SwapPosition from to) p0 = applyInstruction (SwapPosition from to) p0
+unApplyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapLetter l0 l1) p0
+unApplyInstruction (RotateSteps n) p0 = applyInstruction (RotateSteps (-1 * n)) p0
+unApplyInstruction (Reverse from to) p0 = applyInstruction (Reverse from to) p0
+unApplyInstruction (Move from to) p0 = applyInstruction (Move to from) p0
+unApplyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
+    where n = case (p0??l) of
+                0 -> -1
+                1 -> -1
+                2 ->  2
+                3 -> -2
+                4 ->  1
+                5 -> -3
+                6 ->  0
+                7 -> -4
+    -- where n = case (p0??l) of
+    --             0 -> -1
+    --             1 -> -1
+    --             2 ->  1
+    --             3 -> -2
+    --             4 ->  1
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = choice [ swapL 
+                         , rotateL
+                         , reverseL
+                         , moveL
+                         ]
+
+swapL = (try (string "swap ")) *> (swapPosL <|> swapLetterL)
+
+swapPosL = SwapPosition <$> (string "position" *> spaces *> int) 
+                        <*> (spaces *> string "with position" *> spaces *> int)
+
+swapLetterL = SwapLetter <$> (string "letter" *> spaces *> letter) 
+                         <*> (spaces *> string "with letter" *> spaces *> letter)
+
+rotateL = (try (string "rotate ")) *> (rotateDirL <|> rotateLetterL)
+
+rotateDirL = rotateStepify <$> ((string "left") <|> (string "right"))
+                           <*> (spaces *> int <* spaces <* skipMany letter)
+    where rotateStepify dir n = case dir of 
+                                     "left" -> (RotateSteps (-1 * n))
+                                     "right" -> (RotateSteps n)
+rotateLetterL = RotateLetter <$> (string "based on position of letter " *> letter)
+
+reverseL = Reverse <$> (string "reverse positions" *> spaces *> int)
+                   <*> (spaces *> (string "through") *> spaces *> int)
+
+moveL = Move <$> (string "move position" *> spaces *> int)
+             <*> (spaces *> (string "to position") *> spaces *> int)
+
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent22.hs b/adventofcode16/app/advent22.hs
new file mode 100644 (file)
index 0000000..f2e084a
--- /dev/null
@@ -0,0 +1,156 @@
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort, sortOn, reverse)
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord)
+
+data SearchState = SearchState { cx :: Int
+                               , cy :: Int 
+                               , grid :: [Node]
+                               } deriving (Show)
+instance Ord SearchState where
+    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
+instance Eq SearchState where
+  s1 == s2 = equivalentState s1 s2
+
+equivalentState :: SearchState -> SearchState -> Bool
+equivalentState s1 s2 =
+    let h1 = fromJust $ find (\n -> used n == 0) $ grid s1
+        h2 = fromJust $ find (\n -> used n == 0) $ grid s2
+      in
+        cx s1 == cx s2 && cy s1 == cy s2 && 
+                    x h1 == x h2 && y h1 == y h2
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    part1 sizes
+    part2 sizes
+
+part1 :: [Node] ->  IO ()
+part1 sizes = print $ length viable
+    where viable = [(a, b) | a <- sizes, 
+                             b <- sizes, 
+                             a /= b,
+                             (used a) > 0,
+                             (used a) <= (available b)]
+
+
+part2 :: [Node] ->  IO ()
+part2 sizes = 
+    -- do let testSizes = successfulParse $ parseFile testGrid
+    --    putStrLn $ searchTraceH $ reverse $ aStar [[startSt testSizes]] []
+       print (26 + 26 + 29 + 5 * 36)
+
+
+aStar :: [[SearchState]] -> [SearchState] -> [SearchState]
+aStar [] _ = []
+aStar (currentPath:agenda) closed = 
+    if isGoal reached then currentPath
+    else if reached `elem` closed 
+        then aStar agenda closed
+        else aStar newAgenda (reached:closed) 
+    where 
+        reached = head currentPath
+        successorPaths = map (:currentPath) $ successors reached
+        newAgenda = sortOn (cost) $ successorPaths ++ agenda 
+
+
+searchTrace :: [SearchState] -> String
+searchTrace ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ")"
+
+searchTraceH :: [SearchState] -> String
+searchTraceH ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
+          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
+          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
+
+startSt :: [Node] -> SearchState
+startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
+    where xs = map (\n -> x n) nodes
+
+isGoal :: SearchState -> Bool
+isGoal st = cx st == 0 && cy st == 0
+
+adjacent :: Node -> Node -> Bool
+adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
+
+-- A move of data from n1 to n2 is legal.
+legal :: Node -> Node -> Bool
+legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
+
+heuristic :: SearchState -> Int
+heuristic st = (cx st) + (cy st)
+
+successors :: SearchState -> [SearchState]
+successors st = map (newState st current) possibleMoves
+    where nodes = grid st
+          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
+          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
+
+
+-- Moving data from n1 to n2
+newState :: SearchState -> Node -> (Node, Node) -> SearchState
+newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
+    where cx' = if current == n1 then x n2 else x current
+          cy' = if current == n1 then y n2 else y current
+          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
+                        (n1 {used = 0, available = (size n1)}):
+                        (delete n1 $ delete n2 (grid st))
+
+cost :: [SearchState] -> Int
+cost p = (heuristic $ head p) + (length p)
+
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent22library.hs b/adventofcode16/app/advent22library.hs
new file mode 100644 (file)
index 0000000..bad3621
--- /dev/null
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort)
+import Data.Graph.AStar
+import Data.Hashable
+import qualified Data.HashSet
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord, Generic)
+instance Hashable Node
+
+data SearchState = SearchState { cx :: Int
+                               , cy :: Int 
+                               , grid :: [Node]
+                               } deriving (Show, Eq, Generic)
+instance Hashable SearchState
+instance Ord SearchState where
+    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    part1 sizes
+    part2 sizes
+
+part1 :: [Node] ->  IO ()
+part1 sizes = print $ length viable
+    where viable = [(a, b) | a <- sizes, 
+                             b <- sizes, 
+                             a /= b,
+                             (used a) > 0,
+                             (used a) <= (available b)]
+
+
+part2 :: [Node] ->  IO ()
+part2 sizes = 
+    -- do let testSizes = successfulParse $ parseFile testGrid
+    --    putStrLn $ searchTrace $ fromJust $ 
+    --                 aStar successors 
+    --                         (\_ _ -> 1) 
+    --                         heuristic
+    --                         isGoal
+    --                         (startSt testSizes)
+    putStrLn $ searchTrace $ fromJust $ 
+                    aStar successors 
+                            (\_ _ -> 1) 
+                            heuristic
+                            isGoal
+                            (startSt sizes)
+
+
+
+searchTrace :: [SearchState] -> String
+searchTrace ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
+          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
+          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
+
+startSt :: [Node] -> SearchState
+startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
+    where xs = map (\n -> x n) nodes
+
+isGoal :: SearchState -> Bool
+isGoal st = cx st == 0 && cy st == 0
+
+adjacent :: Node -> Node -> Bool
+adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
+
+-- A move of data from n1 to n2 is legal.
+legal :: Node -> Node -> Bool
+legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
+
+heuristic :: SearchState -> Int
+heuristic st = (cx st) + (cy st)
+
+successors :: SearchState -> Data.HashSet.HashSet SearchState
+successors st = Data.HashSet.fromList $ map (newState st current) possibleMoves
+    where nodes = grid st
+          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
+          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
+
+
+-- Moving data from n1 to n2
+newState :: SearchState -> Node -> (Node, Node) -> SearchState
+newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
+    where cx' = if current == n1 then x n2 else x current
+          cy' = if current == n1 then y n2 else y current
+          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
+                        (n1 {used = 0, available = (size n1)}):
+                        (delete n1 $ delete n2 (grid st))
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent22search.hs b/adventofcode16/app/advent22search.hs
new file mode 100644 (file)
index 0000000..32ada24
--- /dev/null
@@ -0,0 +1,156 @@
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort, sortOn, reverse)
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord)
+
+data SearchState = SearchState { cx :: Int
+                               , cy :: Int 
+                               , grid :: [Node]
+                               } deriving (Show)
+instance Ord SearchState where
+    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
+instance Eq SearchState where
+  s1 == s2 = equivalentState s1 s2
+
+equivalentState :: SearchState -> SearchState -> Bool
+equivalentState s1 s2 =
+    let h1 = fromJust $ find (\n -> used n == 0) $ grid s1
+        h2 = fromJust $ find (\n -> used n == 0) $ grid s2
+      in
+        cx s1 == cx s2 && cy s1 == cy s2 && 
+                    x h1 == x h2 && y h1 == y h2
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    part1 sizes
+    part2 sizes
+
+part1 :: [Node] ->  IO ()
+part1 sizes = print $ length viable
+    where viable = [(a, b) | a <- sizes, 
+                             b <- sizes, 
+                             a /= b,
+                             (used a) > 0,
+                             (used a) <= (available b)]
+
+
+part2 :: [Node] ->  IO ()
+part2 sizes = 
+    -- do let testSizes = successfulParse $ parseFile testGrid
+    --    putStrLn $ searchTraceH $ reverse $ aStar [[startSt testSizes]] []
+       print $ length $ aStar [[startSt sizes]] []
+
+
+aStar :: [[SearchState]] -> [SearchState] -> [SearchState]
+aStar [] _ = []
+aStar (currentPath:agenda) closed = 
+    if isGoal reached then currentPath
+    else if reached `elem` closed 
+        then aStar agenda closed
+        else aStar newAgenda (reached:closed) 
+    where 
+        reached = head currentPath
+        successorPaths = map (:currentPath) $ successors reached
+        newAgenda = sortOn (cost) $ successorPaths ++ agenda 
+
+
+searchTrace :: [SearchState] -> String
+searchTrace ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ")"
+
+searchTraceH :: [SearchState] -> String
+searchTraceH ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
+          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
+          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
+
+startSt :: [Node] -> SearchState
+startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
+    where xs = map (\n -> x n) nodes
+
+isGoal :: SearchState -> Bool
+isGoal st = cx st == 0 && cy st == 0
+
+adjacent :: Node -> Node -> Bool
+adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
+
+-- A move of data from n1 to n2 is legal.
+legal :: Node -> Node -> Bool
+legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
+
+heuristic :: SearchState -> Int
+heuristic st = (cx st) + (cy st)
+
+successors :: SearchState -> [SearchState]
+successors st = map (newState st current) possibleMoves
+    where nodes = grid st
+          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
+          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
+
+
+-- Moving data from n1 to n2
+newState :: SearchState -> Node -> (Node, Node) -> SearchState
+newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
+    where cx' = if current == n1 then x n2 else x current
+          cy' = if current == n1 then y n2 else y current
+          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
+                        (n1 {used = 0, available = (size n1)}):
+                        (delete n1 $ delete n2 (grid st))
+
+cost :: [SearchState] -> Int
+cost p = (heuristic $ head p) + (length p)
+
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent22showgrid.hs b/adventofcode16/app/advent22showgrid.hs
new file mode 100644 (file)
index 0000000..aec4309
--- /dev/null
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort, sortOn, reverse)
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord)
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    let maxX = maximum $ map (\n -> x n) sizes
+    let maxY = maximum $ map (\n -> y n) sizes
+    putStrLn $ unlines $ map (showRow maxX sizes) [0..(maxY-1)]
+
+
+showRow maxX sizes r = map (charOf) row
+  where row = sortOn (\c -> x c) $ filter (\c -> y c == r) sizes
+        charOf c = if (used c) == 0 
+                      then '+'
+                      else if (used c) > 100
+                              then '#'
+                              else '_'
+
+
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/data/advent01.txt b/adventofcode16/data/advent01.txt
new file mode 100644 (file)
index 0000000..62fb6e8
--- /dev/null
@@ -0,0 +1 @@
+R2, L3, R2, R4, L2, L1, R2, R4, R1, L4, L5, R5, R5, R2, R2, R1, L2, L3, L2, L1, R3, L5, R187, R1, R4, L1, R5, L3, L4, R50, L4, R2, R70, L3, L2, R4, R3, R194, L3, L4, L4, L3, L4, R4, R5, L1, L5, L4, R1, L2, R4, L5, L3, R4, L5, L5, R5, R3, R5, L2, L4, R4, L1, R3, R1, L1, L2, R2, R2, L3, R3, R2, R5, R2, R5, L3, R2, L5, R1, R2, R2, L4, L5, L1, L4, R4, R3, R1, R2, L1, L2, R4, R5, L2, R3, L4, L5, L5, L4, R4, L2, R1, R1, L2, L3, L2, R2, L4, R3, R2, L1, L3, L2, L4, L4, R2, L3, L3, R2, L4, L3, R4, R3, L2, L1, L4, R4, R2, L4, L4, L5, L1, R2, L5, L2, L3, R2, L2
\ No newline at end of file
diff --git a/adventofcode16/data/advent02.txt b/adventofcode16/data/advent02.txt
new file mode 100644 (file)
index 0000000..799cb46
--- /dev/null
@@ -0,0 +1,5 @@
+RDRRDLRRUDRUUUULDDRDUULLDUULDURDDUDRULDLUDDRLRDUDDURRRRURDURLLRDRUUULDLLLURDRLLULLUULULLLDLLLRRURRLRDUULRURRUDRRDRLURLRURLLULRUURRUURDDLDRDLDLLUDUULLLUUUUDULLDRRUURLDURDDDDDRLLRRURDLUDRRUUDLRRLLRDURDUDDDLRDDRDLRULLUULRULRLLULDDRURUUDLDDULDRLLURDDUDDUDRDUDLDRRRDURRLDRDRLDLLDUDDDULULRRULRLLURDRRDDUUUUUULRUDLRRDURDLRDLUDLDURUDDUUURUDLUUULDLRDURDLDUUDLDDDURUUDUUDRLRDULLDUULUDRUDRLRRRDLLDRUDULRRUDDURLDRURRLLRRRDRLLDLULULRRUURRURLLUDRRLRULURLDDDDDURUDRRRRULLUUDLDDLUUL
+ULURUDLULDULDLLDDLLLDRRLLUDRRDRDUDURUDLRRRRUDRDDURLRRULLDLURLDULLUDDLUDURDUURRRRLDLRLDDULLRURLULLDDRUDLRRRLDRRRDLDRLLDDRRDDLUUDRUDDLULRURLDURRLLDLRUDLLRRUULUDRLLLRLDULURRRRRDDUURDRRUUDULRUULDDULRLUDLUDDULLRLRDDLRLLURRRULDLRRRUURRLDDRDLRDLRRDRDLDRDUDRDURUUDRLRRULRDLLDLLRRRDRLDRLRLRLLLURURDULUUDDRLLDDDRURRURLRDDULLRURUDRRDRLRRRLDLRLRULDRLUURRUUULRLDLLURLLLDLLLDRRDULRURRRRLUDLLRRUDLRUDRURDRRDLUUURRDLRLRUUUDURDLUDURRUUDURLUDDDULLDRDLLDDDRLDDDRLDLDDDDUDUUDURUUDULRDDLULDRDRLURLUDRDLUULLULRLULRDDRULDUDDURUURULUDLUURLURU
+URLURDDRLLURRRLDLDLUDUURDRUDLLLRRDLUUULRRLURRRLUDUDLRLDDRUDLRRRULUDUDLLLULULLLRUDULDDDLLLRRRLRURDULUDDDULDLULURRRDLURDLRLLDUDRUDURDRRURULDRDUDLLRDDDUDDURLUULLULRDRRLDDLDURLRRRLDRDLDULRULRRRLRLLDULRDLURLRUUDURRUUDLLUDRUDLRLDUUDLURRRDDUUDUDRLDLDDRURDDLLDDRDLRLRDLLLUDLUUDRLRLRDDRDLRDLLUULLLLUULLDLLDLRDLRLRRLUUDLLRLRUDRURULRLRLULUDRLLUDDUDDULRLDDRUUUURULDRRULLLDUURULUDRLLURLRRLDLRRLDDRRRDUDDUDLDDLULUDDUURDLLLRLDLRDRUUUUUDDDLDRDDRRRLRURRRRDURDRURUDLURRURDRLRUUDDLDRRULLDURDRLRRDURURUULRDUDLDRDDLULULRDRRUDDRLLRLULRLLUUDRDUUDDUDLRUUDLLUULLRUULUDDLURRRLLDRLRRLLRULLDUULURLLLLUUULDR
+LDUURULLRLDRRUUDUUUURUUUDDDURRDDLRDLLRDDRULDDUURUDDURLLUDRDUDRDULDRRRLULUDRULLLLDRLLDRDLDLLRURULUDDDDURDDDRLLUDLDRULRDLDUDDDUUDLLRLLLDLRLRLRRUDDULDDDUDLDDLUDDULDLLLLULLLLDDURDDURRRDDRLRLLUDLLUDDDUDURUDRLRDRULULDDRULDLULULLRUULRLDULUURRDRDRRDLDDDRRLUULDLUDRDDUDLRURULLDDURLDDRULUDLDDDRDRLLRDLLUURRRURDRLRURLDDLURDRURDDURLLRLRUDUUDLDUDURRDDURDRDDUDDDUDUURURDDLLRUUDDRRDULDDLLDLRULUULRUUDLLDRLULDULDDUDLULRULDRLLDUULDDDLRLLRLULDDULDDRRRLDRRLURULRDDRDLRRDUDDRDRRRRUDUDLLRRDRRURRUURDRULDDUDURLUDDURDUDRDUULLDRURUURURDRRLDDLDLUURLULRUDURDRUUURRURRDRUDRUURDURLRULULLLULDLLDLRRLDRDLUULUDDDLRDRLRLDRUDUDRLLRL
+LURLUURLURDUUDRUDLDLLURRRDLDRRRULDDRRDRDUUDRUDURDDDURLUDDLULUULRRLLRULUDRDDRRRLDURDUDDURDDDLRLDDLULLDRDDLUUDUURRRLULRUURRRRLLULDUDRDUURRRURRDRDUDUDLUDULLDLDDRLUDRURDULURLURRLLURLLLRLUURLRUDLUDDRLURRUULULRLURRURUDURDLDLDDUDDRDLLRLLRRULDDRUDURUDDDUDLLRDLRUDULLLRRRUURUDUUULLRDUDRURUDULLDLLUUUDRULRLLRRDDDDUDULDRDRLLDDLLDDDURRUDURLDLRDRUURDDURLRDRURLRRLLRLULDRRLRUDURDUURRLUUULUDDDLRLULRDRLLURRRDLURDUUDRRRLUURRLLUDLUDLUULLRRDLLRDDRURRUURLDDLRLRLRUDLDLRLRDRRDLLLRDLRDUDLLDDDRD
\ No newline at end of file
diff --git a/adventofcode16/data/advent03.txt b/adventofcode16/data/advent03.txt
new file mode 100644 (file)
index 0000000..40c03ca
--- /dev/null
@@ -0,0 +1,1734 @@
+  330  143  338
+  769  547   83
+  930  625  317
+  669  866  147
+   15  881  210
+  662   15   70
+  273  277  707
+   50  592  770
+  280  313  407
+  642  487  372
+   94  619  295
+  734  243  141
+  220  141  515
+  198  824  745
+  210  787  964
+  213  627  601
+  918    4  447
+  805  630  802
+  711  237  987
+  938  552  388
+  643  405  779
+  803  747  525
+  917  832  631
+  899  292  843
+   81  206  445
+  141  874  465
+  177  974   54
+  520  725  814
+  271  958  554
+  779  579  264
+  358   18  257
+  978   77  270
+  984   88  131
+  475  702  940
+  183  756  160
+  383  941  820
+  806  142  646
+  793  275  804
+   53  272  368
+  942  821  785
+  863  830  902
+  219   52  199
+  473  479  351
+  860  522  361
+  890  240  216
+   94  756  407
+  310  189  468
+  234  909  178
+  889  667  756
+  429  485  730
+  825  405   30
+  943  806  253
+   98  455  365
+  998  454  290
+  971  576  223
+   64  429  273
+  945  779   63
+  352  960   59
+  672  948  577
+  782   43  567
+  460  315  719
+  825  604  183
+  453  442  788
+  694  632  334
+  569  619  317
+  337   49   17
+  878  468  660
+  393  598  717
+  550  827  159
+  540  362  346
+   66  713  380
+  491  477   44
+  411  114  320
+  554   96  250
+  306   67  196
+  769  553  333
+  762  436  382
+  278  322  153
+  894  603  334
+  539  441  844
+  486  162  927
+  197    9  218
+   94  221  804
+  250  220  913
+  557  626  486
+  562  705  630
+  968  922  285
+  518   36  468
+   18  608   83
+  512  611  530
+  534   37   65
+  621  136   90
+  239  113  139
+  371  640  956
+  629   54  959
+  531  620  338
+  682  499  810
+  798  170  968
+  187  640  645
+  660  535  332
+  663  530  314
+   64   26   65
+   55  285  488
+  620  288   52
+  642  474  450
+  455    9  962
+   51  760  489
+  426  760  833
+  304  783  772
+  498  765  695
+  635   53  126
+   44  430  774
+  979  943  838
+  962  892   64
+  494  709  614
+    7  695  120
+  503  114  606
+  362  340  689
+  509  367  389
+  673  410  664
+  773  262  558
+  897  958  245
+  140  773  483
+  965  468  584
+  546  209  668
+  856  381  184
+  274  237  762
+  888  677  906
+  871  516  405
+  102  529  912
+  285  724  885
+  352  501   53
+  774  139  245
+  380  309  594
+  813  185  765
+  530  645  965
+  958  618  120
+  851  202  957
+  737  476  131
+  595  546  108
+  716  113   66
+  327  215  318
+  397  343  390
+  351  143  103
+  138   91   31
+  108  224  919
+  230  276  896
+  426  975  177
+  327  975  918
+  238  365  764
+  328  799  775
+  590  906  967
+  578  460  338
+  507  619  647
+  711  617  867
+  933  478  734
+  820  760  721
+  199  711  824
+  983  214  228
+  382  150  648
+  415  782  242
+  615  754  445
+  693  689  590
+  382  784  482
+  997  181  322
+  682  241  172
+  587  302  252
+  184  135  254
+  574  104  549
+   88  738  796
+  486  715  861
+   62  491  815
+  463  434  569
+  519  622  310
+  199  443  782
+  572  657   85
+  763  517  844
+  750  175  835
+  228  269  710
+  611  316  551
+  883  546  296
+  169  693   18
+  992  743  316
+  263  529  529
+  705  570    4
+  918  706  527
+  609  285  971
+  260  533  112
+  711  486  904
+  820   40  472
+  997  301  129
+  257  288  343
+  635  439  375
+  560  381  417
+  773  105  145
+   58  963  267
+  976  742  424
+  994  441  384
+  389  770  514
+  782  463  335
+  919  727  276
+  780  794  372
+  326  180  590
+  918  946  257
+  889  842  181
+  507   61  464
+  762  835  443
+  827  607  982
+  174  875  544
+  934  885  589
+   32  343  757
+  987  826  257
+  981  782  844
+  446  291  397
+  443  800  421
+  165  668  539
+  410  373  487
+  422  803  881
+  546  998  953
+  291  607  160
+  919  894   62
+  842  718  117
+  110  816  582
+  470  836  596
+  575  687   35
+   37  835  374
+   90  954  354
+  101  141  407
+  174  398  499
+  173  737  964
+    4  365  950
+  946  616  634
+  906  904  619
+   40  789   16
+  788  769   76
+  737  867   88
+  565  812   31
+  508  380  201
+   34  935  339
+  500  862  326
+  431  181  475
+  403  346  585
+   88  530  708
+  731  137  781
+  715  563  272
+  817  659  932
+  396  368  360
+  162  683  376
+  278  620   39
+  525  910  371
+  688  524  149
+  488  998  279
+  286  392  523
+  325  144  406
+   79  532  419
+  540  460  465
+  222  832  416
+  517  507   46
+   87  744  183
+  382  819  701
+  306  763  647
+  744   74  913
+   62  813  849
+  691  874  775
+  291  422  314
+  432  630  809
+  611  510  566
+  583  745  289
+  397   19  727
+  188  766  442
+   96  108  329
+  963  719  598
+  963  764  469
+  444  636  731
+  792  636  422
+  993    1  416
+  518  300  532
+  298  312  736
+  316  111  463
+  825  569   35
+  858  591  584
+  809   84  607
+  681  610  740
+  383  279  210
+  851  733  615
+  287  959  160
+  856  851  171
+  606  115  211
+  310  541  845
+  506  119  319
+  665  471  562
+  382  885  798
+  440   29  595
+  113  903  475
+  257  773  846
+  306  741  776
+   97  804   76
+  489  332  423
+  466  632  613
+   86  739  481
+  199  846  712
+   62  282  809
+  155  681  142
+  705  525  270
+  159  800  117
+  612  664  316
+  505  616  837
+  578  839  770
+  942  535  122
+  542  781  512
+  552   22  475
+  760  791   97
+  432  626  837
+   26  616  336
+  412  316  702
+  108  232  242
+  158  311  449
+   60  141  325
+   58    1  714
+  532  977  123
+  531  978  598
+  679  899   57
+  645  523   54
+  167  892   14
+  164  574  492
+  105   37  491
+  132  555  485
+  600  879  508
+  608  843  222
+  270  255  398
+  232  960  281
+  241  995  436
+  113  674  411
+  381  567    5
+  697  450  966
+  726  857  969
+  722  686  965
+  543   20  453
+  955  689  554
+  858  161  923
+  140  979  953
+  786  836  237
+  200  322  875
+  311  623  398
+  510  814  945
+   67  387  825
+  621  620  740
+  630  842  163
+  545   75  373
+  506  531  501
+  301  571  357
+  746  491  253
+   37   29  748
+  769  507  754
+   69  886  861
+  423  629  856
+  380  723   83
+  875  647  657
+  144  696  580
+  896   49  629
+  275  598  374
+  118  636  279
+  277   80  529
+  623  130  493
+  368  712  621
+  833  730  512
+   59  767  829
+  105  933  731
+   54  240  108
+  803  235  992
+  837  726  881
+  426  855  450
+  636  730  731
+  840  561  977
+  996  229  670
+  508  234  186
+  529  108  917
+  373  337  795
+  681   35  565
+  790  251  152
+  301  235  599
+  875  416  653
+  277  338  990
+  800  207  595
+  954  650  896
+  931  667  706
+   84  851  822
+  254  778  816
+  316  141  732
+  233  759  239
+  546  473  315
+   69   15   96
+  513  470  320
+  460  188  729
+  429  950  288
+  709  807  790
+  456  161  570
+  269  718  339
+  213  628  602
+  155  367  686
+  176  418  568
+   66  251  723
+  959  696  536
+  794  279  885
+  315  527  993
+  603  853  868
+  727  747  994
+  411  287  193
+  528  763  559
+  803  149  739
+  542  883  696
+  275  676  183
+  411  317  161
+  349  875   35
+   39  729  221
+  256  831  216
+  247  238  176
+  399   59  306
+  409  445  550
+    9  387  253
+  613  204  474
+   81  868  944
+  589  912  735
+  319  264   83
+  984  704  614
+  778  614  532
+  699  762  556
+  680  250  507
+  504  581  647
+  160  351  295
+  513  739  413
+  651  915  651
+  878  218  499
+  872  990  503
+   38  886   12
+  218  201  415
+  240  250  504
+  265  448  382
+  402  876  126
+  488  950  649
+  189  210  597
+   24  850  758
+   30  451  347
+    5  437  723
+  634  310  546
+  801  179  411
+  679  338  852
+  385   32  933
+  406  531  554
+   88  516  871
+  860  486  834
+  467  535  849
+  419  820  785
+  206  649  526
+  244  499  714
+   80  774  678
+  336  149  612
+  310  175  656
+  150  221  791
+  159  806  701
+  336  465  530
+  376  819  272
+  533  472  421
+   82  124  909
+  523  561  539
+  844  811  576
+  439  612  587
+  782  457  686
+  152   51  837
+  413  573  855
+  403  608   26
+  893  819  910
+  361  499  657
+  677  937  617
+  428    6  343
+  310   38  431
+  474   35  420
+  574  256  221
+  700  907  515
+  149  685  478
+  206  325  720
+  114   51   67
+  320  338  686
+  293   59  527
+  147  756  986
+  250  697  573
+  968  194  545
+  542  480   72
+  454  574  619
+  473   55  592
+  475  339  889
+  884  313  993
+  125  127  742
+  591  514  585
+  543  583  282
+  264  580  390
+  839  487  781
+  902  664  868
+  334  459  819
+  107   20  211
+  368  479  775
+  683  691  273
+  681  336  630
+   22  978  536
+  926  828  708
+  210  319  723
+  787  689  866
+  854  633  856
+  960  494  866
+  122  687  596
+  918  705  539
+   84  564  791
+  876  138  949
+  836    1  500
+  718  308  466
+  228  311  271
+  421  998  433
+  622  772  174
+  875  720  432
+  680  687  509
+  215   95  623
+  674  732  166
+  198  174  645
+  721  839  390
+  617  896  448
+   73  331  155
+  789  134  431
+  853  376  400
+   82  862  411
+  779  362   70
+  750  777  349
+  674  604  224
+  812  731  446
+  280  546  336
+  922  781  619
+  196  892  876
+  941  361  479
+  344  988  873
+  499   92  795
+  287  913  546
+  625  167  604
+  617    1  399
+  154  166  720
+  328  323  111
+  713  619  530
+  606  756  580
+  194  247  935
+  149   65   64
+   55  287  902
+  870  866  127
+  478  679  587
+  900  459  565
+  563  787  743
+  962  798  769
+  669   39  525
+  745  691  317
+  484  123   93
+  500  598  348
+  159  535  681
+  618  176  877
+  723  373  464
+  304  184  131
+  542  209  654
+  716   47  647
+  976  537  771
+  914  606  568
+  241  250  481
+  616  640  660
+  744  187  843
+  303  617  927
+  369  525  773
+  754  697  360
+  595  560  605
+  562  589  610
+  799  497  655
+  823  553  532
+  937  502  449
+  976  941  158
+  194  720  347
+  474  694  822
+  528  184  272
+  922  698  568
+  415  889  638
+  169  822   65
+  547  281  663
+  582  167  110
+  365   56  914
+  431  162  923
+  473  812  578
+  572  890  386
+  164  119  308
+  604  946  496
+  327  142   72
+  641  916  472
+  743  663  228
+  107  446  345
+  823  486  152
+  997   47  968
+  565  155  631
+  438  205  416
+  271  163  875
+  123  393  111
+  169  412  854
+  615  683  659
+  592  362    9
+   99  895  668
+  834  205  172
+  359  355  550
+  499  149  389
+  755  298  916
+  475  706  807
+  829  425  118
+   43  527  479
+  159  473  874
+  151  326  992
+  970  660  509
+  837  930   35
+  164  345  506
+  209  879  487
+   97  157  503
+  289  755  793
+  624  897  293
+  382  134  451
+  257  917  339
+  110  168   85
+  470  583  139
+  486  613  120
+  584  747  795
+  959  699  339
+  866  384  672
+  157  639  464
+  939  485  409
+  947  441  131
+  179  953  581
+  735  587  605
+  834  582   36
+  304  422  707
+  195  348  347
+  163  521  486
+  948  471  675
+  915  453  406
+   40  345  635
+   81  124  115
+  127  105  127
+   50   32   10
+  221  399  397
+  487  676  412
+  574  607  450
+  268  625  323
+  843  858  145
+  706  286  218
+  822  168  254
+  950  708  944
+  572  640  775
+  958  563  909
+  996  154  918
+  378  626  564
+  335  823  339
+  499  810  270
+  294   22   98
+  987  959  591
+  101  899  442
+  931  409  576
+  542  102  655
+  404  980  398
+  759  990  381
+  692  990  750
+  752   93  149
+  278  973  883
+  621  459  232
+  398  261  626
+  221  212  744
+  790  241  352
+  802  218  317
+  443  294  244
+  393  131  941
+  466  378  885
+  516  419  240
+  799  748  407
+  468  502  386
+  829  329  766
+  432  376  408
+  681   88  198
+  553  351  489
+  234  717   59
+  332  525  675
+  437  691  723
+  441  834  433
+  616  144  274
+  966  911  650
+  254  274  782
+  346  714  856
+  330  696  171
+  394  407  298
+  897  553  867
+  755  503  956
+  253  840  382
+  923  195  262
+  918  735  483
+   55  703  227
+  768  759  225
+  825  238   14
+    7  479  978
+  211  603  957
+  216  866   94
+  112  698   60
+  847  631  307
+  940  164  253
+  406  133   14
+  380  816  425
+  147  873  429
+  698  987   98
+  534  823  691
+  197  690  754
+  979   39  468
+  928   73  531
+  119   66  920
+  982  810  569
+  476  534  397
+  931  366  182
+  783  104  732
+  131   32  619
+  784  136  530
+   16  933  484
+  995  987  739
+  985   88  977
+   43  919  914
+  540  399  915
+  566  859  257
+  639  419   73
+  727  118  865
+  477  370  834
+  293  434  155
+  422  557  603
+  203  243  754
+  373   15  748
+  466  574  807
+  282  576   70
+  275  365  608
+  987  644  648
+  711  629  717
+  420  410  696
+  252  417  874
+  642   26  202
+  223   23  531
+  545  580  675
+  565  600  521
+  130  745  142
+  264  377  397
+  300  618  253
+  683  331  279
+  440  826  275
+  835  785  266
+  592  264  590
+  257  255  173
+  532   23  620
+  571  749  434
+  988  552  492
+  566  766  234
+  617  818  776
+   45  113  882
+  579  793  114
+  971  243  608
+  979  241  241
+  130   83  634
+   91  361    5
+  311  107  501
+  377  388  496
+  727  849  317
+  323  702  256
+  804  254  189
+   70   11  246
+  752  425  785
+  799  413  882
+  917  133  695
+  959   49  902
+  420  121  412
+  177  170  158
+  828  734  135
+  880  875   75
+  824  556  960
+  857  689  960
+   74  951    2
+  246  687  756
+  311   93  487
+  209  626  886
+   17  545  566
+  963  252  283
+  947  493  805
+  185  493  462
+  728  365  885
+  808  214  528
+  582  780  100
+   30  254  654
+  596  706  553
+  713  968  803
+  123  270  839
+  792  778  475
+  442   95  682
+  931  212  678
+  781  140  439
+  651  645  978
+  137  829  286
+  593  503  895
+  642  215  144
+  687  122  934
+   84  240  919
+  656  515  774
+   51  799  273
+  636  324  924
+  213  161  309
+  509  157  458
+  582    1  727
+  716  269  819
+  978  343  303
+  828  264  708
+  108  620  190
+   12   12  634
+  103  615  579
+  364  286  660
+  809  714  656
+  729  504   10
+  994  366  341
+  433  796   77
+  663  462  353
+  776  687  758
+  751  495  651
+   33  751  753
+  349  919  228
+  204  799  584
+  335  156  563
+  725  191  535
+  731  676  524
+  455  571   10
+  899  379  689
+  773  641  812
+  324  761  421
+  354  557  897
+  571  740  161
+  407  271  856
+  886  393  428
+  286  870  218
+  950  819  347
+  331  847  858
+  498  471  689
+  357  378  775
+  890  503  514
+  201  863  428
+  721  737  796
+  636  178  974
+   14  387  936
+  622  424  144
+   82  201  727
+  127  164  779
+  173  319  326
+  195  748  641
+  469  512  510
+  626  949  405
+  552  542  251
+  192  204  382
+  655  558  631
+  970  519    3
+  918  701  399
+   56  543  403
+  524  848  641
+  620  431  539
+  604  473  824
+  369  105  464
+  575  957  429
+  859  978  199
+  712  381  199
+  941  305  738
+  892  663  937
+  653  963  365
+   70  331  508
+  620  923  682
+  739  122  350
+  288  418  768
+  733  326  520
+  694  472  793
+  725  415  739
+  895  398  201
+  500  157  168
+  727  814  354
+  807  726  340
+  431  329  212
+  635  374  403
+  677   78  347
+  386  559  505
+  385  361  161
+  262  494  621
+  481  237  767
+  318  966  640
+  723  732  546
+  911  652  823
+  958  502  677
+  718  258  834
+   98  666  506
+  929   41  933
+  869  637  605
+  585  156  335
+  490  316  149
+  436  339  323
+  596  948  224
+  275  433  241
+  545  890  155
+  601  413  676
+  893  401  673
+  694  171  403
+  211  110  482
+  267   61  541
+  206  124  256
+  189  353  308
+  351  880   70
+  237  677  380
+  759  754  388
+  465   99  862
+  852  787  925
+  758  890  804
+  252  817  784
+  773  129  860
+  954  102  872
+  743  396  730
+  500  304  173
+  492  399  527
+  413  465  813
+  670  837  933
+  897  424  430
+  782  404   14
+  151   24  418
+  897  260  306
+  811  287  386
+  440   93  449
+  229  185  582
+  136   63  678
+  211  250  940
+  184  400  209
+  122  383  238
+  143  386  111
+  320  194  415
+  925  790  501
+  924  596  614
+  606  733  277
+  886  116  194
+  278  627  189
+  225  536  981
+  487  538  584
+  539    2  793
+  219  456   57
+  341  424  941
+  199  482  921
+  231  241  588
+  711  740  334
+  596  554  323
+  917  164  629
+   19  138  756
+  939   70  225
+  536  432  401
+  137  614   14
+  593  818  402
+  871  280  515
+  268  259  326
+  900   97  376
+   68  699  461
+  546  810  400
+  540  697  676
+  591  125  751
+  159  719  919
+  605  763  898
+  171  845  459
+  115  289  376
+  265  636  317
+  646  225   84
+  663  755   89
+  192  828   12
+  316  523  822
+  310  933  784
+   44  721  873
+  893  873  461
+  898   15  548
+   96  861  726
+    9  837  398
+  238  404   29
+  227  845  428
+  770  764  472
+  960  747  784
+  990  281  811
+   59  597  111
+  930  799  729
+  930  882  758
+  459  961  116
+  484   83  914
+   83  969  994
+  828  423  132
+  346  541  246
+  783  484  303
+  983    7  921
+  216  208  905
+  802  216   54
+    6  121  306
+  609   36  749
+  608   84  626
+   97  705   89
+  200  688  878
+  242  314  802
+  294   66  338
+  768  417  272
+  785  351  266
+   58  505  668
+  791  291  679
+  783  694   43
+  794  468  355
+  777  796  171
+  378  784  426
+  224  510  840
+  557  606  708
+  513  127  189
+  231  976  517
+  772   37  433
+  684  973  324
+   70  661   83
+  914  136  702
+  917  630  710
+  826  894   84
+  373  416  248
+  551  924  226
+  357  646  374
+  890  491  246
+  938  293  519
+   66   42  704
+  537   60  374
+  508   56  405
+  437  751  653
+  681  718  160
+  683  293  800
+  569  288  878
+  692  206  611
+  173  157  399
+  201  492  645
+   98  132  329
+  234  612  711
+  296   54  975
+  651  219  923
+  527  177  138
+  585  598  302
+  552  653  474
+   54  288  358
+  828  631  279
+  854  642  746
+   80   52  645
+  386  346  181
+  488    7  569
+  168  351  533
+  906  186  681
+  833  404  191
+  863  297  526
+  451  555  808
+  336  544  155
+  253  211  838
+  759  819  238
+  921  343  761
+  264  632  690
+  165  424  159
+  121  481  361
+  181  409  439
+   94  972  995
+  696  904  722
+  613  238  422
+  190  281  334
+  385  127  129
+  300  364  234
+  479  768  937
+  883  654   35
+  979  679  959
+  244   51  788
+  275  613  804
+  143  575  210
+  160  168  608
+  330  471  651
+  407  594  410
+  723  576  943
+  268  912  361
+  692  442  760
+  443  288   20
+  382  610  556
+   62  694  568
+  322  257  214
+  253  458  861
+  260  213  829
+   37  137  420
+  668  220  104
+  673  150  435
+  551  466  897
+  390  729  999
+  423  963  763
+  837   36  295
+  854  726  495
+   16  728  389
+  735  246  510
+  218  136  617
+  604  197  140
+  113  355  499
+  631  902  488
+  689  898  212
+  780  826  901
+  556  205  657
+  855  661  288
+  141   34  480
+   27   23  194
+  115   53  393
+  333  287  700
+   68  300  671
+  394  589   28
+  572  248  771
+  454  118  797
+  526  141  300
+  785  377  504
+  886  723  105
+  541  712  470
+  156  128  932
+  479   85  989
+  381  207  162
+  813  839  544
+  143  783  541
+  916  361   24
+  878  133  886
+  986  750  335
+  122  643  864
+  395  460  591
+  387  896  627
+  117  455  109
+    2   14  569
+  873  364  215
+  875  350  554
+   70  878  940
+  234  846   82
+  256  279  901
+  693  990  473
+  951  866  824
+  923  408  891
+   36    5  531
+  954  654  266
+  921  652  434
+  561  701  427
+  232  764  365
+  330  331   73
+   46  813    6
+  380  698  297
+  396  221  289
+  135  867  633
+  814  649  286
+  797  918  827
+  705   58  338
+    6  305  310
+  701  352   28
+  903   97  825
+  693  126  794
+  438  144  592
+  367  932  400
+  320  820  264
+  687  210  652
+  682   84  566
+  671  604  816
+  529  646  267
+  795  654  114
+  955  426  118
+  249  759  102
+  343  581  267
+  341  619  107
+  479   57  341
+  683   32  870
+  630  609  210
+  361  643  803
+  506  856  406
+  580  562  359
+  312  433  154
+  750  379  920
+  448  520  312
+  733  259  899
+   33  786  319
+  579  669   90
+  595  769  242
+  160  985  236
+  654  903  946
+  635   99  802
+   75  158  437
+  467  382  289
+  406  542  548
+  684  417  794
+  729  105  122
+   44  485  689
+  737   15  713
+  970  391   17
+  373  384  729
+  336    1  118
+  814  807  759
+  965  808  828
+  179  181  834
+  242   94  838
+  188  183   82
+  691  402  618
+  984   43  561
+  330  447  872
+  553  581   30
+  884  393  836
+  431  298  837
+  278  389  690
+  976  587  803
+  722  220  538
+  548  208  107
+  629  414  729
+  543  584  672
+  512  431  954
+  475  367  959
+  226  306    9
+  824  774  668
+  188   22  870
+  722  764  300
+  647  803  256
+  410  972   21
+  436  536  278
+  995  577  453
+  670  439  224
+  434  488  572
+   82  317  498
+  559  823  662
+  499  614  196
+  944   14  432
+  618  866  652
+  467  872  289
+  471  722  189
+  923  756   17
+  790  409  195
+  511  500  545
+  667  283  758
+  271  373  283
+  573  686  490
+  659  706  560
+  770  247  633
+  424  169  895
+   47  349  411
+  380  235  805
+  384  546  148
+  747  870  831
+  754  421  910
+  937   15  433
+  188  760  806
+  872  748  418
+  718  556  510
+  165  590  486
+  798   40  177
+  349  923  530
+  795  690  746
+  550  671  360
+  824  442  775
+  331  686  152
+  570  270  926
+  860   64  383
+  408  464  170
+  758  440  349
+  773  434  699
+  780  563  352
+   18  644  621
+  432  663  188
+  420  887  956
+  237  586  788
+  319  526  586
+  544  647  115
+  628  235  511
+  666  408   33
+  670  459  697
+   48  189  692
+  837  708  428
+  462  652  632
+  426  106  457
+  730  744  195
+  700  816  769
+  383  480  923
+  601  612  910
+  559  953  779
+  533  937  240
+  464  123  344
+  579   82   76
+  179  188  373
+    1  641   56
+  688  698   50
+  688  160    4
+  790  364  767
+  202   70  137
+  914  420  674
+  961  657  851
+  578  708  875
+  503   94  776
+  221  143  356
+   34  126  403
+  234   31   78
+  721  949  330
+  675  191  460
+   80  957  651
+  690  580  824
+  461   73  802
+  725  606   51
+  183  857  521
+  708  800  482
+  644  111   37
+  769  778  869
+  883  693  909
+  549  714   43
+  273  246  599
+  637  309  675
+  451  195  552
+  681  408  126
+  422  465   52
+  743  235  144
+  248  586  312
+   42  398  313
+  222  335   21
+  528  312  738
+  856  312  132
+  915   79  610
+  550  605  186
+  566  815  698
+  127  250  717
+  532  129  775
+  604  132  549
+  134   44  247
+  521  815  470
+  370  853  515
+  795  187  851
+  963  295   50
+  757  228  169
+  706  303  120
+  416  133  309
+  956   63   11
+  751  162  301
+  387  632   29
+  257  383  994
+  215  247  994
+  529  606  963
+  770  305  756
+  721  791  971
+  558  531  675
+  253  477  918
+  470   52  615
+  256  335   24
+  301  523  651
+  316  702  637
+  321  721   32
+  591  730  179
+  341  364  146
+  673  120  501
+   31  183  207
+  641  116  463
+  221   54  775
+  262  458  669
+  139  486  904
+  736  260  139
+  406  359  663
+  434  563  753
+  981    6  215
+  423  320  358
+  719  319  415
+  315  375  320
+    7  637  423
+  314  365  175
+  199  687  754
+  174  546    1
+   29  526  754
+  153  402  251
+  787  565  919
+  820  239  876
+  994  614   47
+  958  816  288
+  244  750  275
+  248  890  694
+  628  194  414
+  774  958  466
+  181   34  442
+  569  371  939
+  500  347  740
+  745  123  467
+  614  662  119
+  201  690  352
+  596  974  215
+  508  921  240
+  405  947  317
+  402  372  733
+  298   41  357
+  135  339  759
+  544  683  690
+  584    1  893
+  215  680  501
+  191  453  649
+  952   84  727
+  815  494  293
+  163  168   46
+  136  119  441
+  185  112  474
+  877  830  354
+  497  242  226
+  484  714  178
+  854  570  402
+  873  120  432
+   30  613   50
+  365  529  624
+  969  332  586
+  636  617  153
+  588  669  314
+   12   52  628
+  584  704  642
+   95  199   69
+  979  486  705
+  953  391  698
+  698  471  333
+  302  466   64
+  678   19  376
+  353  860  905
+  236  113  797
+  400  879  962
+  341  805  493
+  661  506  196
+  736  357  644
+  943  352  365
+  484  756  282
+  491  943  262
+  765  494  729
+  321  208  986
+  621  346  290
+  258  706  386
+  179  452  276
+  433  583  153
+  708    2  212
+  193  151  320
+  647  149  299
+  335  951  831
+  661  787  792
+  818  742  477
+  799  964  157
+  726  780  172
+  740  225   24
+  428   39  263
+  388  901  506
+   97  940  413
+   41  454  826
+  324  453  443
+  346   76  938
+  463  595  751
+  854  948  454
+  451  902  507
+  722  961  130
+  695  529  425
+   59  591  467
+  559  623  222
+  991  194  196
+  749  793  245
+  474  327  247
+  346    2  277
+  643  328  135
+  785  264  751
+   35  537  887
+  811  584  685
+  475  903  748
+  471  115  698
+    7  945  449
+  464  880  227
+  287  868  878
+  564   11  850
+  221  623  475
+  314  325  553
+  209  865  621
+   39  655  236
+   95  296  235
+  124  920   21
+  439  473  902
+  334  375  792
+  315  116  768
+  267  736   95
+  703  606  595
+  505  886  514
+  114  168   52
+  301  584  495
+  200  709  527
+  164  422  554
+  246  546  460
+  377  141  223
+  286  323  354
+  810  240   90
+  920  450  425
+  277    8  570
+   28  649   50
+  295  650  534
+  690  187  665
+  674  184  483
+   68  139  376
+  570  430  500
+  590  422  543
+  304   68   43
+  422  666  163
+  501  375  696
+   81  621  813
+   19  981  945
+  410   83  941
+  427  945   25
+  283  408  825
+  281  648  635
+  294  678  615
+  113  936  500
+  554  772  314
+  502  642  624
+  262  318  699
+   88  526  817
+  242  468  161
+  820  179  253
+  580   62  531
+  343  183  422
+  430  161  485
+   26  127  435
+  442   32  517
+  491  243  544
+  552  680  310
+  131  489  457
+  697  162  526
+  897  838  305
+  695  748  335
+  753  936   24
+   46  681  637
+  745  808  617
+  318  251  171
+   49   39  855
+  359  284  725
+  221  837  145
+  581  821  444
+  573  267  318
+  706  969  583
+  722  912  586
+  680   86  869
+  833  546   97
+  865  507  481
+  938  104  386
+  941  217  265
+  360   53  607
+  634  197  476
+  787  659  444
+  368  163  783
+  493  738  345
+  182  539   52
+  764  827  612
+  699  493  663
+  914  384   17
+  495  546  260
+  739  461  275
+  386   91  394
+  804  506  198
+  780  421  269
+  109  669  193
+  457  298  349
+  560  800  331
+  282  153  637
+  160  254  807
+  434  204  476
+  717  759  737
+  629  785   65
+  347  614  790
+  270  663  647
+  188  271  528
+  277  929  591
+  853  744  589
+  704  881  761
+  573  714  627
+  541  689  287
+  540  301  187
+  670  397  368
+  867    8  698
+  869  146  802
+   10  137  104
+  164  575  450
+  507  233  466
+  548  425   46
+  435  824   78
+  334  951   34
+  646  551   99
+   60  829  569
+  501  866  382
+  440  327  222
+  744  132  333
+  800  983  126
+  887  866  451
+   28  599   39
+  833  129  307
+  804  519  319
+  510  746  821
+  639  209  561
+  197  649  333
+  638  644  361
+  754  474  366
+  193  219  106
+  843  536  331
+  483  634  611
+  367  195  592
+  753   71  115
+  934   42   83
+  337   75   85
+  475  304  169
+  672  143  211
+  360  406   74
+  370  119  111
+  351  955  696
+  543  849  785
+  375  576  836
+  288  316  239
+  512  273  786
+  721  407   82
+  998  634  292
+  449  399  284
+  540  316  693
+  430   68  984
+  146  376  482
+  785  134  643
+  157  509  441
+  808  615  552
+  920  564  452
+  407  341  441
+  990  778  211
+  822  325  925
+  368  206  876
+  491  153  126
+   11  373  546
+  854  752  143
+  843  773  660
+  777  472  964
+  359  708  889
+  575  941  882
+  945   22  152
+  968  237  115
+   30  238  110
+  101  504  412
+  119  646  719
+   28  190  336
+  890  301  712
+   11  657  782
+  885  465  361
+  424  669  645
+  528  654  194
+  894  252  667
+  516  299  998
+  370  837  976
+  305  651  194
+  701  447  175
+  470  234  929
+  752  606  965
+  568  370  322
+  226  592  281
+  553  801  330
+  576  228  623
+  639  477  637
+  252  664  998
+  781  215  994
+  446  698   25
+  562  500  980
+  702  444  299
+  971  550  387
+  754  562  439
+  347  896  716
+  242  861  596
+  588  829  323
+  464  211  949
+  481  192   47
+  598   98  963
+  932  960   32
+  933  482  893
+   15  989  888
+  866  735  629
+  636  513  470
+  280  528  944
+  531   66  867
+  284  735  865
+  778  743    3
+  458  131  262
+  772  273  255
+  942  278   50
+  269  151  917
+  502    4  883
+  538  155   68
+  929  850   21
+  126  759  729
+  869  689  711
+  180  359  855
+  299   68  975
+  210  371  205
+  477  183  827
+  922   50  841
+  665  154  312
+  379  848  486
+  450  835  743
+   69  161  515
+  680  535   83
+  692  779  352
+  818  554  389
+  781   89  538
+  746  218  209
+  292  201  652
+  417  375  393
+  916  962  644
+  518  923  561
+  915  469  386
+  142  460  454
+  947  392   89
+  144  840  866
+  205  465  967
+  209  657  650
+  891  322  207
+  800  522  907
+  516  498  994
+  185  806  804
+  179  393  137
+  316  765  892
+  850  756  123
+  494  783  627
+  832   53  659
+   93  949  602
+  666  954  516
+  592   11  210
+  223    4  389
+  221  280  388
+  100  279   50
+  380  589  345
+  385  238  382
+  205  506  359
+   98  280  652
+  396  371  290
+  314  477  454
+  368  692  564
+   48  263  586
+  356  902  922
\ No newline at end of file
diff --git a/adventofcode16/data/advent04.txt b/adventofcode16/data/advent04.txt
new file mode 100644 (file)
index 0000000..8f99f7a
--- /dev/null
@@ -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]
\ No newline at end of file
diff --git a/adventofcode16/data/advent06.txt b/adventofcode16/data/advent06.txt
new file mode 100644 (file)
index 0000000..4a1a2a6
--- /dev/null
@@ -0,0 +1,624 @@
+focdealm
+ggsipflx
+rvibwxbm
+vqrfyyrh
+hsjtzpgs
+ozymxpoy
+jiecwags
+lztseufl
+dfwibwsn
+skiuhnwl
+kamgzqog
+axeqncwa
+gobivxto
+nwgoryhd
+tzrlitrq
+uzoldxbv
+zsteobha
+pfcgdqkg
+prcqlunp
+iwivemkh
+vpkilupm
+ewuznabz
+veaptost
+cyvirffe
+ejhhqfng
+ibsqztgg
+xzczkboh
+bckhbodf
+vbycgonv
+esmoyyku
+unccgdgj
+cqwnqlzs
+edoqmykb
+bkvzlhyq
+yzrspisn
+zlzibhca
+povnweaf
+muyfegxe
+oaojqfrl
+gwesjxws
+rjknfyeh
+dkquvctc
+cfuzhxoj
+tdzzzfqc
+lzjzsyni
+wjfxckkf
+xmhyjhop
+kmtllzxs
+yohearbj
+ilmvyxgn
+erczytzw
+kuetjsba
+vwkpollq
+tujwluzc
+jlvedjcp
+acmoaoji
+gqoliyen
+agckavhf
+ottamfdm
+jxwlyotw
+tdpsrapj
+carwwmqc
+ykaipjdj
+zdfrbduu
+vwiiosud
+uoixglbw
+yegbwxjb
+wbpqqqfv
+wpynmyqi
+aqdkscgd
+oghnbnnf
+duftexbb
+ttvbofay
+jferymwy
+hqzimpiq
+sifyogml
+nymxqbws
+dhdlhhqp
+urtuhcrj
+giwcunfq
+fxgretsl
+maihqkpk
+pdxfkcru
+xixtthag
+vuzxqzzi
+wxxeleug
+xpopxkzo
+hgcsyuad
+xcbydxnx
+kxocfakp
+erxdajeq
+tliakzhh
+iygbbuxs
+qlgqthpp
+duzzptwk
+gfnqdotc
+kjayxeqf
+fehitfar
+yemshppn
+igtczmmw
+gfajhxch
+bslzmgwo
+xpmhmirx
+yhlwlupt
+nymajupw
+tlhgdefw
+bqkudizc
+lucrhmnm
+svkoaqzz
+luggfivf
+ckawtiwy
+eeivawhj
+qdmmmvdl
+quezzzqa
+oimsfsuo
+jdvcknqu
+aupohqbk
+llwsasnz
+zlpljtjl
+xfylqxlv
+zqppxkul
+varoizrq
+yxryqwso
+gsscetca
+gcbdgqyo
+hsdnvteo
+pxtoreoc
+rwjdkwzs
+zdgofynf
+polyntkx
+jhulgrnf
+ycbzpdpw
+bzvdbwsy
+vydjbucs
+rxadwwuo
+ccnvzjak
+nombazjc
+lbxwdasr
+cbdlkiha
+sdomdvow
+phjnkkkp
+nmtmrnyz
+nxsvmcwk
+hqimjvir
+vmjhhuuv
+zilhgqlb
+gfgbibgg
+imxxugfe
+wtaffkbj
+lyguqvjs
+pejslhls
+qjnefwii
+oanqnnnc
+kcjyfwxm
+zoxjwxmw
+ihmokcrm
+uebsbhfr
+fxvjiorr
+ebjiucyt
+ofutlokv
+mdfnsuyr
+dzviwqdk
+umwyaijz
+hdqwfalt
+qtyrouwh
+lkzcrtwa
+dtqvwzke
+buplmmca
+xxepjuvj
+omyotlar
+ytndbwhi
+sbntigym
+mphrnsme
+xiymeoxr
+kcujxcih
+bydnchgk
+snwdjlip
+yljsymtv
+tyhbpoab
+zlqhvzxl
+akbtnzop
+xnpjmysj
+znhednen
+vbcsocrm
+ywjajour
+ejngbqev
+rstykfhc
+cbcnoexq
+mzlxvxwj
+vfdqaalp
+nbszzozr
+dqpyojid
+hfuqilbl
+uoackeup
+shqkcsmr
+jbdasroe
+fmlkvsnt
+cnomxkvk
+unbsfncq
+bnzxltxe
+bbadfyin
+skmhtmhn
+xkypwglb
+flbfiioo
+fzywneyg
+srngxbut
+qtodeuxg
+xvawfqli
+nyfmrdsn
+rdjysbxj
+spmezvvj
+ofoivcuc
+touzgqzx
+mfqyzagc
+dmaurbdv
+gqnrlyuw
+wuppusoh
+qgstihuy
+uldnlrpi
+xaskgwim
+djjrphid
+qjhmctyu
+osfenjdn
+zvoahhkk
+xiuyatyn
+fepobmjh
+kmugpjpw
+aikpozqs
+kmgmazif
+gbzlodzb
+hrocqadn
+noekklwb
+vzwhnkvx
+osrspxsc
+iekmqgua
+xeehndee
+quttqjav
+htoptweo
+cyicmwba
+jltlwlyy
+qvccdkig
+bibggekq
+kwfwvrfg
+eycwlcup
+murgcddl
+lyukeubx
+twbpzoyg
+dkcvzele
+fozhtmcz
+frugeivm
+qjbhpdpr
+tgkkeroo
+ryuvgqgc
+jhixykqn
+wsebmcrn
+wohtjpgu
+isflpxxt
+xggwmamk
+tfwdsrfe
+cpjvcghr
+fekhexdb
+zcwzqofh
+awnfiqzu
+ihekvqby
+rqaqajij
+cumouwzx
+ccyrflxd
+rredygrk
+patcpktn
+mjnwuefa
+tuhgyfsw
+mjpxrgkx
+hupfjqxo
+mgkclcrf
+jkmkhkci
+nkcrwgqd
+apmfiqpg
+pxiawshv
+ledhpfaz
+btikmkwj
+jwosopir
+mgxftcte
+phkbcdex
+uakftnbh
+fnkmdecn
+swrvbjwj
+hphskevf
+trnpfdmy
+odvmmqss
+akvqgemq
+zyqlkwdm
+nbnaqjsa
+mbnogzyt
+mchaxjxu
+tcqqerqz
+ayylasgq
+zqbrjfli
+ccjjnfat
+lvlpdjqu
+luiabalt
+qsvkepvz
+dtyobsiy
+jkulvrnc
+thwjbzkh
+vvhrwbkx
+fhxejrff
+bacuriaz
+grmtyude
+feynnckb
+hfdepyjn
+lvsfflyc
+xfrgfgeh
+vqqybtba
+ntlfjqjt
+zadauvmg
+itukkpqf
+mrnnfgmf
+hpjqvppo
+dshgwmgb
+pzxeoymv
+nlokvrio
+cgcaxffl
+dvimsnxu
+iczcvwho
+lkxumswj
+satmovog
+ujwknitl
+halkgpaa
+pnttnodc
+adsvsumi
+jwerfpko
+yhsjqytk
+vpevemez
+yvjmltwj
+vdoeippw
+siouxait
+ftrspdpx
+hptwqlmz
+haewgrft
+watbdvqz
+eiptzrvr
+msvbioso
+dnjeoucg
+qixvmlem
+mqquklfq
+sszagakl
+khfbexqb
+uysydrlc
+inawynse
+whuonlhq
+eshukapj
+vtrepdxm
+pgjjcisd
+puiunlts
+replddlv
+emjyyhmd
+aahwhond
+laneyzsj
+jnlkdpyb
+sqxrctuo
+wmmyybvl
+ldyvqldz
+bzbrsdjr
+ekxwhzte
+gnpqywzz
+afsfbtte
+ggkbrgds
+dlawfrbp
+opypolpc
+cqpxcfgh
+ynmtlgvl
+slfmicyv
+ooguwxjc
+tewmtlty
+wcdwansw
+ktercyvw
+qrgxrzne
+wvbhflls
+dpfjwbmm
+uigmcaow
+ejzhkxic
+fbewvcoh
+jxbtcmwn
+ywiktjqn
+rftnjqpp
+yalixnnw
+srdsiwgy
+pdpdrynx
+ioroheqp
+vpvvnmad
+tqksxfsp
+snzxciua
+nrhtoskm
+crfvapzk
+wndbcxvf
+syffkzmv
+nneibkaf
+unuvhnli
+ujhdjkvs
+gmyqgvdr
+jedfxwje
+bcshopnu
+xgiprhyv
+onibkkoq
+riguljez
+yodzrfeu
+ogbwakaa
+ymrltbxa
+ourmuhrx
+yxwixtuv
+ptnxdvdm
+oskvgexz
+fbigwiaw
+xctckzmy
+khwiyvmw
+qbqbtxpr
+kavzlngz
+bbklqvzt
+rwlzppbq
+upirhhca
+ezlaqdgo
+ieuynchi
+qmjtojzq
+qrricseq
+hxkrsfmw
+nssfpnws
+tiaziudb
+rvskpahe
+pplmppvi
+jxpyidio
+teudseap
+aclyhavi
+yqafhkyd
+drjhcqgu
+zvfcfbjc
+sqfuuezn
+gwtsupqk
+czakgbiy
+wknfzbyj
+ooxwycji
+wxymanlx
+ewbtpqtl
+jmwnxydh
+ceqdllqb
+jhdbejmt
+mazzsanu
+uypyqlvh
+itnrzbie
+miuegdjz
+tqxeipin
+kbareizb
+jgjxrycy
+epshhech
+oicruxsz
+ptxgidha
+bmgnvjtr
+qvwzlmgq
+cvwtdffi
+ibzasmru
+jfenrbjd
+nrkgwvcz
+hlmghdgd
+emhdaicl
+wdwrzocv
+spwjcrud
+dsgilvqn
+phvmafqk
+iiihsfff
+uvcqgtyc
+doxkrzzw
+hktdpsbv
+evqojani
+kzapomdx
+ewtbrdtb
+rgshzyxq
+ltinzxld
+cazrrlcu
+irfxunbt
+rmqcsbvm
+gddexbsb
+qladhkpd
+xlvzpmab
+wirftlbu
+fxfqjubx
+sgogtrcb
+zlqxxwfy
+djgtbihr
+gslssgsu
+wytydgje
+vmovsmdh
+ogyiuirh
+mtfxzrrx
+kcpfbemc
+blreqhel
+zjsjqqyh
+ciqwtpvk
+yjcinpaa
+wxbxagui
+aqbjqmig
+ybaeuhew
+mjzpnttv
+mevjcrqp
+fpmgzgco
+gklesvof
+jzfssvvx
+aynfmwhl
+euosbnhf
+lcebcalt
+kvsuuyyt
+ltranzur
+nlledtpz
+vqdrgckr
+yodxnjpt
+uyznwnni
+ckczwqkp
+uxtjgoee
+otdoyaxg
+lbccbfgi
+mhzjujrp
+cekkthvf
+fbvpuhog
+nzfannep
+rnnqusey
+aiocsiyy
+uvcbtfwr
+bzqirxrg
+qnmfgshq
+inyevvbn
+wswvhglx
+huxqxwwb
+fdutjnfq
+adajhsjk
+ahllesij
+tcfawzgu
+zfdgmtry
+byznvpfp
+duunxdad
+kgadxmdf
+ptfaovzv
+uhuvlivs
+xcoqrmeu
+nnnlvmga
+zwrbykek
+lvpumidd
+hieivrnt
+vrwqsvci
+npbplsvm
+ougzcgty
+rzvgzooo
+iehafkto
+rzspzjne
+dzvvhvld
+fgkmmfda
+xjsnnlmd
+igvjrsuk
+narcempo
+xrhoiugu
+ghxbpomr
+waxtcbcg
+tmqgsejx
+dobaxhel
+mpzgjyww
+ehyfvnaz
+zxrdlajd
+hfquyvok
+aqxxdcqv
+vjbukram
+rjvttibk
+pryxgzrd
+hcqpxgee
+qjgqvoal
+wmbuvcty
+zpgxmdiu
+foequjps
+lmdjwyfj
+mhqudwzv
+lrzkttsw
+owyatnru
+gwppbbfb
+fvlkdsjk
+pwhlvjtb
+zgldiibp
+sokjzgvq
+kfourwqm
+nfqoyvsz
+hdiwmrhk
+nnapsbht
+blqjjtwy
+aknoauti
+uhgowkyx
+uypyjorh
+blfeioot
+kzbukpxk
+kfmbxgle
+zmegahum
+upjouzrg
+tkedvzfy
+bxwxuutn
+rrwxobjp
+jdujkhox
+jkycewdx
+ivlbibns
+qjshodxf
+bektjeou
+wotjfgfl
+rjrcfiug
+aklhubjf
+kwpnaezt
+lsqvzdom
+pxzvorct
+vcxazyzs
+xsszjsjq
+ydgfsukl
+gqxpcrla
+rvsoxkhy
+rschupcm
+ivlpikxi
+etrnyvkh
+byzymjms
+qagdcqww
+sxnausxs
+giuitchj
+qgolehtg
+keeskeyb
\ No newline at end of file
diff --git a/adventofcode16/data/advent07.txt b/adventofcode16/data/advent07.txt
new file mode 100644 (file)
index 0000000..fb0a641
--- /dev/null
@@ -0,0 +1,2000 @@
+dnwtsgywerfamfv[gwrhdujbiowtcirq]bjbhmuxdcasenlctwgh
+rnqfzoisbqxbdlkgfh[lwlybvcsiupwnsyiljz]kmbgyaptjcsvwcltrdx[ntrpwgkrfeljpye]jxjdlgtntpljxaojufe
+jgltdnjfjsbrffzwbv[nclpjchuobdjfrpavcq]sbzanvbimpahadkk[yyoasqmddrzunoyyk]knfdltzlirrbypa
+vvrchszuidkhtwx[ebqaetowcthddea]cxgxbffcoudllbtxsa
+olgvwasskryjoqpfyvr[hawojecuuzobgyinfi]iywikscwfnlhsgqon
+jlzynnkpwqyjvqcmcbz[fdjxnwkoqiquvbvo]bgkxfhztgjyyrcquoiv[xetgnqvwtdiuyiyv]zyfprefpmvxzauur
+vjqhodfzrrqjshbhx[lezezbbswydnjnz]ejcflwytgzvyigz[hjdilpgdyzfkloa]mxtkrysovvotkuyekba
+xjmkkppyuxybkmzya[jbmofazcbdwzameos]skmpycixjqsagnzwmy
+zeebynirxqrjbdqzjav[cawghcfvfeefkmx]xqcdkvawumyayfnq[qhhwzlwjvjpvyavtm]sbnvwssglfpyacfbua[wpbknuubmsjjbekkfy]icimffaoqghdpvsbx
+enupgggxsmwvfdljoaj[qlfmrciiyljngimjh]qkjawvmtnvkidcclfay[bllphejvluylyfzyvli]heboydfsgafkqoi
+ottpscfbgoiyfri[iwzhojzrpzuinumuwd]orfroqlcemumqbqqrea
+zhrhvyfxxcsdpris[xdqecoqujrnqbgla]bpwibmrkcfbzigf[rlqtqykdltcpusvc]ybtsglkxrhucxwv
+msaebhhuxyaevahov[skkhuecthcqtrvtunw]bzlvljpsapsezchptjs[lbcxoczqbyysmha]zdqlfydjdctfnuetghr[owwhfhnjmpekukafw]qqitepzwooogqifl
+jhdfwesnofrkpse[mkruficpgplktbmoo]mnrjpuvsauanolvzhym
+ucibfxxivatgxlupp[rxlbgrqostcioowo]faiimhdhgpockadenua[teomupxzwrernokhyud]ohsfljkyjvkfzwus
+gzxcgjqdbyvfndfpw[ypfsapvecfqihnpuszq]mvwxgfkniekgqzqid
+fipkggpfwvgrqiwosi[itadifxotejgzkt]szwurlcbvffhgse
+ketltdpowbxcusrcua[oonjssgqvcgwvlz]otjxgpizqfpcriuco[mgtgmwcjecomtdkxdev]dnrecyeyhqcpausqzsw
+lcototgbpkkoxhsg[erticxnxcjwypnunco]notoouvtmgqcfdupe[hubcmesmprktstzyae]unuquevgbpxqnrib[egalxegqwowylkdjkdg]spqmkzfjnzwcwgutl
+nesmourutitzqtolwd[rurfefjvljejcufm]jagkqdwpkefkjdz[cctohikipqxxbdjxsg]badmffkslhmgsxqscf
+vvbwenaczgfagvrv[dqjzprtikukbikojlgm]bkfrnbigwaitptbdcha[llnwgonsrsppphnnp]sqozspzzfbeigmw
+jzkzjzzghblqqme[fsqzyykcotbavruyp]vjzohzsunrevhmpi
+jlngucjirfgdgorbgb[nvvkvebcjahujrwjmy]cfnlrssuthgusytkqt
+kegsdcxndhtlskseb[zbtcngduxclffzlw]wrdqbtrqbcpbeaiqvx[svsyqhkrryycnkceq]ztrawvffepndijceeih
+imtafeyfivrcegpagsl[tjzsewuwboushjl]mtnyptormlwiijlds
+sblhlpnuutqgtuvlc[jlkivbtbkivklrnr]zkzcykzkyjxarepzvrr
+ojuqmcidxmsyjkhuh[gsegkxlimzuyceo]dlhjiensaurluhul
+sxkxluastorxmnd[gwkeczwgmamhjquth]yvpdadteadabxgsplmr
+cndxxzfcmwwtcibgktm[ntsvmiwosuvniztv]onnfaenxutizlbxdk
+eqiwaqxxstamxgzc[vnomzylvfpmcscjar]rwdqevxpeqvrmvliu
+tvzbzkhvpzedqtp[whzeqaisikjjbezzcow]hqbizwaaffwbtfglq
+ajwpjiqawievazmipkw[mgfhwrppaxagfdgfsa]iaqcnovhgearcutadns[anaukyaljeflxdnucbn]bhqcwrkeolrhwdih
+neakzsrjrhvixwp[ydbbvlckobfkgbandud]xdynfcpsooblftf[wzyquuvtwnjjrjbuhj]yxlpiloirianyrkzfqe
+jugqswdvlbaorwk[dfqvlubdcigzpcz]aqhybhnoukoyxuiw
+kkkfysfugyvqnfvj[ahhqkrufcvhfvapblc]jfincvlxbjivelqrs[mpoymhslpyekjmy]eicbqlzecwuugez[tsqmqvjiokqofbp]senbbdxrdigwcjwik
+ogiiiqaxakiaucwa[ltdchlxwnzefocrw]koxethzfvlsewbqdt[qdfqgtzftqpaxuzcruo]fvkgjcglmmxqnifv
+epmnxkubnsnyeeyubv[ydzhcoytayiqmxlv]edmbahbircojbkmrg[dlxyprugefqzkum]svdaxiwnnwlkrkukfg[eacekyzjchfpzghltn]ofwgevhoivrevueaj
+vvwvubpdeogvuklsjy[psnqcfnqhxaibnij]fwzpkbdgmpocoqp
+pjdxcbutwijvtoftvw[zkqtzecoenkibees]llfxdbldntlydpvvn[uaweaigkebxceixszbh]xxlipjtlogbnxse
+zmnirrxetiwyese[cedxmaoadgjjvsesk]nuisspyclmncqlasmuy[zxwlwmbzbjmvubgcf]hfqniztoirmsdwz[zlffqhttbpehxoabzhx]upmydjqzzwefvgdpqu
+lwvsssgvvylrvqh[duxjrrqkzchbpvnmm]pckmefvejytvzavgzgc[dcekfwnrzooigwio]pmutxfiwfowlfnnggl[lzytuzirtzgwhkz]yzgxtksuqrgvvgfefon
+tpmyecqhqjjpertn[qomuwmxstmgzexds]ftvqqwsvsrnmvpg[vtpebuufpyieqbhuu]dorortnekxkwnploro[pzajzflqvbkhautupl]eowpcyzmyvnntvzmvx
+foguzgeasrkncbny[tlyweucylxkswwxb]jtzjubgewwhlddar[dkddqrpwaqvlhdp]skkegnatbjubqglwu[pkwscrmgvjzarzb]ibaagrqwnxblvtkg
+ejgpdxesfyoyaggmymi[axfkdoyoqkpkhusfwe]pnczsmszqevkqiwlfc[dqhzcqjzpgnoknmv]ldrjdhopfyctlqtn
+gqhyasteoryuofc[bhblyxlbiqtzzyzvzqg]dtvxrlkyuwxttyw[qvvzvuzhkemwglh]bopvfttkwtaeckq[vvhkkgrddaoxnzctwar]gsscsjuictekguq
+sviwnvbtrgyydtadhz[ipjrrywkoxwuzmlrzd]kcxruwyisqvokporkub[tvarlltnhjmcuvvcck]raafszljrhconjqsqi[snbxmvzrkojpjybkgpi]ekoeuottccqbxrvpkb
+vtouviqjarqwnoexuy[lzxhegzxptktueqo]azfsikzbwiajcrhnas[hvqxgtffjyyfgsjowxy]ddbmpksrtghvvypev[eoepwehfavxzwgt]igsulpdhrevkghzh
+fucimprxzsubuuzmk[umzezmmnkfzvjlela]qxzdlcryifsinmkgeha
+kauzjbailyzpvtji[hgeslalzqgpdkpuvomw]utsywinellykvmuawwr
+oacbdgfaszolybf[hsytrkjoylrkkduzfz]bmoelqhppaxshmfjl[cusgbbuydfqtbbmsju]mcftwalxlvfvvpeu
+ybylybngqxxrmplf[mybpfztzwnisfpfgqmb]fsllclehoezgthek[ldxhvhwniqfpqbl]ebybalwrmrqldukb[okenxoqxjgrenrcjd]kluumgtqybryflqi
+mufsafgfxiegfgf[ydibrbrmiaulexjek]ouwchrlvilmygbuppjl[imyaxsiodgjteppdyy]ugondbuqnhjrzzzn
+idihouejjocbahe[mclnirhxghanatge]ubwhxskdzgkmyrp[vksyktucsyumvxoc]bregaefrdlrgmtwt
+qnsqwkqttdevlnzg[noyxiueharjajsalnhu]heaxmujxhpgjddqur[xnqwujjeasceovnroiv]hnrnwuogebatnfsa
+evruuxfhpivnmknolsj[itpsnnhbtrrbllsbo]gefodpceljlvwuahz
+ebddlswrvbjohtnkyip[qkssdudizhcoaazvyow]xvnqicorrkjrnxixp
+bbmmzbebuexzmtbr[tpzfxmwgamhaikfpaeu]kraaocehdtalyjrf[zzqqtjplepyidohpvx]kzehgejueimxlqglfj[zgysopfdgxtokkdxwk]gwcfaflybmhdgoxjq
+xztpwfipuczrtoyt[uwnlokmtopkhdtemm]sdfmvgvctgwbdjpmvhh[ozjpkdigpjqzqgy]yrkwokmkrevauzroaqm[vctyupmildfnnjomue]cvagxsievhrukgyqzg
+jpmvqhuabqsvroxgmyk[toieqxrazxhhsbrm]wdwhoqdddwdacuo
+mlaqnefjmwbxeetyxz[sziklwesunikpiqjark]iltkcgfzmhvusdnlr[bmfprkswemctykvio]hhsmvppnztgipxij[kvlbovfklljaumwmy]mdpaiazrlputabj
+czdgmoqwzhvfnulxo[mlbkytxjhscsxrgchri]veugcvavrzihzencp
+rbjtyudgcswzezr[inlznakcutfnnequc]uhisbxotgqqtzionoq[hzlgqtkpeubvudi]qqsryagiowmcijbejhr
+wkvwdohwocizssun[kimsjrwwfpilzpkf]ruqhrplgugwhmnn[iouhwbjnqzlqyewxof]exjuguxwmphfypvsivl
+bcnuloxdfhnyesgtdky[hvmgfzcjhhiiqino]sfipughwbebgstwrua[behnamammdxrnnok]ttpbmbflilacfvwiwd[sosjbmmjygpbfetziv]qcosdgrbfdsgqqrlhym
+fbmthzppxydfxiipo[zsyfzbueqoaoxeueado]santekllapuywlmwjkl[yfsonktbvuyilcxf]xjerezinsamruvn[cceqpogyrsztadfap]fiivtuyynltqoypypou
+lfjigofbbnyrdlhxv[gfblbnmkfnpxbio]zeqevpmpjowrxtw[mofuoyllwekzcjtxjhp]lnzewigzwruzlbjh
+xjgdfbtgqmgazgvtif[farekeencwufapef]dxjltmtfxuiydactuko
+njaolcljynwvrwy[qplxbpadtyndosjcch]fscxierutuanappsqiy[jftravlojauqkmgludp]pkfwxpdfcrjrmbucf
+iyotvokljqynxnpjsfs[lfwwocnwcwstidfpb]mutsdjbqfruxxprzrnk
+kpvxcagazjsxgagg[sabugyxucglnvcjb]uvrdglycowrjddy
+zclgitkurpfdspcbk[yedvkzgbawpthoyn]dhvnmtxbrpttrdrio[drdahsrphffqsigrlmk]ykghbvcdosmtcgxdeb
+rkmajkdvlbqwtnuanue[brdlutivdnfekggixum]pbsgstnxgghrygqwpf[rlqzaflmkbvvefdoc]jhbtzkodsfglsaow[onlllmfziapizsd]usvejrxmziulunvjux
+jqlketojwcgvuce[ftcxdqqebijrnfzjriq]ucwgiavuxrxokmvxgad[zmyusreluasvwgzngmx]semjnvafnqvwtvkimy[owvczdccmvfohtbijfu]dmhbiikbzcualbbs
+roewzhbnwyvondnn[ejikyjgtzpmepihnnl]yurjuztavzqkxqlrle[mbjcyqrzfuhhsnipzx]fcrtuzhrqorxrdmrcn
+ycznijylnnqwmqzdd[ycnztjgxgyapvafhwaa]pzdtesugxpchhdb[sdruhgxaqpitoxlncc]exnhjwmnvqmquvclhu
+iufdjzqflteyvhrem[eqiluhtbfuegasby]ikqccaxrpnjjrevdsev[wfluwngzffaxhaflbf]wnlyrgvaxzsmqvc[smkdicgtwwwxmdizdi]joaqneodtgvioxzg
+pddsupswtnzture[pehcqhpltqocptr]ymzrvibfbeasccxh[jwwhastouxzmyhh]xsllfxcuzbtciegzcd
+rnnvfdyavlqnvwze[aistrderxrrojbsspnu]hfkzgodowrlajmmeq
+qnebfycqdylighjpgo[ablnwbutiwhdcrmwbg]hnqeseogqdsdhith[nmrgaeenxhizhoqper]tjxbhutvqtjzpyzh
+batsftctktgebkvzv[rovosiyqqpafttgdmoc]ynnztvhekfnexdcuq[lnevylboilqebnkf]udftgymwddomqmy
+ybrcyivzafzoubcj[crhigqvjszwqflocc]aesdfdfgzcnyxsmzg
+oskvnzcbuyaytyixp[ypctohskpfoxhpydwpf]kgkbxhyfncznsar[vulxrgolpxlqzkknzva]ightbuekpmjodxzfky[nyjpxhpycxjrqdno]jhvrgxgfjwarwzkmfj
+relqdjmixussrbijgqj[mfsyrfbtjbojcesuyw]wsckbuhopguszeh[unyhvpqjxxgfbgyf]dddjalolfjwliasyezn
+xahbldxnvsviywko[ucmjsyoejvcggbtx]prfpnzzlexpolsgsmsf[bgocwabottcqekxs]ijvpreqlfejnqhfbi
+qtcopopjmmcjlyfrtot[dmnfjowrhqtqhevs]pfczfmefcnnfbxiovzj[exoentzecnbfjsy]comgdcvnlyaemmya
+plhhfkjlotvzupi[ilbcfjbrxuildya]uuvdzteoijumhavq[tcuesohvzusidbgpw]hdsgdngmjtlybnas
+yoifccopobbguvkytps[xhkzrdcfsyhpmuujbt]ocidhllwycinggwu[kouoyzxtwiwknduclv]wkokzcbbqvjxtubqg[plgujclgyfmafflyurt]rpjrpxriaxyinneajvy
+jbmiqrqkpbjasqhvwcv[zlyzpnhzdtqiorod]dkigqgjtzmpleja[ijenfaygzeceopbmxks]iwzcpoekmitcckbxbzr
+zixveaipmutzulr[awdlukrjbyxtssfksb]hreqwpgrawaqwtqpt[bykxrwwuypetebhs]xhtujigporvkxqot
+cldscqwnyjkrzvyegsf[zwsvoudppoalxeja]dbqrfscekpmhmpoellj[xxxpuyedbyuihdzdf]bmtfdebklpxvuacq
+ohdqlkppqasvyrkkjm[hevshusrmyhuyyo]qbmrotalialbvje
+nvwdnytzqwrugam[pflhibktydncffbnlva]lguqdlkusqqwovr[bgufsrqjnngbwxnhuco]uanvcpxragayfoj
+zkvrrzmgitfjnit[gezdzgcdvxdkxytcq]avznjhxyjldbqpfoua
+mmyxbuoieontkaxvnk[lijzkcghkhiryhceqc]zuouxoicowwkhklyp[baqxxkavhepnpepnj]jcdekzxrpfucavdq[nxrhabcrumlshoitzba]httcbsbgoyhjpkv
+hpzoxihsevceefdjv[nxgkyykcfpjwtlz]lkszzbxqdrwyktr
+djqunzvzcyxmjqhy[qapfiyujulhgqipfm]htqbtlhlsqxnjyply
+lilhndsdretyqjojrn[oxrhvlpgqiotmvruvh]hgdlazecfzdrmegmnw[alxxixmnnjkyhrqjgh]mpbjuwwcyhdfxynyk
+fcrwgutcgcqizev[nwszwhfvqtdhrymgqf]iiahiososrpdafnt[gbkrardsossgcvu]fmudukrxbiqyrpi
+xpcgsvaeydonptb[ewpsimxlttaeoth]gersjqmmdamhikqtv[sxyvukeegkkbbarjknr]sohijvshdnoawujw
+vnjkhbmpsmvxkdt[yrpltayaihgspvnjxb]ivhwkahhjjlwzxfpz
+ofoancxlupttxku[hkedaqsibrvtvqu]zkssllvuecmgtqvs[eklsqwgwuhucbxykl]ioompempaewmnco
+nwviejwlkyokiqhuvo[csddbtlbfdwtakxlmss]fxdoqlbdjhoslraj[shasfhtvpcsajdsmxfp]errsdzqcqzbrfnkeux
+gvmytvlyluvnmemhgjr[bvqbhytqwpyemefwo]sygljhpvyjnuxzjqy
+zootaoveazcrmtbda[qlxlwntntbkjtkqve]vffdsbekufzemgwomh[vzllvqlmloffyyldfh]alltnttrzqrchacoiqm
+ksbuxsjkmtzsfsy[shracmzkycsuqrei]qrmgsndwzkqhtojsn[innhjjhyfsffgsboglx]zhwuwgyrwmucjfii
+dagldnrnugbavjwiiq[vrsiyprmsvuapxvn]piirprosbofdwzuuhn[epdsrdcpgzkkzdjle]jylrtjltlmvazfpmh[rqqteknolbyzykdysvr]ieejzvgtumekqapi
+mtamroysxwglblwmjn[gmebbprtzaogucvyzv]tjzuzqyyfuihjubuzu
+pcfbudkakpzlyou[zznswrvmytntytfkt]kvudoarqnyybzeddvn
+moelqaykzlstyntby[qmpxihbeysykajdo]omqcjgdbuqvvydd
+ddyczdjdwnoacci[wpgjlohduqnlrifih]dfwcghvsdezgdixnpxe[ohhccenoirazgekq]lqtssqpzgusrlvyrd
+ewirhlfcfhkqbvmvi[ixrorekrimzzkckpel]ihyukzubvqdpnmqpgu[mbtybrusfomfdhlg]ucrcmbvpnjbghnxdo[lyajfieycgiubui]llelwgnuopqhjax
+jpltuunwbrijwnudg[ejxyrxniclwnqxxnh]krckhlysnmqahsz
+hkdpdpshmftvxob[fsdhonsqalgpydpub]dirxpfxsxhpxliqg[tvbhlcqkymtbnytjp]xuvawokttfililgwgue
+mdnmunbnueofzddapl[wxfahokzfixiapig]wekvqzgvufgztlgldh[zwglgerouhvhtbrdib]xeogmvaqszvkdvxv
+mbqnuqonmkxmczjo[ueqnkvfdskaqwesufs]zmoqtlzfcwqaxdnddkk
+qoaqjkdsftjstyjyqd[fyvizziweplccjt]ryvpqznfcdvjxuu[syspurpgsonxbbdrcc]vvedpafqmoeugwuize
+ctdgzypcrjqxirm[ouyjhaohcueqwdez]kroowbthpspnnzgzuau[pqijczlztofszvdzhx]iccbpchemtflqnhdrnw[esvbnyvlckqirev]psrquqfxaotuzsojbt
+rgukaurlmsyzovie[noclopxqrusykxpix]zbbopbxzogbeppp[anouobvemneuuztti]rpnbuugshsxxbbkhauq[zpqywyyxjfabzyppw]ecdrhvipvzregbgl
+vmbtrbtoajfkswgy[kailajjwltvmwasynoq]goxmpryedtsrgkx[hljqifnoadoljqtub]xucplzmspnbxvliaap[tfqpmrhbakiidoxwa]iceqprkydjgouemqsmf
+cvpnedbnibipftign[cigxthfejgyjzvspaam]esifvgljjjbexwm[uspsplcqhomoszleq]qnogejwqjdiznyfellc[sszzsifsfavntyghfs]btswodsrhcrrbodmtz
+lvxwpuujqxypkhqfymh[wtizujakvxzrqwpols]jffeswrfpnhhakyhwlz[lzyloeveicgwixnvdx]uvwhpnjlszclssbf
+noblqdnmgtyjbxjq[chxjibegmcbmljibes]edtgpajthcmqgpz[qafbzkjfqbjzilzh]aorhwssnugyflolh
+hunicsoijinxshpfskq[lniiseazhvpjiyg]wirqusdwvaiyatimhx[jntjijtppuekuvvzz]mxebkmgiqyfaglow
+wvzgoeqwcuudhjlc[nsjqegpxfiwvbtyuo]hehqjsarzkbbidy
+ncjcjhyagdubxcibe[qpddbjyualjarnnpkf]cizleaqaaewqysxwys
+jqslpqaqntewoglud[xtzdawarqxbigpuf]qnxdyobxvfsrwoaz[snegbwbzchqcbavh]kipasixtzznhgkjskv
+hptaschabsnqdgmuzoj[satvzxkqetnonungbjb]gqhigqimupvihhwy[nejqgulbxtzfjbjlya]jywahuqdzrufxenshjj
+sjgpoxxqtfsltzk[jqwzhblplilweukbso]tgorxisfymrcgyr[tfbebfnnljlpcfeps]ahpjfbonoajtohthzri[tdgaokthtdhxpsg]ajcykosmkhftnrjqphg
+tnwtnvvrpilvadiy[taucexvsohfmaxd]cfhrctuhgqwjgtll
+xzzmvrhyhwvprzczwz[lnshilvbyfjqgff]qfkoodzijhqkpuob[iyyvvfibosnuwlov]fhbcvpuqvpxmlolhry[osdmjplktygtobvt]msazwlubhinqvyfh
+wanhwievduqinfwlcou[uyalesnoaqmajcc]zbdddgzmqprwiia
+dfovljmseevxcfarf[enpclythxgepfzqcw]wechankwzxxkkutq[mvzawbhttzrauulkxvd]emcdawwiunjraebra
+sylgfxqcfrqgeeuh[dljwdydnbuddmtdgp]fhenkxvmwvdyaukaxa[xcdbxlqqfgqtjyhoi]tbnpjbnpoxxaxef[rlnmcnmntjlitsmn]vkculrpgrmqsrayre
+xexefhsfpwtpxuygp[omxfywhnlcapmpalz]foblbhtxieggkgpcru[lscwcbkqvexwzzbri]ipjoiumgoyugfzq
+hbeghglpgqnwpxqio[pcujpvhzhghnyjkmppe]jwcnwmqwctqgoxpj
+apqmhkpxrtrfwulqbq[trthojavkcrlcgc]oikizlfqpukeudv[afgmhbusoqjubra]ajbuhxzuhecopcxm[lowqlmwiyvmdojjla]jrrhjmopywkqrhlgicl
+dxrqnbrkijtvmkwq[dvtqzljjbreayipqgp]erhjjvypeyramuaab[cjedbzbceteuydrps]kolgelhdemrbeviu
+gwjakwyuaxixflozol[omjuyjzbtditgoznip]nqybdawthoydext
+lcdwaahhbhajoai[cszvgduipwduhgmo]vpsgnhmtypusbgmhwnb[qitqpalswmqvjiu]iyjenmmobfasnzqefci
+tkxizzrgmsxvmrdawsx[edbhkciwrqmoflyang]nbuwbbspldrfhic[guhvpvocfyjpwwclv]olxhqqgrylvzzqxxd[cnhwdegsxurungopo]rdenofdlpgilpiuvmr
+wkadrydzokfmuiah[mihkmnzzjladulkvb]weqzktdsbwalcdijda[rejzrqqdtbvrwgbgojt]ggruyvfdesfdwenyx[jjyyleykqeskpfmzl]ssqauxmvzygppvncz
+djzzsqykcfbhgfoq[frykddayaohlxmkem]kawloxhrgcpronph[xxkgjvdfespwmnja]jddmrdznkctmsmaxih[uxotxlcobxfemckshh]irmewesnknuknipl
+hzojrovrbmfobhsau[itboujfkrmpgjpsvsr]qgczawmbunmisxs[dtrvnzrayqlvdpyzbuy]wrcsquxgcxpvbwwzlqo[kqbfajfleopglhfui]bsoomwrdifoekal
+cntxerwyrvbludhaa[fclfiyjfekdtavmgy]lnvvlflygrewrgswx[juijxzrpwfrmshbttg]yjeuhzyjbmbdslbdhf
+gclzrtvgfbqqqcl[fdkwmnpoansxtklyusn]ywwzqahbabjbcbzd[kuiejkftwfuzmjbiify]tabpjhaiwzcdnzvof
+hmshguykeqstxgzs[fsnsxtrvkdyrlek]rkzkooteryozbwmda[jyjzddadewtuaqulp]gtprcoocgdsfbtduekc[llfoixzevsmexhuitz]ppiutxxuvaxhzgiib
+ouvpvcchazfdcljaux[kxqnkynylosbuekz]arsuffkkpzlwuibqd[lmmxhndkoldfbtyfpw]nvcrjoborzogjhgwn
+ojesaevpprrzqaksixa[ykxbgapdjiulhmxgihm]nrxxnhdwodfgqoeproy
+vzbltcugyxvtlxqnkxu[fcflcasuyaljgewcynf]azqaltkfsglwgkeh
+urcslegrolaaalf[grobiijzrtgpntne]uhpzjqkslgahpkehix[prmevyrajmgfhsjpag]kwfhbrhzkojqazxjocg
+zwfeopovkggasxxb[fadbebqmbxwktwfdeui]ftomtaogfvgkkdrkc[rdkdznntsigigjiv]warlzbzbnfbjjsh[etjzyzfdjztsfsyi]dulnqfxjoewssxgkfb
+nvrsqzcyguparczn[ewfmgkjaibzjoiex]kpooaykofbtkpawayfh[ssuzuankcdhqvold]qaeuwxgakqvcugn
+rnlhwrnjgxwleghohuz[nktpaaaciwyfagkpqw]yeyzojziajnryse[bmpxxtaljjigfiv]ojzukghfhfhykqrcdyy
+doqbqcwjoldvwtws[qaxghysnphejfacrnkn]iqyhfkjogmrkjpk[hfjqxqeuzwywwmnzj]uzhpypjadzqcpeibcgc
+kmcmhdptzlhgqui[cpluzrcwihnwxrsdoj]czbxutspkzdwesrc[fccnqmeaqfmxtqqng]fitsnmdmyzwsifevbat[fxhgcmqhxrudtnleoww]yhxgwphkxlzhxzjnvcp
+tmjpplcwhmsaxav[epfnxqdzfpxmaztdqn]vwdoatnafiotogpsxk[lydghxujguhqcjqtbbk]mtvqsesoxvybfrxyoi
+fslvgbiibdkhchajyb[zpbhqrokrbfuqrowop]gqqzoqvfsdfcjcdurrs[xhqfcfytbbekivnvod]jxjwuxivnyhppvfhaol[evfnrmrjnnhychtpv]emiyjcjsnojxexs
+gqaygymjihevbsps[iepworrljuepufyvne]fzfjulzebpsphczby[kxaohggiqnjpdbf]bsjfluhncewudkumaxj
+mvjlhovwivdanexv[iaphahshtwtnhoeoqsk]syolycabjeiwtwtec
+ikhcujftlekmcnmcy[ubsoslmlaitakaqb]ruyiqnoobymxiim[ppxtpuphuisxnqumd]qxjhzfwvixjjmfgaqej[bdjpilcwzhqphfumpny]itvjttbjsbfmxppif
+xhemwtnqvfankrccdtk[bbjzsytqxhxcgtedp]ksfozdggjvyvpoyw[tberajbwhcirnenwv]juojuogrifenjsbldn
+bczvqdwkurvezjxgrg[yjvuwvfypobetomm]vtfujjaergrizoots[snwcbtqylvuhnxyvb]turadiqlfjvclpvbweg[mekdlejerxpllbf]bgkveafnrceyxufsqj
+duqeascyrgxyhlspebo[kzimyrleaopbbwmbi]xsxqyleqvoscazopte[debdbibiuaosfdyioum]vjaptdzpitqctukwhf[jffyamdmvkrggbe]qrnqpwcdoditjixsc
+cuxdugzthpcubgw[qjvtzbgagyebkobkhf]tsbcghahxswropcgj[yenmfdvoxlqekjsk]kjdmhdgepvdoovzvg[mafjriyxqtotmhxgvty]mdyayljihzqxhiga
+ehkhfoqcdkpyxeum[xvjaglxwocodctbzj]osufidsaijsczhtfg[rvmapxxierwnjkc]pgshnzbphxdoaitou
+wagqtjalswmbehwmuwm[oarjxyzwyhxzhpgilh]qapupwvuflcoryf[hmqhnrjiahzdfbaz]kuprvbaykjhqagnl[wfxatijeapdinkt]hadtvdjbkdduycdut
+emfkovpbnkaxykrmwjg[otoxyqlkgczzivgdt]nsvpzdvcbsvrbpo[vdfxwihznfpxlbsju]xbcniikjhgzelav[opidnljejcjawbikt]gedgtkiksnpijteviu
+fxbpujpvuboflfip[dogcwovzlakonhdyww]tkzftiqvyzumadasjtu
+rqtkvmbmqtdrqsahsdy[dhaassflbjfdslopp]zetcyybbahysvheand[uncbkqyoidhvxjf]mxqjozeotsollwolhs
+pxfqsysywqfsmername[yfcktnozutkhniqyp]tjzzakrnlxrtscena[bitenzjdqfopqevroqo]zujogbgemdxiaven[dtxlpfkysfcivyrxqt]fsgjjgzltbnlvdojqvk
+guclyozvgpvbuhktwbh[qmueutcpmdebodbilp]vglsdvkxogzhzewjpl[guoovyobczavohc]jdguogegerfiwrxthui[hdcvpajqgpsoxuoawmz]ztwnqkdjnnwazrdzpc
+llcocydhktglycn[aqvpbqqcyyjlfspio]bfwtqbvqbywnhvn[bdkrsfpiokzttiazuaw]kchhszhegdhxega[mgfuozyxaqcxmillwlx]mzcerkylhvawvyujx
+jceiyppxbreywlqlc[fizmzubzyefdntbmd]bmholmqrninpjuux[wkbshvxwlfhlrpkbk]bnqhoqtiqqpsibgykwd[ajvhuevpxmsrjrdwt]ejcwhcsechltmxlycwv
+lhzgbwzjykgdqwj[ksxhpuzyromwycwqtmi]fqkgkgvjfshsltg[ypmdudbfamagwadtia]nxqvzfdgxlwbbkrssc[zqmfrjzhsztnqbdgo]dvzoywqsqizywigsqsm
+vvnbnhvgcpquhzbarub[ufazesxvliazvkcanib]agtuglmgoxupumcispr
+mtpdvvydctgradgywc[mtpimzrgtmnlcge]vxbxcxjkpticzboc[ffiyihkovkviqjifrnt]yhxctiahahicybqti[latcrvinlucwkxhmc]ajivvpmxwiypcjtevwh
+dpnjvkzcoyyzmgvvs[gtjdsruwdhyukkx]qndpbpmhkdngjmab
+raugsxxkqxpsglitbj[ncskiewbnqnhxvojfx]qnqtemgvotsgnlgxyb[exshfmlaagkpxueykd]vgcwastyxsoddgu
+vtmkqugezjlfpad[ljdytmxdmcfjvqus]zwkxtirtowwwoqybn[wwbggxlelxpmctsyio]ojizduyxsklhvogj[wkjkwbzdmusrmnwuq]dnvercuduocxwzzqvc
+kcuaibmbtowdpkk[behnytmljmvkfzjzx]vwmeazoaavjnyopedp
+jzmgdckgiwbhbits[qapkyzlxkcinhakr]zymyymfbxgiypcn
+kbcfgsoqgqvurokxs[ygvbgzijbgfeylxvl]xsjucuevvfddgod
+unfolwpdrbsrzgoo[xcskhiayzcpeegqfoe]sqhinsvvbcdboctc
+yclpzeggejjnvkssg[jaxstjrzmutqmaqq]buvqcwkayhypitxnmp[hpxwubjyepaqhyhud]qhqlpdiqdhhgffsgtqw[ijhwhbvlbixaeywd]fwpyiwyrgoquoeuicxp
+jwgenomewntwyxiawpa[eqcukoqwwwaruuaeoaz]przxcbqvsrozygtcyl[krwnmcxmgcgfbvkj]pcifuzymidokmsecl[wetuprgdinttljgam]wiiixvydbevhtscp
+vzuukbqyqsivwpeeygi[bsfyvyrjgidexcfzq]wyfowikcidviqqnzcw
+nsvfdglsbfbwlxfpfs[hdfyjgnwdgeropdfian]gznlvhnfjawhokhugz[klxeguqtsnydunmtj]gaauhesdugovoftjb[agqwktizuxyqgbvt]zhbzbgfwnkahvueja
+xcnkdghtgpxbfefay[iekwzcvfquaynjpflf]rfmwtjyxputzpsgr[rxbiyhzboydmvufaz]vbibxkxeazvkbzpnrqv
+efxnnxokdpeqbimle[sygsnwvurqpxovmfv]bfkvfubmjyasmvc
+pvyunauqgvtigep[ypayrmkixxbagcbawlh]gsvqfsxbquttcaayobo[cwanbliqbdzlcur]ckdwzoeeeldqnmpnzta
+uaxiegivsmmvixygiih[bwxhotmjiqmiffwt]ifggldhrjitovzh[wtrrvwjwudasapqdal]zegculmtzsyaxytuhih
+hvikzocatynjoxxzjrr[yowwrajfokqlojraj]gvquwhdppqvtcvd[sqcangyggkdiljktl]fpjugbjlanzohbvfylb[fxdhqobssfucfmeaz]mzrtcejhidkqkpqc
+lcgelocktqpqhjgon[vmfhipgnrbypfellki]bqgdqxjnlynzdjogpbk[ppgoudyairolaaomp]utxjqpmjzchqdhz
+mtfryyrtmzzlooy[qltyhniowpskiqmolx]nuxblfnfrcqtjqfbzi[bdslgcpqyowecpp]vlxwrojvicfzzzfb
+widpcxggzgbkofmmtkl[bhvmncpisdisugtk]azxcnslcqsbtyufnt[lqwxnibqiwuwzwkf]iqnupikuhmhvvhf
+amceoqorrqtczywlb[znieihkpkxkvvqxk]rmoexicvufbvzrcxisb[nrrbalocuvporahypgm]sapytlndnufcmsmnl
+ldbwysbqqkcizwlkqk[kxbcvzlolkrtyzou]zsqlgwgtcvtkmrc
+bejhbhwlnmysyqgzk[gombhcspwwomoqoprog]zgwpzkhgbgaveqpe[kldisefosjggfqzo]eiyzwmdoqqsrpekrs[yoblfghskpxbimnq]ewghiykdpitzdsydl
+uxdgjfelalnofqouoee[obhlfmbrcdwvtgs]hgtqhblpsfyxxdmruq[amhlljtgsqandpxg]uftttypexliymsri
+xwcoczwpeprblqvdsze[fcqzupldpqdpibi]peaetflnafpkrqz[aibobqkhvfzpwaajxj]mzlrkrfslubibbu
+fpofuivhqvybvczq[zbhaursvrqknspvj]zlovzphchihqwko[bxcpnqiijtjpypqk]hmdzgwlnervibxuz[hxskzadaiwuhkjrvia]fqtcewytffzarnbdid
+kqzfapnhrgdwnrxtwcw[keiqggcxbtzwrcvrvl]itnkudvtbvfwlcvguev
+folpqmauykgkbtb[sajzutpltmpwuvzu]qgkgeonxzucthfluwfz
+qiniyhvlxrpcbscgf[mmjtkliysclrogfxsx]snxccrqkeuqchwfi[wbbptxydvrbgemquc]uyqttlcltqvqmhu[sawrjbeubszmuwsjuj]rowkyiykcizmcgha
+xafcvdeuuhyxixxn[abpngbyvpnkmojksc]anahdcroysddmoxf[tasztimgjqwkkic]fiycikeddfoyafacbfl
+fzmscbkkolwovgnjeb[qzholetigkxxmnmkoc]ffztdtemtdnustwuu[zjrqslegqkywtcaqod]qdtqbyfhwehdezedf[qqvslpytqtjuzrkc]knqvowafliildhqxgex
+hicsgtpdpugetplbufu[lzlwcptzokxrsxtrl]smxnwfvtzttcsesdu[wmucgluptdavbca]xggqqcfaxxcagagkx
+hwnfzlhdbchsmjwaytr[xfggqnxtnpdjzuyqm]efiweqzxmsxetmyjnhc[mgjnkbfmmvyrwyocr]jhviqqnrgzjsdmidsjs
+nvouetegmutetgw[keqvyocxdetebkcgl]qfhnyfdnjqnklpad[swuvsfhrnzsnatb]zjwqmrmphlgwdnms[hdlfprihcbcemfn]lrraefojxvtpxljil
+fowkqklueytawgdxklx[pmrpenfrmskqjttdqiw]ttqjijvoxxfxrrdve
+nsyzzlnqjssmirvejh[gpqbubkrsqphkdjwg]gvzcxqgbvhopkgy[nzlfaemkjnuwvhul]vxdiuaimpogvtkx
+pofmqefryoxboubl[neoxktodwrswfsxwruj]frlrumshrtcllqqf[erlodpkifgfpjlbl]bbfocfbyqjagesavoc[ajasttvajmlfwec]enqqcyveejcayzw
+rqtdsfpdgwrlmfj[nmeovqshevzueyvd]ibiplfpvkyxvacl
+wtvwzmpwviqbzol[oqlqunyszsyebxbm]ywqypuyvaiegekaok
+ijcorxkdzocwisjb[qvcjrwytrzftjicua]buuniicmziszwzikph
+pplaiaulcciebujjsx[hlyeskfzscwmeqss]tuuolvvbnyymfmo[trsqblvfyagxmgtwfk]kcigogbmkzsjlsrj
+dbsqyxlovoghbra[lwqmeeclsvfsrezsed]odqamvyyhsmctpqegav[xxoamahurojgqse]tngvfzhoprhrxsccgnu[zwwglwyqrieusmlfmrv]tzfresqfmfspigfeo
+tmnutczqpsydibk[skiokxeqdgilzjq]rfkxwumjpjulbkiz[folgircuujlcjhjqxa]snhsgynrkjecrsu[vukuvrankaiilqegzup]clzyhjlcbrfdbjrzlu
+opgifufncugjrflllk[epkqgmpkzdijtdedk]xmvotyghoniyalmmg
+ovtwjnqubjphsgapb[cnrcpnxrfclncasoeka]duqduyvmbzwdopyxp
+imtmstorxxvbvmz[muklxeyazsgitgb]sjuudyrlbxgtlph
+zbnvlmvzeitlrvclu[rwlyxjkxlvgeyfzdl]uzlfzyvmybjonpqay
+cdxryezdoiyoopuzgl[rnmncixgvbxromitr]jgqlptcrlpzdrqh[sstvgpzcldcmoslnycc]cyrecvckpuyjqifsuil
+acjvnpfqosyvnvzbjyv[tmnczokfkjaxcvwjo]cszegpeuzanwadl
+knqqmdktrcvcikcfvcg[lnsoisfwtfpizbpo]xfxuxthdxsekjpi[qsroiaojvihodgq]jaamntgiaqvdasnz
+mqefdyhtbqynychpbh[rrjozrtcexpbrpvfs]dotleanpfblcxfltod
+coayqpuuvtnwmxzhgnu[fyjdjtselprfevq]elfqjzpryzqsyqykkb[utrizxtivhakgjoeryu]ozeuxjmcorkcejprcr
+ybbgylmtmhxlhqizp[uvknavcimbacgtcaq]bcmdwwkdvfnmnunyp
+xfdywwnnhzqqvuywq[drtdcfuoxvlflptlca]oimttatgiboynmu[sdgkeffjrteokyiby]tdiaadhkqdginrtqpq
+fbpfhfecwfprygkwu[hvqikgwyrdwtieahmt]dvtcvnchfsienpasxw[ybkvqrxztwzpsnz]aecndxpzpamjkanchaa[gbjwjnipsmepfxpee]wqjnfjiezpzacmgf
+adwjbyiantljqwsixso[wpjjoobofoumdxgrxv]rkvrcmmrlditmjtsh[vthldqtnlpjrqbobzs]efwiuqkqzfdxyhvgim
+hbbvxnhhxsvghuh[fcrgvyndxojknfr]twczivatsbiynqjxeby[ckqrjoolqrxxjgejzua]omspfwphybvgiqpsc[hmnpdaumzrmqrti]sdysxoudxhpllkknvq
+gfussckpoykcibjnoi[fqnfbkgojenspavpz]xqwvoktikoqyzpofg[xhdumbvmqllllthhsrv]vattqhipurbfvlk[hbebbjewrlmxdblgq]dmdhdbknmkouvie
+tupwpbmrvffvqbfiw[rqpefvswlzjnphduk]mvafdoftaeiojrirv
+bawbqabxqwpswzezv[cjmoppcjgifyfignuf]uawfxptpbgjnqbv
+sekswalpvwmmczwdxbf[wmcngumevhrbffuzwp]tqwvmkfngyrhgknowv
+dovrepylcvtomveqe[vzzskfllpjbvrvrkryl]byjsouhntlopqffti[lqxrgcqywryeexyao]qsukbxhzoifswmycw[rktzizqtdvetwyrchc]vtsdazzrpipfcrnxbk
+ydnkchnxezkalny[wlfhmxcboamfrry]rmzprrgselhmfbeamf[dssnudvuvyhvzyacu]jyzdefurrnaqrfzq[rnndewpbutqgejcy]qxuganmeckxcpdtd
+xhwdvxmfxmktgaz[qfzqjtuqokjeznwalq]ddgmotioparmkkudqef[pkgzogoaxvcwsao]cyebyhigpzgyclscf[qehxqzuztsluyweopsq]tikkkgtpkewkzzkdu
+cygqebguktathghp[qlkscioiowgqftpd]ytftmijxsnhgacfmmf
+ccuocdvpjktkdceebi[pshiishnrprqohwpt]bubrhtrzuabpzzvbwrv[msdeugbygsvewfxco]nzavazcgkniyxva
+coscymyrfqgisrge[oggmfoqevlabvhm]xfyhzwpfzhhyhimqkhz[cybjjylavqoqjyyoy]igzwdivoxazgajmiy[kkxkhfunkpsgyvwp]isgotyzlmyzfqrij
+vaezncmuzyyjpeomif[lyvwvohtlkcdyuxze]wzdkddeqkxmqbqet
+yxcqysoxpbwjlqjdp[jinwxwcdeflygawd]hgdgruqilmuzuzhsg[ivpimcyrtifudwjgso]ostoopidgdzcrzzyzts[vvaiuzzuzywesuzk]ccmdnuyihasnldexf
+jhpygjolrfstkxwt[krdivayaqwfuktykopv]dmposdxasvjkzjesg
+lcprcppxkrnwuytdt[wysluivwtmytfgqpks]orlmxnkipofpsdteaa[vroskwwxeeylirbkna]zkeahngpukldeszwuk[harebfdcelqdbfemgo]usisvvczvasjomnjrip
+eybojdjnfockfbsdjd[xjxxevnxuwjdamien]frogttytivtegcy
+rezxczwcihbkywyq[sdzzflizzygfiovwyw]jhtiwvelkbaqhvnylca[xpnwnmqbaawlyqz]kftcwdejxaznztqsbhy
+zitlyztihmeogushh[wpsygveulmddxdzvwvt]auvwghiyvkvfxyzf[ccnkvkboczqbgcmekt]hkqnuaoeffocspxkck
+ucliphnwkaxtwgnma[wxkbcziemdvopzeq]nwxnkykbefamsdo[lveynsoldnjkcdn]kluaaaoiqsepyqfz[bgjuhrlfjgiyngwkwgj]ofjimzheftgbbyrugn
+hshzrytllakuifsbuap[znsqxjzxbeewshkb]tdiohjkqimfsaijvmvf[wxvmhzzkjopfxhshsol]qgjutmxlputvudf[thwwxcavnensivbscm]dounftyvyaoguqzy
+hktpfbzotlbrgddcff[adqmcoiraqbphjpag]fxxdcjqhwkftprk[lfeudfsbvnqjvywynfl]whirlnojvbkpyndhyv[xpypetlsykaucaibapl]gcpogvgqrgensxdeyh
+afbiuqpasfjkniuw[bqclbergutdzfdqhdpm]gcgpimwjmvopfjhk[geztaacbsloyevwikqp]jjmlssrsuxmhbtnq
+ojotaeydgumtjrfdtam[gpkjanckhqjvfjewt]zonzrwxnucpwtrmqyhv
+llkryzvclmpozerpao[gfrhlpemunmdackfmp]fbntrvdilgbposhu[koksbsqnmtfdsyifpp]eswrneaxvurkzfs[ixjekbpjqsrhnpgw]pppbdmxsdflptotr
+vbmibdiednxxbammtn[gqvlmbobpzpiuoda]agjiighkbopkxvwakva
+fnlgxejzkpocaonnloc[ojrecrvcmirtehjfcvi]mrafnbifqfcqxpmqdrb[obuqfqpyrkeinweynd]qceebfqvcmnowjanh[ejpkcpwkjfbvyjmyzoo]hhjyeulunsuagwq
+nubgjzyeuxvtwcc[vlpjhggsyeiulml]evysofvjmwxxazzr[tapuneqjkzgtblgy]gvbvijhcgtrdsybt[sdufwiyfojmptfruns]zqzvbotgmrcynfyq
+ibcblmwnlhhftwfd[ajuhvgkyaqeikjgju]rvuwgrbnjxvbcgdpy
+hizeoqbkkesksvtjotj[wkvmcgctdzwhzlubt]aegcgfmdneprdbw
+lqyvebgqsrsfbcdccps[hygatrvziszspyihy]ratonoqinqfwcmm[pfieelpgzrfzhdffhx]zwaytmidpntpolajcg
+admawesoilkvcfx[rqurmchqtkuifxm]tliyyitqauzegwst[zwpbngnlemkipcku]hpxfncvznjgfglvugk[ruinbrosnwmxdzav]adbvgjbxedbmxbkpxa
+gpqgezsbrdmqmeihdr[etboranxahpniwzr]woeyirnlebizohoa[rufjzeicrsxgitspt]gltoxcqgcsnvlys[dcvxqvoivyuxxayd]zkxlasittnitmoisr
+acoxthwyfwbhszfoz[wphyzlksmfenksfs]hpzmfaofkobjpcdxzs[sncrftlydahuqmuvoqq]ojvuhabayhrsynq
+nxtmkatkddomlbnxs[qdqxrwoaamrztvkzq]ycyqxxaijhrpzamcbh[japizeqvlqsmdqygr]xhxvgqmbzgomhsm[kizldaqvytagvviondv]tidqihojfrzvyxy
+lllcbzykxbdewnyff[iomemkjmyaqllvcx]vjvnigrbpnhdrbi[ukmffsdgnyqxafwstg]ralpevvmfxtqbzyii
+vphviazdmmvtcyc[dcomcirqycymvqkm]meeikjmqliqraeqd
+jcgueeliyoclqera[verzkovhghnquyndr]lptflbxptsugmbhvf
+rcdghcuautflhme[zngtjffrvagsmdrxurj]mwsuxjbytlzyhinxyr[cibaxfqjdkmdwxr]yikrelnmbneqrsg
+jyvaeqjealrbvbvekn[yharteswtwefyedz]wosalojtbxzaujpiba
+cdfzjfycznejinx[uhnuxxhxgipoujnarw]bkwbisknvmurfnhp[jwbnvuvlvegrddzf]bkeykrhmjuphuvoza
+aalmyxywwvbwwttad[daxeeneiiiupzvqz]cqcjxzindssjrqb[komptxyxwgtnuedefro]xfbjflfujclbqflke[fpatdmophhvpcmwfj]cqbuduaifbuhwiy
+kogkhuakigjclxbjoi[yuidmmdeopwzvatxc]qdsbzscrwpmnloga[xsnwctwrdpgqvggoian]yayspjjhhpdsyzkkzx[qbttlvpkbplhagtb]ndnljzkxhgdvclz
+rojijwgcylsaspmmrdy[jzptmasniljjjusl]fslcazgojebnrrrz[ybcsqnloovizrxiwal]ghjlkcnvkjjlqodusp
+egzqbmomtlqvjfo[cdarustihbcqwpfpcv]fzxqpzavyniyjbfvc[wkmiofpbdcsnbtj]kmtvlxnlvdjflivtuge[jvlzovzdpwxwbcak]hwbtpuolbupvwfcbh
+drzhzwluzurvcjogd[haakukjmwslumvgq]cmwkhsuahrqxfae[kugdxfrtkjmyyfheze]dyxxyffqsfctugyca
+mlalvviidgseekfkqtk[rmltlzesxldtmsnyn]xdqfkftanryqfqrqkhc
+vkajuyjjhekfhmwwek[uuanfibpmdbwxesfmsk]dxpsqnnmrnspifpcyts[ezmjkdjacskqhhbaupr]wkzxoqszqigbajudnq
+wmpzatzujoibyjdle[awbuzjartnsdxfqtlh]votzdrynubyfrdip
+tstuekiwimhtizzlky[trscvkeiiriseqj]glbwxwiwdqhndmnku
+kjgjcnoipwnlqnk[hpukxdqokakrgjgjpk]nvinvznddzuhupepemb
+vuawkeimjefqtywj[mgdvjppiouqnnyhzz]eeemepklcxhhfot[ktiuxquqhzrojqo]zcwlowvczfjucqeo
+zatolywcfoplujidaz[avcmpullpablbdhusiu]bkwehsbzcysrauzz[tbgkmrwkzqfysfdh]anakunhzskapvmq[cqzomvulpzbizfuqug]untygoozordiywrnkm
+ozynyagffvaeava[lvsgzdvrtdifdoxgvwy]pdkwomqrhfolkmj[fhemhaolmihgxlehn]huscypjzuujagfaqk[deqkgecbrdfhskujqg]grknbktwdyznqgrwm
+mywakayudrxzofpri[qlywfoydoqmsmaoygp]xpwmtcqqfqsmsys
+sdwltsgbumfnbqq[irstsqsogmppmlmkont]lrwnbdnpkxgfhjeo[eqstbbwumfepxoqaszs]fdrrfpfiotaugunbdrr
+bappxujhicaqxhwiaoo[bjvhcmhrnldlwyrf]jdxfokaxlkbifuwyv
+jlziyvwcuubpsziikv[mvkolefxtgoarsk]tpixifdoybzfwnwle[lpbkitwthyxdbvwflp]eyuzdxvhuukuiaqfp[xcwvlmoqpjnehwudh]sqxbifjmrgwknsno
+rblicwlpfezecfhati[aqqhagfhathupym]vspyjiyytesirim[rqjyqiviftryoyychs]voksponpgjfuwsp[tmsccufpnvjdtgs]llptwgpugyjizqfch
+admwljcwmrudrrph[rcxxxswmdlllfdwrk]etyjbtmryjxeajzccmq[nivhwmfzjwaspuon]tslmnzikhnbtqwkf[xnwykihihgkletgdy]mrtryzmlleorzwpi
+ibgqtdglmjgcdfsycxt[ruddaxuheyvamwyi]neoneshgxmsbpydg[ytpshrjgditzqmjdlz]nlvhgtzsbzoskiva[asuilfpsgtgyftgtsho]xgoevzdtjemapbnady
+appgubyezsrmwec[wbqyvobthbuperojt]gqxsjlchxpwvdfvdf[xlndklktmbpjkzuo]molwavhkvungdkvwywm
+jusgjqhnjemncvbvy[voitjezdotclvwaggg]ffunuypbjmopbbvoh[lhufstqbkhqxqiworpi]gnhhneydiasvmbvbga
+hvboappbxdqyjvxqyd[yukgymhpumetulsznf]hgiqjmlrezzsfndrx
+jkovbtabgnbztjmzsoa[flxcmdoflhlgvaio]qjxscacvdykhkxclej[taocvcbcyfrjgcxlkm]aovpiymrcdmebktxwfa[coviwkpdmukcsixdob]trjjdhlgwwkwtegkqmp
+ibnaxwwqjgtgxnlax[zozdkkwbccwdbvbpf]dwuzbcgeqfepczlvwo[pmlmuysuwyudzjam]pvhpqtcigtknoqxlib[kvwfykhxumzltcxidt]hybnroedkguawhgl
+xqwhbiiflggraco[uwhisdtpaprjfji]dexzbtghefojvtt[nlhtexyhufqeneytdtu]fpskbqhfhavnbkjxwn[gtxmsoydrotriljoov]labmxjlalzgybpdjm
+ibxakiwqconeyudxj[mwzjwhmnlaobsdy]gvxbmnzqbrzuorla[dvbreuhggwgdtbjet]hjrvpdrakncsfejis[tstdqmetsguihzdws]ukllrzriimevvsekrkv
+ztiyqybtvliidsq[mvhqxpqunpsqouvgrbx]qmhkzbqhemycwxeq[cdadaodqyhjhelanr]rtrnroumhiwdadrbe
+nswbgqjuxdygjrihvn[mkznbbryojdlhwee]kccwymwlzrsilyn
+sebujequsxstufe[romzdeirdhctzkmemwt]vqcobpsqzelktljh[twewiabushguyyp]mktiojirfewuoacey[tgnliawsrpkhyko]kaytwdodmxqandynomu
+qvfoyofzmhctntofr[xcokguepiaisrpwewng]lwwzyewekuamxxlepz[vybjmfsierveheb]bzvvxsdlcohnpmgir
+txjecoixmxyskgactb[tvgiyxcbgzkdmgb]yvjfganhyoguuygau[vztmvqrrheqkzasss]mngxndysymgybqw
+ptprazbzxzrjpnrcbko[qtdvwjwftefqzaw]ajavbdsfdjghhismds[vvouytxwsxpkttqr]kobwalobjsrwmxz
+ucvupuxupiasbzxsuo[hnocitmtlqgttgdr]qghjdvyrttaklumszdi[oyeqkgycqizvaok]xpnaaapzbfqdzvcqhr
+vvjibkoyadzluivaen[cesqlbhxmigdxphcr]ztmuzxnzeprichmdsc[daemwvspbbljrfc]jmqbyfpmjcddlepf
+ztncnhqvomvfnkhca[ohbigcgrevrnpvuwgpv]lnjucgcpghvtzlrgkh
+nsdamwafqwcjnslx[upwtncktpxkvkyhd]smtcegxuoakvjrl[dhvmeqrfgnbwqtd]zwlvwesmxdcnywjdb[whrrgcaujehwqcf]ayjiiktvzvxxquszmh
+vnqareestxydfvuvj[psgzifyszldodtw]zkrympmklegtsstov[gblinnqlnfqargqx]hfcchypjbzvbleabbo[xvlxasumenqxcdgzqo]zyhgaickhrgscmo
+jqaahcqcjjtinevp[kkntdvvdghnkloliin]zmrsdzabbeotokuz
+vnrmthshyygudsrbu[yjvauysxhjhnmqenmkd]jbjlrunbjbzvilmyqf[gnoejrqddyzsdixecs]qipibwxkrnbmdgtevfx
+uoqovspbksjvndhjz[gntlvpnmkbjcbsesyk]thzecqozlhmhrpm[ebvhbuhvuyfudyeyeey]zdlhgafvupyipekqoqt
+hwilsmnzpcjvpyor[pmphksrtsuqgkdqfyx]psibvhgullieqqwyd[uqesmzorfwbvwgkiu]hlxqjuuflhxlgrub
+dzxxmdpesgrpwhw[ohdfatbpppptmdyia]pqxvivkjxrisnmzbrl[iilqjrtayjrvxccs]gwfohsvsvsldpwaelep
+vaenounqqmpnzww[duovdncntfceyoqojlv]qttmppevxurnlzde[jhwuqoqwdxjwilrgxil]ehuvfpawjlrzmssbzkm
+wwxcidipvnqzxsvhaxw[oivkplzzdeoyqlemho]qthsqnpnbraqqkeyvk[pdkqargzfikxoxwsimn]biqpfsweppknwjvuwx
+yefdguujlfuicqqiq[hqlabsggdampkda]tccxpvlmetflxhnd[oqnlgkzvzbhvnzzwz]rfugmbtihisgdklb
+cmapvofvmxpioycw[wsmfasgncvdkvjnodyr]dkxkldjxlpdineg[omntdlldszepbdcynah]swcjxnbotrewahi
+awbucpjznymkfhjaa[avrrlftouhjbnle]atvuoxpckhvplxm
+wfrfilbmvnfdjycnlsf[thxhuqnznohekfern]ndjiygqshnkfehr[jpdgoiqcdevzyrywcp]iuqxgoskimjzasbvsct
+crckwgzymgpzhckbgct[euhwrvuqcknwnfwokiu]muiqtteekeqzajvnuc
+tljyrckyrcnheftu[xshakjmkjvzulic]mrloxmdpqnxcjhnwh[yyqdzldmfgsnmph]lwlpnskgxbkivqku[bwyxcdoyizqjmfvmc]reyetuasijwucrgylh
+zkisfuqufwbhfklf[nicopfmlcpsvwfq]nmwkhlxmquqelszgbe
+cqnuuhyddzalcxc[fjmqzkljrqjbexcxxf]pbjsvyixepnkthndhb[xztvuzlknucygyvegxp]nwxzswdvaspdufotcxs[bivsecxgawosnflmfd]bvdtxxionieorvecr
+txqpvnrfxykothvao[uikgxsmnyxwlobod]tddprkiwjtdcwbobzrn
+qjgftnxktteviik[hsnjrychdzepxamtfop]golzdtnptijzmpo[gfgevfrczlektwaohmu]vauncttcwnozkrwc[ljvbawzsqbknkuktnn]inwckpvsipmunmpo
+kqxvmryochlslekzhl[ivuyfsoefnqqtwspxtu]bytaafalzlqvjumuleu[apezlzoaspstxvknv]mnkfbppakmectmiafs
+vungsqgzakhfjlbuwig[cgydynonrrgfswomgev]lkyqpvlplfsmznc[kttzkoqpeplpfaoheek]ssijcynyhenhnwvd[hleabsbwqkqqnvdd]xbbxdphvgzmnauj
+rxweekbgidxrpbcxk[zvguddibzffxqcmvq]edhnueezmvxinaxyo[mqhjuhujxklirvkm]eaozfcadmhsyfpoj
+rcdwnquofraczluzh[gvtnjtocgohcsiswush]gnajmbxnrzppwobfjta[dckvvzvigupevbt]veqtchjayfclaltohjl[mkwsfnvdltripnzdkwr]jhdwksbflywaaul
+iltlipfzwdrsmefm[brcprzzhfwsrzbk]dlegyxlpizwtlts[fcqadgpocjjnahyqm]htwrqtzfxoeamiqgeq[utrgqiasppoxrbhhv]hwkrxhaxxtltgbuvj
+ljimkpaohzhoifdaiko[dkjxnandaghzxflymm]szzkmlubraphtnokpcj[irrxpfhtabogipufkev]bjucnqsbphjhekfvco[vejyxqrtfxuxeuelvmv]muygwodxspxrrijc
+inovovgduyohxdw[tbzvjivtssmlxyc]pimyxafhdeyomgeu
+ivahljnswgwewyhhn[jvfdvgftpukjcny]rtisgwgamadavuw[lmwlmlrkckbundmzjvo]eqjgikocnpbjpdh[mdpfdbxenzwycoou]uelglssvxdcxlwucz
+zolsnrosfihzzhu[ravlcysbjoagcvaacmk]czfdqdbrlvweyyvbq
+vktqafvmirobwwhtr[iqvczcryidfihypuz]adgkyomqrwfucufmm[ecbtnwriqiiaurzkn]vtyotrwlidvraksywke
+oagqrhpfnkdvvsqemp[qsjyvadkirmihtfezev]vuuantqauwqrbyzxpev[mpaqvjcfntbdcpdi]ghgstpggptgbvwnmyiz[hghmuvsvhqxvxmmnx]owoulisjbqpndzgt
+yyyrtktdrrprfdtbyli[tqbcxefwdtzllez]uaixdyuensmvobo
+rginebxdxtfoudqwqx[bvnzfxfxsztzqyyq]dfvdsghoihksjcoccbe
+avmokgrhvdnoptv[ngynfydflwspxifoi]lcdqccyarzcasxrbue[navvkjotgujkewhrx]ogzqcdvefknpghfjssj
+sshuolwwobwchug[cwcurmfcxqblopvho]ghvtsqgltvvlsahwqpt[skxuphjregpzpqm]epmegfynfypbewftism[mwtakvgutsuppqz]tvapecuvnpedscjkfs
+vsqfdssjnhoineb[tmcwmioejrnbdyrq]hlclokouzhvmmywskkk
+zuxeupjvtrzzlwezm[gsptwvqfzpvkevapsvq]pvjuezgybonsblmmxdv
+dsyuvmvaisuqxff[vmguqxuvvtbjrrva]ivytyfdovrfmzudyzcw[kwgjymkeadjgvdvxarz]rpizkvgpobjriqutyt
+rpetcixepthhnydtsx[dvivlhhlgbxftlw]ensdqrwytpwniviwh[uierkmawdkijrbrbb]ywvqqtldiulgtft
+iruarpzjrxupbdovqlk[cipcsklubepettbee]jfnvwjcgypepsbnauh[ncvfofkqfotujbat]moqzftmyjreztaugkij
+uqqijwordoicegmn[ihceutxbgzatiwhtd]hxqgbplciimactv
+kthovdomnavxzkrtg[utmtbhgqydotlxos]rtwopdppoocytum[ptdpdrndjiboffigipy]fwxyvpdnlhjofwjtwx
+vitzjdhxjjossygyje[vzysmvvgddhvkufqb]fhwstpatifhmyespsay[mrpnqgygncsiwial]cwbbaisjnqrpuzca[taqkhmlvfdelcrzbryp]kwsdxlkmoplziobgct
+iwybfvkucobqwagtdf[nafgfydrpzzdujp]nzdzwcpazorvzncb[niuturhwvakdywurves]txickuysfxeaamhlv[kpiwhdphpimfnmjinua]crunehowomfdmznrc
+qololsmsdenfcxmtqxo[orjyxjutzakvhok]wgcgzavspuxtiyhdds
+fvzbruyrecjzobgjfnv[tfnighcrmbgeklgaq]eanwrgtehcxvxow[hrmkbicsuekiicxw]pmyfavysbfzttzncxbm
+frjvccazhabvndxri[wrmbltymeeoqpqtx]hbyuxmlxfrjrzifpj
+nkasezsbfuldeolo[wshypstyfliqxplkh]nsoplkbnmiagngvusr[mwpwshlkyfrxlgcofiy]ycplnfgorpssaitngop[rtplyrqezwrwqhc]houlrclmoatskoufgti
+cmsmitcywtmhtimj[pevbzyuhvaqftnugc]rjaxtggjpjvayzmhx[pvfplwswzpusjzhom]jmaurmlkkbusduxd
+tshzomvzzouayvevgb[esegiphlwqwlkgt]letvbhxdhuzidevee[zngibooquknjqqxnxz]dtnugmifjztkwjpqd
+uuzovqhxwovqeki[ddwwgejprtbquodnj]nafunjrpotozufcf[lqyfeicklrejcwwrvxu]kfxgdnpvqdmvvitzt
+syawdtcaspkeubwty[vyxykmhcofzktwfex]fmevgmpetmzurpou[bgqqdkgrojeesxj]lhnvraueoksvtjz
+hkyhsguxgsejarhub[kuluosrzpmogndwe]wzqvcpdculcwgqldxm[uybwzbsgzjqfspayk]nysymudwyxdocossgu[usnahkjspekuwvgtje]gtjxtcjsdvtzwmf
+jiuygraiggbzoxz[wopmhgtzdwlkyzvfhs]kquojxccygvgujcopbq
+rmdqmtbvzoocsjddyj[mmwewpzkjayrxkortj]cznmpvsiqtjdpbgbbf[dfgdncqhajjrohr]kjsivnolfcccyijyd[smuudgbnrfqkxzec]zukmasqygzxrjqoz
+zvhafubtbxcnggnnec[khfuhiaikrpowmg]udtuciwamjspaojuks[wlzjqwtmrfrfxmxcfd]plaqjdorfrbkkppep[exrlzahsxksdqsllkn]fooqtqpmnglrwokq
+rilxjscompommcmc[qpdxzxqycqutfyj]xvoufpojhanaloymvez
+crvrlgjjpprknkurjq[tuvlylfiibnpkzmi]ghncayxzzrrhwfe[atnpozkssbyznplv]elzhtwbiernezqns
+yvdbhamisqligavziqh[jcfjonwpgcszajk]xdszcpfvefvmlduoo[vqszbxqazfwgrfazh]geltrpsnlfyzzxjsg[usmmfawdtvkvkcm]wqimqpbsojuimmf
+fsgjpguxmrmwxeymhjr[gsunymylqpnrbmiqyi]bwqcxjzweyndcslvxx[rhtvuzqaxazgzhhwp]lqiceppxpscreytystv
+zdzsidcfertfbeifye[vdttvawxhnsjirsifn]abpddikgqtsqalilwl[mgqwvkdulrgdgni]bqjuliwrgnvycgnvcr
+jrrmfvdpwdborgjxw[uqsuxsointqfsbunl]qosvmfqnyadjfhrc
+huekbtocejhhjud[hzglqavqagcxaaksxp]afqncrfalluiiqzfo[mdgrvbtzxdzaztpeg]lsthchkkrvofbaa
+lsehhfmwrfuqzewvxkv[rjrryjrjwhgtdifux]nnhqgwmoxdcixsna[wgburhmplkpkrgmpco]hrakazqqsstcrxupvv[mhacbkzqgskhorwf]fbobhetgehykvsbmb
+cjmaltrbirusgyoirp[eipxzkuhukkdcdh]iqyymukrkwitywb[dcvtitgqvetxqip]sldydwlrcdcrljhzu
+oqpgfzdkcrsrazei[geqerlvxxatddmn]igakhcntksmsttyqsv
+tjhfyftjaclsdwzby[oiinbkqwzmhzxeic]ehyliwwisegufbhh[sqmpgxuqhsxnzdi]whwxlqgetakchwht
+ukgmtuvowisscvp[nhzgobykdniheamz]ekflzosxwmggiuuudz
+sqbsxlbyunhhepfx[okuhhqbyojpkahiz]hhywggdmcojawfpvkhx
+xlqohzjcztxennv[cnbtlwijpkczgrk]pwxkxivbtxzovdn[bekntreckjtfkrsihm]ouowyjrzyjbgsygj[cbirdomndbelavpb]ujdrausbmqhnretkhtw
+jaowfyulkleymkdpl[yxwftdgbtfzugqnnzwr]ztmzcodybfzmfrv[sttkedpckbjaxmqvhds]fidvanwfqvpywervo[jtludguqxuwucvzcjmv]mfnoqzvgatqhvteacyp
+txyjtniwndqckudby[jbemysikizywlxbv]bezhcvssxmbmzgpo
+gcxfeqprbvpwtdnrxcx[kvhziidtwrxlhejxm]kxzumooacujxvuwsiui
+vvzhcfuecgfvrxrnquo[oqgutuxthxlcxhpke]liqjotlxzbmsassyxrf[colshvmiwbfjansdg]vggdkkyqrjvthtvp[dmozaqtceghrabasafj]lnsoewepnlbqvibyk
+keehyqsqydfzlqrqqu[obaslijmtiakxkc]wmrxgysajmjymaqpas[tqwlwdqldidsapjtzct]mjeqlhemnwupulj[xdnkrxbbtlkzeapnat]btxcxfncwhdqlhmh
+qwdiosimjitfulva[dhnypfmjunifrhopd]plrzlaakgfirzcccif[strfuwthjgfazeoq]lvhimnjpbpagrozczhn
+adqktintsuslnns[mtlbicyrgqgnxuhqcd]mdadfpkvbkvkaimvghc[cvqgxjplvvqbato]lbskgsbvqnvndequq
+brftuxdhebezivqio[yukrabpvgetpxpylxj]ldgifnehggvkdtq[pobhasghdmctwcgl]ccevtzwnziffjhqu
+ibeocesspzaammu[twfeunwtyqohdtz]kiknftbdbkwrzhrdj[ywsjzyncsuyykqgu]yqbjeqoftsblixeozlz[mmcmncavhecsxbxi]aumsmhzrbxpjqrxllit
+hieqiicvqswviniteuv[ubxwceioqqhagxybrl]kikxmdnftjiqazj[oyvdrxwqbljzkjbh]mejsqgnksglqmsfrlf
+zjeouhblfsglaxzz[efenlnptrfbopulk]tbdiezqxnkiwmifiyy[pylvblxazwozkdv]guaxwfuktjlovasatlc[blnlcbxxlcgddfquwgx]jkemembgzzxssliiywp
+juscmzarbykdkbcf[naosptvhazhfydzz]yflhbtlxgowuvmf[bdmledxprwnfcaflpf]fvjeubkojokjcfnzoo[bmmclnpuykellsdywvh]vibjnjgmtpoyvdw
+kqmrdsifaonqprpach[chzxtugxvhbjujlzgq]ffbjsynmytyajcbsyn[jsondannallzwhz]gjrnybnhyxjismip[nocashryyqnbsszebpp]pbugutcxooiznkwwim
+vfziparbxeibtccl[efwcwvbtlutmoltmrr]fjwkgsaambdhwvefs[nsrvprujruqdlxrls]ivmnrtvdbkumpiio
+bjweouryhlzxnkfj[uuqptwyhasahjmkirh]rrxwiqmpcbwkhzr
+bgdivzqqpztnswtd[xwfurbswsweduce]osimciokvwbydgqojkk[yyjvptlwdknyxnzpr]cqiztxdhugywyclvz
+ftcvabkblehqjyqtl[txwnhqhrsrnengcl]skhszkrtpljsgiylab
+ackokzybncuxpku[xzpocuamnohjypcdq]dwroulahreyhkraojf
+hqlijbwudkycvijqs[buaclznmftiadyidde]jxhkyqsoqbpxcjgsus[atcehpnpgwuchfzekk]rvyzujpclugrfyksmk
+hnrkcioqaeeqjrpg[cowbmmovdcsubwiltd]myuwiosvtmymgfyav[yvyjgtogmgxxnawpda]saqmtvyakacfwsvtxvd
+tyanupyqajrxmuk[bkxkehodeqxpclfebq]kiupgpdlxfvzydgs[rvbbrqbdsolzrgse]srmrovuaxvxvzmrmev
+pjbnyjsxcwyhjzpvqkl[qtgofokbciwsszwa]bwvnbcneuvipqaaiyjv
+ecxbamdgtlfpmqhi[khvmvwiorzygnitsbb]znripfwspcqgsdzosv[nfhgdavrprmveeexppv]uhzugtmfmipmaznbby
+jdoggfnexvkxovwiatd[xzxovisxynejpyxhfz]ciehyiyumbbwwxrc[nozxzgzvotunvgnhhjk]umzgdkvcwauvkzr
+qhdaymaijahfkqzw[mbjhxuvbksqtvxwveau]rkvgvfqsehbynbom[keygsbhockgurps]nzmhlxxwjlpjhzbhw[ujitcxihwbjrmrep]cbfpxvdzbljvbfpzsw
+wiuprpjfojcowmy[vmrpruwhtzbwyciid]ntbkrodejcrwavjfqfa
+ctqdkuxwiricymu[wexourbkgedaqbybfj]revrxjgaoalievfbj[qtvcolrhwgqtjesuvkw]ozphhuwwzzguldf
+bqpwrkyhlysqvwxga[ghyqnatqnccegjnkgw]pdgglsmagwkwemidd[fcddsukcrksifkv]cyutddgeoqcyopmm
+mxmpasrqdexjpqfapbh[rqeoslcvcwqteki]zpervmncbpfbhwaxmd[rnljbhhtgiyluaaetx]aycxgjfqyxhgeraelo[fukyvtlgjzupjjrxvt]peumsiryqvhwcsutrj
+nbdnniplhgrqkrcd[thcyuekybfqraxspek]rlwhyqiavfrfglg[luswlglyiuklvbuqe]mdgjepgjbhuyqkcs
+lwueejoqpguiciw[kpbyblloubmxdhk]omjurxlkfpsdwdmbl[qnifmaxwapfvglrt]vssmqdzlxyyrdgkwh[ljslsxolkkivoakh]upwkosogsrzzuej
+rfqbvdzxrnrbuhvw[wzurtnrnslhoqkdoaja]vuxsxofemkrjzqkk
+pqslistydhvgulggwbi[nipdejpoxqfmbeft]frepgyumygqywwycjl
+excgzlqtguboybi[guywktnzbmkwqrbp]qghuyihqlgjrdbuljs[zrkzhirafcadgqnifuz]medyulldvxdtpmqifpg[lsmokycxcicnxcyfpe]cobezkjtvpuqyqu
+aajcheqlcfjvktswy[lsgbzwuxqcbgicd]skvwyyeawvlzzfp
+afnnxrxdhbqqixcli[msrrsiakxynnwiard]tzanbapzvxtabeuz[rbyqhswrxrofedlykg]phyilynmscckkxgbhks[enrqxrwqiotksdor]phnmohcaqxspqhv
+pjyiwunebggfgpgsk[ovrxnqwfhtrjoxwi]lmkquysxzdebvarwfxu
+cdztgjverhjafgemi[aogtmpdwqhazrij]dmypauxszajopbp[sdsrejzmjvpjijq]okitpugefdhpbfnzs[jyospqqhusxbhfuuzp]btfwfpiblknocxncj
+djgkwjxzxrgsncwd[iuaqmffmnfklkieaq]agtkftischmbszqpo[conozrxbpdsuonpvx]mflbagusvgzybhasrlf[ntidmtstsedfdbfwost]igffrxgipzxzzyjy
+ahfhhpqofpjyshcus[lrxchnknzrjtzkgt]hvtqhnuzihgxovj[wbnqnjjnzltdyvxswv]bmppxzhzgwdsckuo
+ghwlmylxxuybkpmo[bkxcurwihedpwjm]ypkvoiavnzgzlkahlp[lnxohqbghwsnbeqgk]vsegowbzcrqwcsgy
+whzaoswycajecyuw[nwzgcizbidljdtoull]zfyczyjiqsqxgzsjm[nfkpyfcjwjijtnb]dabgzqajwpzsczrfzrl
+sitsnxvhgjjnlitqs[vvlbonwoskugqxo]bqitwdmlvnlcziltj
+avgdblmcidneynp[gkjdefhfakqungkij]eztuncfdkicjhaytdzw[dcfldbgzscsumjox]okqkplzsscszdsxejso[yihmpxvcbnsofchozr]easrxwgppwzqern
+cvefvhycaorfsfbmi[fkvzdrremrlrvdl]cfcjirtcmdphvfircx
+wegfumofnzigbnhy[oqkrudppjpvcuvr]fzyxsxrktwkgrvyiwz[jkporwybtotanposc]exmwkvygccdurwge
+iqfavtweexjxhdkz[drnsnxjziacormb]yftyjvtetmuvwew[vlrdviggcdfnribze]xzykwuzopkedwfqjxo[vnadxonxshmwhvk]mqbtnfjmhjmfdftwm
+odyopnscztauzvjvbfe[zpgqzgzcqclarhkkc]lfuvvhwhtlypbfv
+ogaqzpgfwlmdrjgo[abvqsomptscdejeyfg]rukgbtpqwyyvnvrdz[bcvgngjhgitweuc]bljvftlzomvgvmlkzsd[yhpnqsmblsnfgfnyv]nvnkvwwllyygxcdnef
+jlbnwewczmvtoshkwk[rmtpjyqhqxturbfc]ulsjqpziwqfjccmdpgy[neunvaltjjkcxvf]opuswwcrtqbkqyq[wzpxgeaohprbhvamaf]ybxisfhszawrtgsj
+mmrbaaqjvgpshmn[exjdqzgpzdalrwmtha]qrxggoccbehivaiegs[udbyzlbkpvwfkaot]vfbmvytjziptkyv
+pjtbkayljttjwyztu[clbiouysqsjbyjguhe]srltvgtetxcbkud[qnuhjnuziihtvqtbeyw]iccppmvrkzyehgiv[lldvqxdqvpcrizue]vpwqjhbktcmiyed
+vxqpmalvgeaxtkpv[elquojhkjsxpmks]dqvuljielvjopjcuvsx[yoklegkajhhpatv]cnfivppgdnkjzmrr[vnjebiwfefjgqzle]aqkvijxvgljbxmm
+lhkkzniihzzsqxdr[gvhbztmgmlicdoasdxn]fthfehxdcnyjhdwvsx
+sthxexgjpexecjzr[semwlxfagpybhblcq]ztkmocjbxsqnwfs
+tsswuaezqpzyevei[nolctgupccscwsj]serolamcjmqaawea[qgjyyldemhsqivwmvtn]rlmxvchrccptrgmmbko[qtiqgvilvevjvlkxc]jjcnzdjdxycczflslq
+geiglvdxwpsdtyt[isbkywwxvuzljpnv]djxvppprsgjagqtfgl[wmhnkumvdpikdjhmt]snjqvydpmjqutduh
+ksqeegpqcodzekvp[htprcliyvqdgjbqv]sqykqimpyqiwktnq[bfjsisougvnyjoyha]ixghemgcvicbedylz
+mwomvddjcxrdzmqplow[fznhevtpwhldwpo]ygskvziyhzxmtbcikbl[tjhieqjuukoqmixm]mgzzrsccohxzfgak
+xvdiafigrvgrckwol[gttxgvtlreruvonzl]fgwyzafvtwaqdwuo
+siyvzqpzfobnlgtxn[zcgxyzgysabhpvsviup]xfdpicxyxyjgxyxd
+tuyintcsfdyhfxofk[abiuiwquiscebxbk]zqazrpoxqqswycjwvk[hayvaaykkacbakpom]bwwhqzhuiitdaed
+ckkmzdomnglfwcbeh[avqftwjqckajjqe]fkpgyrqzygfcheoctfy
+teuvnsaipkrkmuu[rtiypvevtipwuelkzxf]xqywsffobbokraw[oonkmkqovksdycu]noxwpblcqqbikpbck
+bwgmejgaihdorgcqq[djldztucejcjizv]nuuzvdhlgqscyrjmab[nwcglzehbfzzvgr]aybubdihvypmvqmpfhi
+gxrmeqpjnbegqjeuui[iqpcaqmpavyeeqkye]etydxarxyxculok
+wakuruxdmenhmcsgt[lndpybwsvzyibmd]tfabajlzuxwwhofz[msknqgraxzpzwytjx]lfoqigitqufmhfmgwgi
+gpusiwyruzmkoluea[ofbgogetujmjnqv]dzmarlipdqkgwdzwzd[uhsfvlrawossxvxyk]yeseypubhoapfgdjom
+rcmnwwzrimrifziyoyg[avrikteehxhxcqhsq]yklfcrtqwaxmoepr[lahpskzjdwrjonqg]wddynujhryzkunrokho[ixwzkdpcqefelgcoabt]arjhdevhgaqcohbut
+zkcxzfkwxxdtbumymqv[qgaztskshqiukhwuelq]wxzpzaxuhdtfbimub
+nlgurkzredyklilaicv[mtxzdczugdhoowtp]hnhcyeygqrbqdnsc
+pbbcmecbydtmjigfn[giiambqbdgbgntq]zaaqvlpkysxuvbgbo
+aqyxolkflikpaxr[iqrnhzdtynkqymz]rwmgahzmvwtfebyguxh
+kcxhmwgrvommccee[oqvsuahbhwioqeunkz]mhcyripmlfivqsimnpk[zptnyqihvavtlxkq]guacutltkqoixskg
+ldpiuuwsszyidqxqj[tsmectapcwuyhhy]slauiehtpaocaeqyd[wbhrligadmsgznlyvd]nyvfiipvkthxjuoubc[zplkhqbtciuqnhjhiwy]olcmrcsayukgcbf
+tzcpkpyrdolcerqnwu[zqvhulfxfhgaehbwf]zaekvjegdligfrsh
+ghellbvwbjaummjjoss[pevgyftbjzmlsryfzv]kjdgnwfofftlxbiabir
+pidtrxbnvaobubqwah[nftxjicikdapqexh]mwssisitrwjgxhk[nghedqdzfdgxaqacas]hvehmhbxzfwylzdrjf[bisktoqalmaapoomzt]lwkkhvacvuqvmsv
+bdqjqlmohbjvqlson[mupepkeeoofwydse]ekylhrfsudqdcvkv[joofkljfkmpknazry]anyojhejtzfofcg[zcvpdeswtvtngyqleri]seqoyrfsqawkrudmg
+lmjegqfshvauxngz[ysmejumumaurgvgrsy]xrmslpnljfmaidojz[mtvwolafkcxlwjjthy]yjqsssxayanfdrel
+qmmiampdlsscnqml[ymselibefbqnqakirdw]uzxhisxyqljsdvhfe[jhjnivjgqdfyeqcea]nxbqpgyhtqzcwoptq[frlnwadwwyfnndeqv]qcbefaxmhgspalprcdo
+tavfmtbizkrpnerc[kmenfsatjafincrwrlk]pbbxvydrsqnfyap
+hwrkfzaovfbmrqhff[qglmybgnoytlkma]ibbbvmtqegqqxdk[gquqtiaqekcwiudebb]ozhpyabnxipgwfs[xqcajsdxhwpkofa]ssaordrnwjyvmcmjtp
+pkyhiseqcvejtkbqcgf[xvgqerenvyizecof]sflyqnazxuwbyexzwyq[zppuknfnnngpwihe]hacwithomkpaveqjrs[whsspxqxxqihxrmqxvn]ifsktqmduowpuhck
+xqctscaefqpvqcrm[rqbjdsxwoynqeoubwz]zycfrxbkijaedhkr[rzzbvjmogwxgcqa]hpzjokedwwmsbcrggmd
+hcbohuwdyeacvgmbmea[mmpvzmjiryorskh]tydknyaqhgcxafmqj[ejadhaojfjlsfxs]duohhgjdfjffvwzcgel
+ltlddqcbkkayshw[qdedbdppzuqdhfaxt]doedeeehsibaylpsnk
+bywykrbttmmpyacsoo[ghicjobuumyckupnmw]wzxuueyajmgprxe
+gejngdvsephfgyawm[eahzdehzhyymhcwx]qejrbkjhhplzgbehwdw
+hobcaacuxkoxnutlayu[yvsylobmhtczpxdhvh]qpwhgyojuomiubmahcd[pmspsmyxaqrdvcpwnwj]ghdvfbhifxhphkseh[ntyabnyuoadseevhvpf]opibtuiwjogylqzt
+bbuecmhireivvxmtw[kkvuwrudhmpqpmqr]cqrzfeasrpqapvtjqnz
+uxsiwqfamsnemtcqyym[wemijyiqgxbcsvdz]tdhlutowbxpxrkrlpx
+tnnlwlvfrrluuxjnvx[fgijrjghghgrkfmfb]lslknlacvseuzwy[acexgqeksduhjpf]enxevtqjetnyftgrad
+wiegevfedudnajr[uryivbxbutbhfuh]zrpurmrupgeggdyc[tfykavyeulosotky]ahsieiakxnitxhaa
+cdymukpgwzamxpe[ihvwjlomeozhnxq]zqlglkiyekzhkesoyui[dqdkxlczjrxgbdfqf]pdipsbuxwhibjytdb[ngoqkjeboqlsuic]efcostvlclbxvzhloan
+uuavzipkjlcgutoxrbc[orpbrqapdzdsagy]hbgwsmgmyowonxftjl[wrimpmzmwyjjtnkaf]qmlpvrkqhqbdswyyvpf[lpjhsulqumdzgjxuajn]yocpoqqrpuquduay
+wivyimuplkhmmkxioub[vqfixqklclmrbume]trenzswrpqljwctfat[ulkqyvjjpchvkpd]mvlwfrclcfqziho[pbmrqudqsivfemt]osmrlwtwstidtwmbmzc
+owpgvzzedsxwjjdeuz[kyqifdbwfxcphnb]kyeaxxmsplabrbd[gayquqvysxjwpckzlvj]tiuxhodkebirvmdb[zhnicexwwcgbbnfd]hcxwgyjpphxocggfl
+vrjvymyzflpaqfy[fokfgiaiyyzruyt]yvfrfomlsjqkvtps[mprfrwzeokyjmdetnl]znjipokvzxljjgqaw
+opczfzhpovblsevqcx[twcavjnyjerbqfqvooy]tmyyybovoyqcygzzyk
+gpifunuvcpqjornc[wcenyqazsxzksun]dijyypqoxxmjiyi[kdzvguquhohgsghqqko]tzknqsgldnnbotqnocj
+xtnewbseisluqott[ukktnadfrptzmvmnmwe]nfevmvifmaaubdrytcb
+uvwgvqvzikkvvaltpbs[darnokckfpuiwvaq]qjgglscrdhximnfg[cplqfytiupsnlwjnz]tjjkzojxijhhghoo
+mwvyjvnzfbptvndlui[dvpxdnwzdssddngva]nkvlbcdcwjumrqmjuw[xgrpriwhdpyxvakfpsu]jzugamflkelhfrzswca[hvdnwrkyrvcdkep]kqyiaalprdowzeudqvt
+zahhurbvayisuhkxluc[dpkhtfqcplnlwkr]moobahksmsqtmxasrw[oyxemzzmvwvxrldebja]tqnquzqoslugwcqcwtr[vibjzqdbmsmtxckkkn]ylujuamatwbexgo
+ffpiprpoymeaccwoun[avnvjzwvzowgthwymt]sakvpfnqtnzdyhodzud[egijncssvgvsofu]dplbxmzfihrpopurlvn[knjefyormeaeoni]ubcbldkemxgefbnjcbj
+fpyokxpcrydmqzkgr[gprmekopimtigwz]fobjyaxokhstzjsgkw[njzhtjqrhoynlzpiw]svrqxlhgpckwoat
+srrcdyevzyzhxnx[bbojuevgatiabjudws]zoxxvzrngllhtrtfm[rxoiyzmzwoenbodp]keodzdiobtdfgrxzgye[akofrgfwqtqblvntv]rfyrjcwbfblulkw
+kxuswiaijpaejqzoxes[cgyhiwbpjrhaacwe]uqqocaxbsotoaei[runskhbiegmjwfyjv]qgnmhdcjcbgbsztap
+kvzutkvgsyiyrab[zhbqkvgbyqzgwvfpbf]nhtaiwzmvrssvxsrdz
+tncgsbkllaugseepp[axryamrptnzekcb]xcvqkfuggjcfqhb[mtmzyjnvrgyuwtev]xziofjwvnbsothqzdm
+hmjthvqdelrmghgnvxg[cvfmsllxyxchaglntl]ikpeldmfhjdtnvaw
+sdhirfhdcxlwhxevbv[rfktrkotbfwiolxd]bhbkmmbdisqlclttbi[ueaqlmpvdaoxhezzg]baphbkfivkwpmtj
+crzkarxgbgpitxjeunw[xlonohiojoepwnuhd]kalfjqpazwmwruq[erssxjpfzosbcta]exvgtqljewfuwioyq[syaeqtgrgswbgbetkzw]ofnozzjtykajqcuc
+xdojuclultxptlxgci[nkmxgmiyhrrfgoshmeg]zqxcexaabvdjcaiarw
+rewjiwxykozqjzneh[tczrbiawzwtndtqnew]yxrgwvnswgyxjvnot[khomcpuiavkhwjsl]ksqiuqyarwwibcssseg[dsrplcalbjojxlecjdo]falbpuscbjsdxvyn
+dusvvyynezzobcrt[yrikyxqxqreoqcyyq]vkjxvnlnmleqybmgt
+qzmjfdvoruomeilaejd[ksrwqvmnyiessfejo]lvhmckdfwzoxwmydxm[icmiecrnoqepcuzctl]unxwrfwxgnijdxqjc[tuwcbylgfhpaveyak]qslgbtviucbmeluf
+djblesvduxlxfxp[grmuswjaheivlqvtst]yrqstsaryoqejwkd
+kpyoqmyglnrmxculu[tuyuqjronsgluls]whuymvpcdxvxrimvmow
+lruqeoicrisykqejy[ruqwiitwyrsithkyo]hbgqgiywqwsclcsn
+pkpmmddfcezjrrs[rbzbxotrbqlnmlpidpu]aakddaqjvbbafbnk[sendmtepxbcpttn]udnifsqhogqvszi
+foqjzmqhghzmymeq[isvvkjfpmvmhquoidkk]tskrbirqdtjpxolwzw
+pneojhviynihvnv[meuldylhohlfwsxp]nmdwxhxuexorktj
+gpnxdnxmueucaawmctx[ggcizpwllvbffytwv]riqcitchmdekosocp
+kcoafhejmqsopizo[lyoqftddzxuuerafco]zrvrzbmnzcawaydwg[bhnmhrnwpzmghrprzzw]qcrnkmyfcdoymceacg
+chcabwcrpxqnelguile[ckxfqhnrwlulnfgxjb]toauhcbsxmeirtlyy[cfgmasaieapbabcgdd]ijenfrqiaeiehllwpvk[ciymykejvkzxsbxy]iiyypzaxohmykgbzej
+yeqhlpncjcipsmtzpi[zoidbyeatjrlgmi]rcrhombxichyykncbwh[wtduqjwbefekhnwo]kqemsisbcrcjaqzdzw
+nbxvvetblqcarlcku[njrccfhdvxtarpj]rhndgwlyfzaeubc[imtcezhovdlfyixzwm]dwughoowqyazwaziea[slarywwdukqwygnhre]efzdruetqfoqqxusb
+vhvbnbyluqqaqzolkrs[fbfwkawbihbzwlrhd]npfzyqkoxlgkklgxz[zboinxtlzrqbwcqo]jqhvalbjqaogtyn[razwnxfkshezamemtr]nywqcxpvmuudyqo
+jubvozjfmykufhrkk[qhbaxcvcpyzbrwjlrij]itseilbvjwvzlgqjfe[lgxynowzlpqgoyrk]inolsbnzxvdmvbrvwqu[hjzfopqwsuqvqhb]wffwgmhjubihiqkpuls
+rqnjadbwfosviivshb[rutsuesebrktxitgy]abukeyordcrrqvrgf
+bfveiveawwoqyluxwu[trxwkfvioqzltgafma]swkyqokgtrprzzit[kuziuekaorgdgqjgi]zudaehzrjfzogiwb[fyxwwswqrbwgomriqo]sqfjrdskmdvalkhchc
+pnrvpotetwyvodue[xwkxyzxflrvxdfogk]kamxypekoelgwktq
+etjkovmlbwryvhv[wvubzziqtxbjvua]hmrqokvqrctugqdazz[ykobpstcxdqweotsi]eiczvmdcfjpvhdyfnci[eeklndzunbzipcqubp]tjsktxuorvbnisy
+fnexznsqqbhygrm[jgnmivchcvxgssjcm]klqcaszkwyzzecve
+pdmzjundpcsxbgplk[lbdsyrmgxnatuwk]nwrhpgieqrtzpktaiqw[dcxtjtkzvlxpibanjma]djszxtofdcuyfpdr[kzblikjgqfiaykr]yhiqqurlkwlrrjo
+bwtgmmjbtisnzbnyedf[iniovvuewpetwsg]dgvjyrzfrqcozekvp[xsulvxvvtwcxuvbxau]vvjyodjlbbjxigdxvxv
+jcanelvhybigzhplc[lhgjkwbpdlcybzgacya]uwisdadjoniyerw[kzcrorifvylivkhs]ssicvecwpkxbdwq
+tuxlnjuyudvhazlxdf[oknheznyzffrtcb]joozaraxuivijskxblf
+rvfdfyaemhgyeynw[hmmkdfdhadrqkxzzmsj]ugfozgghllznjhdxw[ucrgusuuqthlgxx]ipiercifxtkghbkf
+jgzrilirvzcocaphnz[gyrvhettmmhxaxbmyg]ecpwkoozcgtpoac[iretjtqyscaqfqziu]wqjckfkbfoqmmjkuhqe
+pswuxyynrpckrquj[wfbedboaabsgnnzzzwl]wgfrecpfkvlvjzl
+zkcihebtrfmiryqkd[ybedpynfafkkrbfdm]ovrsmnhexyqblafad
+pbkoczqfumwdpfu[gtcvqjuwknlrfxre]crpyxhawudbilybaomf
+pnagrmxhmjftwltxh[aqlhxdwuzrvnwjwl]xhmgrrajywnizazyrdc[hxdxewvthhrwhsva]ckluhnyewiiqazzmvd
+amjksgqzgmoavvxtov[ekqixufaaepczzusfga]fvlmiilpsqsgfgg[gzcyehzgpujyquhrkm]caaocajhmhqzbacvpog
+hitezskizncharbzyz[nbwuldsjxkjezjq]monndtwsxuikupvi[iardznrxkorquvyvwlk]etzyolkxhyqsdirbaj
+ocsxlxpsgimcvori[gawgkxlilqzeakhzds]bodnyayaioozoeg[bmaukrfdlswrnvuwy]nafolaiqfeendahms
+kseklqtakbkzzhfd[ghivxwcqlgfgxeot]levjimgmcfpgqrjjic[ixwevpbqkyzthafyj]azdxqlromttwteeqep[kxyiyoxyhvgqlmvscwz]zxdujwvngqyoabmrio
+elgbshsnykhiyndouao[nhumkawagmrztsamd]fwqupmyuogneywsyhub[zzcemywfdswhvjpl]ockclifwawqsyzt
+hyetqdpieicmycip[ciwciijtqspvydxsdu]zjrfhyctplqvypy[hdewteddlqfaoifgy]murcplulddvzheegmgd[rooqfiqsnkjeelfjcag]pdzzjacxzdzmmgmqwu
+nufvveulfkudkrvskbg[cdrvqfofoxmqwtv]jzgfbywojzvwumo[vvshcsjnhobkayk]gkwnyerwhezneuze
+qhmjnzcokmkmvclhfh[ywruoexbmjwuxvrk]lswliylmniqdgybtyx[yjrzasyfroiuaeps]xevbxtsyjknqmeuv
+crwelvogceorioqm[xmduhdacxyzodslgtv]wilmwenmmnwgqteftrx[zonwpkkjimmmhbrtls]vfbovjoabzwjpxd[jjxievceapgflzeldwb]onucskcmpkgsryl
+ujitrvtlzcrtazmghgm[mculcmczwibnuhtunnt]izqgurxwxhwboygvmf
+lespfnkqubxfoqa[exmzkeazfrfrkhzufz]xpunddczqrkxtgorc[ymsbogpyjeimnuola]kufhnwzukrdayts
+mitdlhggspwferwda[fcwhldszpyfznayp]rbfzewqihtcwtjznsp
+wzhbemsmffcmcswdvp[jcbuktuymokdqfjj]zyhqthqbczupmcmkhi
+qulvtldmhliyflccbyg[mqggwujrznjefvjw]sduatqntzkkvgfqel[fyxdewnrtlkkils]utxmideawxrzpewmee
+ggpinoooeucoxmezfi[ovisfbmebypyafknejc]ccqkrmaimxmvxhtain
+cqezdujipgzaara[afkpzozyzuitollf]srmeiyjzqjruima
+ivbrwakbgkrxpilylu[eewfaajedkwjbdrk]stsichtqqsksydtubf[umxwxeikoyehrou]kwddyduytdhdgdbyn
+vowwatzholrusydvmdb[jarugsbvowdtznwx]oofschlksdrodakrk
+oruwtttstrcvcgxz[cvidyuxfxluddzxuz]jckmrrmvolclrbam[dqptqpdwkpewhmcax]rtfmeakahrcbazlzsju
+vjrkcrzvefpxgardmqb[wxmurzwunsvjaxfhik]meiaafxurfgikqg[dkoextitsnfeorgoihc]diohmorpmlhisrs[ibtzwvoovjmdpfi]oelairhwcbbltmjcjdr
+miafjehtxwnfqzxg[nlovpfjpeclnmlbm]rleupmgzewtvuewypt
+osoaytxzfrkcljfjv[bbpjqntkuuwpgupxsy]bgryerdaukelujvayjt[gycrjaelxuemeosc]jgdfpdoltoqnmow[yfwoyzixdzamgqweb]lvmnjywqfjfvyxhb
+oiksidcbtzhhtnegqa[vdxnacjfxbcsjzqdq]ixvwmdqdaleuzjniki
+ngbyqfvobuxdnjeqia[ksktvzdyzkvyvjrgkos]xwuslzgntfwrnyqrod[cxmkhhwyremunrbc]hijkgxizhlyzqfaay[ljwayjqxyrduyoebm]ancrkgmzboqtwkjah
+kxcifwahsdmqasrmwi[aqzdihesmgntomgmj]jkhmcqvxqxtshprsy[wgewbxfsobokszgsivz]zlpavaqlwvauvedwf
+ibhzychwgtvobvws[qaestubbbtvyylbr]ovsxlggntxnneirtot[kgqrkbiqracxbnbi]lzpfersavecdddsytb
+abjcqoeeqfhvqmo[eferwxtafaxzidjzbr]qztbvxsaiyqhcsdkj
+uqqngbvhyfxovmdods[zwyybohwrhprvxaaaio]cgyaactenmhiokzh
+hiqqvjquvdkfcjwmo[jzrxnmbrqfhjhvppdxm]mwvibfiltxmwroeruo[fasknewgpsmftnx]aubymogtwkseupwmr[xnyevhhalilxuxqqvya]mastwtyfihocpbjngaw
+aqvkyxqnjtthgkjxr[ahvjgtzfqetvqhz]vcaijasfqaygnxmdba[loyjulxsgyldkotlefn]lnzykvlsbkyuvnqb[iqjxfxdmjgyxboyzr]zbfwxpxbthtwtnjdaw
+iweumcmplhykolkazmb[zgzeryniuwebpka]hsuxltmwyxogseiogl[ogacxzbrbvopihzm]ipogfmqtohqqfvowzl
+hlvbzegrmbrgoepemyh[luscnqomtcxbpxjmxvx]tipsuhgnhdavsubyqha[ozroemaxbdbcpnydjqs]xqdwngpkteoyyvkq
+fgpmkosjnfnltkfy[sxqzypihbntsfnryubc]oygetjhbfvozerfzw[nwvofzjfuwdzxncwvo]nvbtoxgwkmhnyox
+kbqkyxwacrffvkoxmb[tqfooaoggaauopcanz]ptiakppuyxzwzpua[tefuhyaqzyeteexrsj]hkuwublifohismiqg
+pdbrixpmacobfnpg[mxmgtvdlsuyhjnjxz]ghuebmnxzqfljxyutl
+ichijthjvilenbfg[zeibnuadotzachqyvej]qogvchvkfeskckvmxw[plyhbwjrhhnvdumajut]xazlyayoobgkmevrpho
+cbkznopiuqsssvle[gecuynehzvcmfuzcaxz]qfihmsdjfsxymvesb[jtriyipbkkpfnazcj]wbcwllfdxxdzrimwues
+ntxzlslwvxztbmola[duloarwqzkzxsfag]nzrsxasndnrktih
+fvvowikdydblgts[xozwhuhhngdjqnbry]hkcwbqloymkqjyzpj[xfwuoehhuljposct]ashitwoprqcooweytiw
+ynbifagloxgkzlydhk[qoxltvqdpmqhawcvef]wfnbtiyjafaqfujr[crcuopstahopywinvgc]ppxsgbvevlrkdgsv
+tdgutgskbatswuizuv[zpmhakbnxnkehhf]ffuohvkaxpiptot[zlykjduigarhxygukw]bucqoskhlesclyzbpd[igdjnevmqlibrugc]seyjwcizckvbncjwon
+holbjgzpvhqirwrxts[lpvaadhoqjjwvijk]etjusqwbrccaqea[livhtrfodwoxnkvk]dmprijbirsnzuptikc[icjaaepybpgnorie]imtoivdxpujjmlegqn
+ljywtdshrtzqzrln[lqzqgywtrpgszaigfv]vjyyvrbkjdiiminfas
+xfluerhpuqsqnrq[rtxglsxbetzajmo]bktotbhryqxdqfaf[cptmsctjrifdojglh]qzpxnniqwxlbvnexlg[vooexmzwbpulnxxv]eumwdzoixhfxkoavu
+xmomvhstjavjyisvhs[suremlzhaiwhikzzojb]urbiiuvmveiapcybgz[botikbmkcfsghtgtcn]jbsrxdkpxnynfibgxyw[agdmtydfehaujynym]xfpytnqyoafnuott
+xjzhgefdlodsdahv[ihwwnfbwhcjdbrdixy]kmsckqifucrgpocyvc[pudtuuaebkvsrflz]qjfwaaylzyhzerjbhyn[fsnmlxncwzsdsqp]edevlblbzmwkgkfluke
+qxlppzrvoymnsiyb[ybyeqxwtoberzwvcdlk]zsofrmazkapwiuxwjjn
+jbdmjeyxyksaonmswm[vhxyxtashfdrzjzytoq]jpkbmclxjtprrhmaz
+vxishfigjpmdwufh[oykzgieieiypyrqaxdx]etgleieyrezvbcg[scrtyttykipejzmuhy]oxnektqrkndltaixnj
+jnetcyoxmhjfyfjxm[dezndcwpoghexum]xloobrzxrvanbbh[gvcaufplrrstvrf]jgdhedqsxchoorlai
+enbtwxacyokhcwyhxp[ahjgrmfhavhnhqoqsfs]ahdcbzojcfgzkjfe[gtjphvcbwzsiohlha]lwaphixwqbmbqhyoccv
+arwtwiiowytbbjsumh[iwdhsnllysydgbcuxw]kummpwhpyydfdaf
+laidhzhbdwoezqhi[eccvqcxwasyyzqvhrw]oobigxsojqsyijmjmu[kinacswultmqsxdhw]xlildtoykeuzgzl
+fbwcshbijakfapcqzj[qktwqwrlnuktxjvuvn]nbzsrphskcxzuzho[lrbnsyzvrorznoq]ewytfrszdyhcrhpcx[bmzudjktpnqxqwmblf]xtwqqocsaxoluhsh
+xgnhvwkwhfbprypnak[yuwpjkfdxygltniuepa]mmbkjavsboilcvpp
+hprznssbfrukcvu[mojrsfuktavnbhzty]ipdxnxmtbvsazyx
+tfdicuergiqhvie[wwpqnqkyfyhuqlb]wovoujvgcwuptcqhkd[whhyzgbflhplrff]kezriqiamcvkeifegv[kcbdxrvoharumkgzufn]xypaikbmpsjqcbxrrp
+tkqpijxftrvwkam[yyajdcxgzrkhkroq]qfrbvprhxlpgunqqs
+fvwgqznbhbrmcaubz[lgsawqyuhadojbqwrwt]gzbvdgpwjuwqsgokqy[zpzdukphcvdqgpdoex]atanoaretkhxbyzw
+fispfedprcrygxs[xqiggqkjgjhaskp]thgqnbgscmrcfqjckbw[tvueixxvxlsnaupqed]lshjncmwxgzzczjssh
+fplljoayuqmjtjs[vnlhbmvowousilhym]emygvrnfsofwobaducv[flrnwxzgkghpboubuh]sdndpovsuohytnq
+utkqxfkbxtoudnbh[bjatbltbacnlwzlbjk]eunawwbizxdytndqc[arhtjgntcqetkeikojq]jfooeguervzgzgudb[nhifbismjhcwqyt]xwsxwzwwvtqoadmgvoe
+bxbifxmedhwkesbmjff[ncfbdgsqfejalnqyar]oifushwlnfxghktjhtq[gnapwycvocshetc]zzslupkhadbieerb
+rrotstdgmwqowfmf[zlddfgpxgucuestu]dvlbhinllnkxdybha[aovlzdyhamvvcgm]dzehxcilzoxrmcyhiwb[xkeszyasnqsumpx]bnrsppzfvjhiyafpk
+qgpylzwwdjxmepsc[bumaitztsvayatapvl]gotathwcrjrsknrfuk
+odbkgubddtpxdsgmhvh[mbgpgqafpcrymkkdpsd]ieabelyvewiypbkjm[psowbfplvsxifqwq]szgntjujujycbfy
+urqwuzkruqfgejkdoh[qxxkamiyhedlffzg]hnfntvahsaivnzmawf[mxcrmrqtgmnplma]gxcsbxvqcoxpddj
+qzkfvuxmfneyrpysh[clufxjecvedwwegflp]rcxzfazrzbgogna[ogoplmljfwvizwniudc]yewvacqgzcjgdnmasw
+mgweqpewhvtdjnjdbu[pecantesazignmq]upotybqiovoujemqg[ipzggdcevkbkvpyz]wqtflwovevactij[ednlhfkzrtfwpuignhd]epfijiuwnczwxdmgvzd
+lavqyaejctfofhdend[enxgzalvzelvvxdt]dkrlwjpuipwnqvuv[ishvyxwuhxdxujbgkev]euytwzxkpwccexc
+haibamsiwfwmdvzu[aekmrvauzoxdbtury]tfgjabbgdrwbzde
+gqoyggrpzhfgrkjjw[kwhwkctzmjdpdoeey]ngurqljoormcjarv[bmvadfmdgpwpzfiiv]fkfqchwhedeymsa[etqtnxepdmolklpa]tywoaqpoowybxcoqq
+vnvmbxxccmctcba[ncggihzavxxxrhb]mblrxjgtypycewg[syiizsazwqrhsllezvs]tpzocblnycaokaphz
+ffpbdxvenqkihvvsi[bbukwnounmzzxody]bzfefymopdtkpdm[sjbemcyhrspadzkuwi]xlhinxfjjeajzuqjkuo[zfpeikvvdfptpxe]dhsjhnwlzlcxbkz
+gulvdtkcmjewjchf[auqodvrekgvzxzyiwee]rarumiavqvnbyqu[xywssgnmbeefrqgr]lyyjmkpmqxmjbughzta[avdsmuyfdwvzrzn]qvhfqmazlactaxtxi
+vvqlvlsnrxwhoxfnac[sablzmrjccqvauyjfao]avdnqlseflqxtgb[masnpoqnvjtkreifrvy]lvtoftpiotxcstvu[vohbaippdypuwpkuip]kxffhmrvrbmvhecnui
+kclmgqkaprofpmdm[bhbitgjmddxhbhu]hmasnpqsttrgtmuq
+tvqcqkarkyqtpvea[fjqrifichijyykq]qqtmxszpmovzfvk[xrcoyhzyxwmqwujxp]nzlgwxpkuersepyhy
+zalveeaqakqjhfl[uypjekwlbcplfcasa]sasiztlswzyhvpd[weglkkwlrrvdvfd]mvsdbveypnjsymtjka[kroszrkveyammdqqool]kgmxohwwgmvcdludvdl
+xbroawhwunnamvnaogo[uzdvwckcbkaahqltp]bxudkhzxrykrkffaiiq[ljfeimkibushcpclbia]wztapafqrfdpwcwpyz[xwzhahnbnaxjorpkaj]glhfrkaiizzidtmfi
+cycyarwdelrstoi[rivlkfszzvyljoa]hkjtyvycydwronsgyd
+mbdqighfupmzacpi[keeoafjlwzqeoaryo]vjcwhcjkjkandqir[auactffhpuwzgzm]ybkwzkxyevwrphq
+cpiuxmmwrsjzbyqkfms[buipqvxsetxzsgqi]tzwpfhknlpwmtxzggc[nidtlxvnowvutuqv]qsohatjnnizngzsqxxr[klnzvuognkllhhr]clpjgdupfpanyxwjg
+hhtduiwmfhibnpmhjm[emakclmaqjnvjsjyt]ntebrhiztekglpmhsrg[rgehmkrotjobrtah]gzlybshvhkoznupnhr
+hyzvardyeiddsgk[vszukhazfkwqsodz]psztzqehiwcpifdlna[igstccorevbmgfae]vdapqjiijwygxap
+towtxxuitgwhddsua[bydcnwqycygmimbrut]cvnvgtuiuduzjod[gpazublcnojkfnnvn]rozlfkywwjelmry[wvtxeleixyqstxjqed]vsuvzaskgyooigoczd
+uywuytlehdznyxr[goerwtisqdsinimd]abuktfxdobkfqabm
+rolwzkzesawhyxddo[yuuvalxthkptulugzh]tagfpsdniekrekzkt
+nstbvilzeselffses[cpgyssgpjimcevp]ehfkumlscjuocclfhel
+idvdfrmadfyhafvyixs[igsqckpzuelddtl]eclbbakcdyttbtse[irchopmhiqbeloiqq]lwbecblskhopzyw[yjmdufblseluvukftkv]nnawapbepipwcsfz
+thqwduckwmjtxwwmj[ppnucfmtpcsawxvkago]vojtdpukjwwlnirsvle[cscyjfrxjlgxhyu]fldolxqfbxhigdom[tgacpmzitahxucqpzke]copdqvctocklhvrq
+maseolhlyrjuoqdazl[klgwgcdfwhpwmnlklcx]jycbhtwurlwwsjyuubt[cuabclvzukvmoiniql]pzockwxqjbtadsspl[izzcraalbnmcopcr]cqdxcrkdnwclxcitizq
+ucyccfdgxaciwhx[txuygxhekywmyuaaina]szfdjuddiopneadpot[zpjsnpjtmicknxkybi]lfirzuldnatglheyhnw[rhgqfyfxlaunabfqxl]hplszylhorbrkuy
+vmgeqazfjldqcfif[fuepxyjuuzxkect]ywoxrfdxbyjomjo
+qacfshruytmlwyj[jpqmllbdypmnzqoe]sdhmtuefjbrmvmeby[xkyplnmmmcrcmixkls]motyvnyucleirbnmrys[zdopkcnnuvxmhrg]feeagfdkgorsubr
+knlaaiwxponscqwtqla[jxilqsyolsnanzxvqi]itqqqbrfpcexbnecnkw[bpcxykvtdbxejlcda]mxodmdxzohrturffnwf
+txvqlvddwpcysvkctlu[wvuoeprflcpycbghfv]ksbpnggnitrxkua[hqyiyucnvjqsceml]uwwwbxrjvodohwznlx
+oebxtpwwjtewgkwjbv[omataxkuqenxmxolwe]aiepvclknbgapqh[wywlrbzliilwwvebxbl]ljsiuvllqbjrvqzh
+jznegbplekeeohnf[hegaqbzbjwdhgkouzja]msaozvrtyshcajexwen[cnleoafnzyvbvdfndha]guawhzetoxlxmjwt
+nytoqgolirudokcgok[qjtvenvrstrjjlsbvzq]mwhkktxfsokxxqb[pgswnhmmgzcrgjbqcx]amhrxgwmcnykgpuzfb[dnihosgggajabkoq]jtyxfrifreihydzwjdx
+bxihyluintytvypxhl[kbnizownozfekbhmsp]sjgxqgjbhoftgmbck[knoibzmlipdnfca]ofyxruebaspanxxhakl
+xhrlcwziflvahls[babpaszszfgfywj]gkquumhyqvozkgubcs[gkjczyujqykeifhsylz]fhmvopfsltpzijdw
+ntyxwcfpdgnsyau[eqjxtsfneseakvrf]sbzesbxxrrmpmlazhi
+lwakhsvcamfxiceusua[ymczlpqkoiophom]fiybjcxhftziivsrsok[sejyfiorjpptboakf]ipsamdcnfnlhger
+ncgeewwfszytkag[kizbzwnxepsvdxsbzbm]fofhxxpymrbqvcco[swphuoqvhbpghtku]hvxqclwgtxxqywhhs[ibvpkuiylqazccin]oftqdvkbzdkmycntx
+yhnhzwjjsiqngmhe[jtkcipgiclbqublpfs]glxyczwidjilkqoa[ytsphdvgnawjsctty]xdofsnhnpsylvmso[pmjrjgiwhqfegydcs]ylfcipikfzvmpjn
+pwlhyvxnneepoqexj[jsnwzbjxibgqnpjgdf]qndnlnzxewcrjio[hccvunupvbcyptqdihc]rfhmapmentuhoiv[kohfhnoakeglvnasojm]oggzhzybuuupwdrjrtj
+eyglfycgaoqwsqqnue[woaxqinxtvrhsbjjvnk]cfnkhvorifhxedbmbmq
+nrqqggalpihpjyu[dqbqopedkxhoqqnp]qguazmdjtenlvzgoemw[ccjlmsdaajwghuikrnp]xrjcyfkrrfxddnjn
+wkiymdlskwyjrft[ovucvqbenolfvvu]tzymrvmekxnlptynj[dupyullbzepmmrmgwe]fnjtcvrvzstijxq[elzfqhyjdyprzfxa]uszwjwzbbzgpcavynk
+jrdliqwwffvgzpu[mxoivfuwuqvtxqmbbs]tvtlqzqgwzgshkpw[hspnaspqnjvwybzfzxd]clkhutlibvxzxfrgg[yujteartlwdhzfgsn]lyfrxjqcpkcvcsnsw
+gtfhmxlpptgvgwob[xlzqaoawpmmjwszqmhm]xalfbbroilfuzzqm
+gqxmhinpeppmdhbdt[cpoaeltrlzmfgsipvg]iqlrhncmkmjijjh[xsbdusetrksrxjiofj]zndjqyxwvmsnrbcyrmh[qnbxczovjlrrvilks]rfpihmkwzmgxcynu
+abcncmuhelkxeph[crlbybjylvbgtsk]yvnbosicedmzurqcm
+fbhtialrsrrtpwcxxh[pisambikwkesdtbsj]zcdseybwrdrkxeiylg
+sehxfywgpznuuypj[upswvzwnkinocjk]nabhugsxhitlhis[ilrwksgypfqgfexvuhv]torregbntatolgchv[kkimpdkcxhsxyuczj]xpfacbmnrhcxnbgwis
+hldgiynbgrfjcunattg[nwfovbxygpkwmxnulm]xleqlwcajqwnncww[waoaudnttcfdktcd]yikfvdmekcexcrhsi[sntclwlhouhyjrob]wqpclaistsngwfmf
+izblnsxlmqjhxvx[qpmqqzakbjpbapwtlel]vmriwjoqlrttqpoxay[ylqzxxdpycurefadv]ftcuduceaycwejp
+jqjtnshmtsvokhwnpr[bxprgnaltcsqdkceygx]udqckcknpvegeryj[zvjfvligrqxnpypoerp]zhzwojzkckjwgdyu
+ohxpnvtduqvsihjt[eczkrdqlgyddymrdjfj]zzqhfijxsgoisbwpd[lysfkgekxvqspagq]kemxkdqxetnkyctjp[bknjdsvchfxflsrkuum]wmxncxrwwxxxgza
+xnulgysrzxheppsiril[hdxgzhscbjhkcntrmsy]vhedyohrrqclnoe[nnuxdbtlbjvaddo]xivkwdwvmkplsvfaal[omihwmflpvrshkcoci]hekqpjtrjlsaomfd
+hfyusspcypxdbgzb[cxbfccrumbqqqxb]ygsuxbxdfkisqwstqp[lqctoagvchrmggtmo]dgmcjusbvlmlvkdmnpu
+vmpobkctlhdwqjyb[dxeinhrldspqhgeu]ndglldouuoawkiwtask[szkthuhxdkmfqoqwwgq]zwjhzselzvirjadzvr[rholepzsidriqmlepo]yhbxhcmbkvripyusams
+mzscivdohxhfkdqet[imwvpkunuzbhbaj]tohxwppjtsjykxrj[nhonsbadufgsqiysn]cogovslrrwexgzujn
+pzsteeyowqmhzaqao[qsbohgqamrksizzs]vscfiltkxbxwbdlold[psofpwfkxhsxllnz]odwbidqaqpuchaew[kruwykloeqpcrjzon]famaoipldevywnouele
+tuqiapyobwqwpwbqqu[ycphsbdcwbmklro]medgafihivwegukhfof
+lficcecamifbjwk[sdguwtafkigjiapxagj]hmeqrhxptojctevbdbu[zvxeefaytjajdpwi]uliqtzilzcnwmbfusnm
+pvyzncrszmuienoptx[bigapupzitygcxstqx]rqikselsbelyfjdm[lyqmdmfyofksmecg]wjceogefnlgelpguu
+hmddytvxqrazumnnr[hpeurkbdfejhlfvg]pedwizmuhmtpdwh[efikgkrhnagpmqypzx]ltlncfegswhwcxa[bakxhwhtvxcwcxtmofk]zwjvbxyvljlfaie
+oxgoszggsifsgrck[gruwptjveewmfewguku]otchieijhojsyxi
+kunxbbrdhibhtlknrq[tmtsuhwakksyets]xdugxmqcstdallfqgq[tticbbqirncbjtx]knkygxawcwdhefesu[rerbfffgddyehtvl]yasblwlhikbvjidgku
+qoqnwslopcpytqy[zngrksptgviifcwbw]nuislpzizqikmgn
+khmctigslwdgzghkbk[veaqghpizqwjxlwcf]aymehevjgpjgwruhyc[hzgzilbhyoazljsk]jocgjmooxqxayzsa
+xodvowdhvnquwtma[kvlbfwwzeuucthg]djlyemkbpudpjlnrkv[cbaqlhuwfwwfvbdewx]vsjvsxsizgwsakpx[pzyowqndqdbkdakdney]eeylqpqpuqvdyyr
+cmdykdqavxgeismtlua[iwviddbtauhirfcabh]fhpsinbnwrcpxdho[tdbgrmgscvzukjl]rxupjtwbwmtgnltbjp[vgzucvscpzgjnvg]zftzsshpmizeksiz
+kfzmwzmzdpxabvi[ftkotbrorpkpfxzbg]hgbrsewdgnnqhxvueya[lkjknzgrbuzjqxwqseg]oyzaqahfuqtpbzi[yflzhfxwkugpetsqli]nowgjqaquqhrlxz
+ktphtjqwsitgbaii[tjwcbyfrpupwkvzrol]smlczhhekwxtlvxdfn[mqfupholnlvfhuv]mvdhzncezgunydrk
+lrvdftzasxbpfgb[pglmengmgfbnzxz]hbasbstksqkkqpwkcbp
+siheyyvdmjiubhlapns[xfcaevnaoexubdar]pgbougfzkmlzjqygdta
+tblrafqbjhwzbwbe[iefobcqdrypwnwidvm]olrzzrqgkwiefngf[asvmlckavcwtuosgkrm]esqsgwmiyxncjjqsqp
+alvaycnbqdlvvnwcnq[jwxzjzgpnzmcampkye]hepmdlzjvxhboxh
+mtfkavmnrxyfzvkes[gmwvavomsyolkahey]dnqosibjkplwzjojus
+gbckujjuhwnvovpfqw[qwievsrrtusgzbscuf]bnrjcovodutibjtq[fxteivdfkpixonphrog]mnumbxikkkyeositn
+remzamtzlhwpndrknl[xgrbcgdvlvrcdrpi]tnzimcpmxzaxsgpu[klvglrrepqxiiewn]lozcwxnclirneaky[nevhtplqsmuhykzqxf]fgmsbwdgfwjftndzi
+aybmjypdrytigyyip[zafsvprjirkniuwr]wfdyfncywtdtzezdbtm[umbxrtflhquwdofgut]lyjixlycobwpwvhfp[xoxtkyhvwqgawmike]bfqtgcxvcfwtdpl
+tugswvsgbsfbiyzcm[akmlddjckugylrea]fyzltfupxnvagbshlb
+lcgvlozzzzpzxeoee[zsvjydznyoadkvyxlsq]wqmgagbkerqyxjnnx[isukybwewezizpll]odqwazjphoaqhzltms[gtqeysqpwuuohdbhcnx]yqtvojobgaluizidrbn
+agnxxgirnprujhsk[hagcvuqcwyhmkdqmn]zehvuytegijhnfqnk[ytlokgpipjcviulp]hsomdskdngoysnbmg[wztsneomppnewhrl]gpkauttapxhcjrsicvy
+cvnowinufvrjpiqtq[kuavqbtrcelpcuasmk]poksbapbwverccds[qdddbhewvxgfoldib]mthrvrsfygbhlwlkcs[zhivcpxibufugkpigzs]qffdjnrsoigwxqhaf
+kovjiaxxjvzmzvmn[cmrbwjccgphtstvaiq]onqfbpryjertymd[sgmcnqbseodopnnd]gbgealygrgjnamdq[yrjuwjfvmsmgbur]ldiztdwrwmeqrohy
+tluglhveqluxpiy[wrsgxdrzuigwzfsby]bmhqmnbecjnyutpwlbk[iifejjworkzrsaj]illltueflutteej[adfixnftjenvyrigmkv]zgsqagrctomzublltjm
+fhcnrceynkcnnjxj[jrevstsodmhopao]zqapczirtxrunfhl
+rzmxbxurpdmzgef[agevdburkuvnsrof]rhclixqpruwxuanwxct
+vxejrazzpddvobzlq[dpspaddyabqzrjgvv]elcpgozzkqjsasufcv
+iaodnwpcpresylkhyy[dltvlrxbvnqslzzyvox]qownkehbhjprbzf
+kqbwgctrhxwrkkedau[occltggonhshykttsrr]snshslgqtlgejanlg
+jpesfmiguicqdcnkm[oawppiwdsmoidvkcre]wfifgnhqeisplngcjkr[wevtsiuznmpapke]dqgxavmudniuaml
+ddewtwhdfjatjlgrt[ceurnauksrgwzondnb]znsvkdkwsimbmdxfkh
+hwjwuhdokecprunbju[jhftguwujsuetdriyu]vcgpesthcnwuwpwes
+cgizaalsahfzkcxab[nehrqohgkmbxiufyco]xbnclpuepsanwrwjoo[kvdifptokbtlihgx]hgynbeebmdwbkwrfbh[rlypefyljzefnft]wwevofyexvbojyc
+ckxkzlpwrfhwzuep[etqgjhcmexxvaccx]qqkhjttaudjpbjboeo[gihevbqqqumfythcfm]hraqbarwvqnmvtiy[cbnfqzxyjcpmwvu]lrugefybnoiopvzi
+bbmhfnwnuhvdgmoibjq[eugipbrefcqiniulz]frkuvbhbdiaoaqdcaq[ksqqrrhjltlxvet]cdjhqazjzfrphjzjr[aspkvkpmwhkzxfeic]vkhbjolvoddtaasvs
+rxkbkkhnaiudojzsr[ecdvrnjjyzyqjxf]uxctotuqtvambwea
+saknwxxhcybeglwr[molhqlfbvopapnuco]hbbaomsdwcfwvoi[rlvhmvffqcyftricsyb]pkeuoigxjpwfbffif
+pylywhhzktocomu[sehthaaqwkyerucg]cwfmpqudeylrtavze
+vmawzgbfmmsivwfqclb[fpvwdbyrfjgmidxw]btatkdonphkxtprxfsj
+kspofpgsttceoft[fcqagpbfoujjulhp]fkbxvsbuwioyngydy[hnoxyyuhdviahwsf]gustmoflyrtelseo
+xyiofnffruqapvtgnr[wmigiedeszezgunm]vydqpobqqrisgtt[kolobhezpsiolofxrlq]abrzbbmtlqvuhxl
+enzmvjyrzypbbtmbvx[izvhoqpjgqgmmvricf]dbghstbtqgqawqjr[irvprevogenchjy]gbiwvcxncbjjvwmshsx
+uavpufepuqdbjedp[itqmeflkorinwdpjwp]hlrnsxymcnxwulsmfk[bayxjuxhtpcwafadefe]srrkibtivlskepjxamu
+dlwhxttrwjlxlit[atmcusmqvonodkfwqvb]ilfdsqjtjbimpaqht[zsbqjwsrgxlxbjqmulb]feblytbapctmfuao
+zfzicvjnuuugutgymp[owgyvyjfhrqpuukkgok]dfkfwodxgvrdqelliaa[xaumszuhzjjsxwe]ihaxfxpxjxcbhjg
+gmsgnyadjfimoemyzt[fjtprppdzhkorpqoo]eyxayeizyntiumrgk
+wvdatykekdfednl[kwpjrdcfjjklpdofpq]lidlhawqalcyigapvv[ukqjuzvvxehbwzhsci]rdrfhnobcwtvivgcc
+wvqxpnxpjmzfnfy[xgtkzusumupupuqvn]vmxceafgkxhnosupdkj
+ypfaupbycoerlpnhvk[pjrtdmwsmsckcfongoo]bjxlfxbekwvfruvy[uccfekaoczxlyigfs]gnvkjcwikenkmvgrpdj[yrtbyzxjkmpewjpbstp]nfwcwhereraqwxu
+cqxbsrqdgqudcci[olptuqqvfgunmstjc]xnppdflvdcjfviaemlm
+asywjbgrfvbfnkhnc[euubbvzujqjnsxtmel]gwxqasfbyjazgqodfh
+gvnexriimytwvefmo[dtuxofcgyfnaiibqx]iaaodpjwjnkbrqsmdzp[nuvnumldfhglafg]dpcqqfdrekqdfyfe
+hnwaqtrqgztvegfhj[mzqkcvhmqhzwmhlkc]kytpmyhzrvtytwvfkqk
+latjxjyjkwwnvyrbl[bjnilknxprpwziowcjn]zpdvccsjiuhfwrkn
+nowozzvrysgsfhxd[lhgxyitirlsyljl]nodxmmwtydaqkoxvu[vgbjtbbjqgfbssytsk]gpzprrvyvseifydxz
+sjihqhaecgshhhdrbto[goawszmxrrdtoxq]qvywgrnewpsordounhw[oaxydcsvrzzunbizz]nzisqsdrmmsaqwt[nmyxmrkeainaqyfe]eacdicawhfuobezyao
+oyztkiwsxqcufgqk[iyxqvktohfnoymgisag]acfhjawamdhawitvjg[npflzsugezpsmunukqa]vhhxnunvyxjtehyvv
+jzfmuzdlemckyiccan[rykdnvtoavzjtjxtx]vcmkcuioriltvpzzxqb[jdgqayewkwcqpkg]ulsujrvqzsmnpqgvg[lshytukyfqhnjehk]cpwbeyiudngpkrl
+uruvigtkkoqkfdbqkre[wyvcwnxixwkacuu]ajvziogdmzueetqzxxx[fyevgfzreomzjbsumi]ahbhcyjbadiacwjplq[quesxyjqfbckmnt]oqehbkjyoxsyczfta
+xzqfptkjpiknvkyzzt[hklpsitbnhlozgp]pkbgrwmqrbhohay[mhphptvyseydwfq]ehswmqarsalmcatb
+ohahitbjjxlnkyb[umyhhgtcasbfbxqx]dxyhbvpjjatkwvpkyry
+bcixbnnzlqxkisv[tapovjggqzlwlmc]vwnosivvmdcfsor[uaapwzmzarenaplcjp]jdcpazyedcdkdinrrz
+kdofbgwblzpnocgpq[scfdzdrueknbdud]axnfckaaghmrpfmk
+fisxkiplryvtnrvm[sypuemhvxvohsapkccc]exrrwesixcvnhzpopk[hpsilxrztuukzksyax]lixfijobrlgmonzui
+zjnlscyhmjmoofha[ezglbbmqulybnvf]qvbharzbfbbustsm[tdeqjfbfxeiknfr]chpwwntytidtnnjf
+qildxsfzfukzbmre[jykfpbbfelicvkqov]pyemzfzobutliokrrox[uplajddwknupdnfje]vombwrjguiukbiwozj[kcutkvgruxqqcuykn]zsbonxyerpjkfpnxchj
+pdmfyadwrblhcvecezb[fhqgurbenzitepyh]xhhtisxbusntgekaps[yefgbqwocpsexwq]emmlcuwjwvluecbfo[ohehzdjljocucatf]zmgbwenmeuiftywp
+xhrulprzdnbbzenux[ptzrrcmdscsuryk]ognjzqtletsyrcy[snpqabmryhyvcyztmd]lhkwhjylportbbo
+xphruwdeuqibzdss[ubuaiomstyuqgcgzyn]upkpgfqmamubaqhkao[ohjojarsqpjldirf]ianntdwcgclwmyzwjh[qqeajbudidxsqfw]nenqeljkdyjucrqnsgd
+xuydzitbfqwpaafru[jasqmetengbkljylhse]wkqxkjwkoipjfhkafnt[uolbyhzhmtupebneng]pcjjrczeczmoenefu
+ievtjpcjrlfqwisl[pzhzabrlrdeadbtpyec]sowfrknejwbuvgs
+qcuiylijqwfcqwjisqr[icjobpbxzjzuaxc]pcrdpfgwajrudfhxb[oiqtbvhfvitjvuts]ctwyepzbqlrtwuclz[smugjsqssswocjyc]lhlncivlmhmoexsrd
+yqmqbdhiciqlgdmf[rywqydtlwdocdih]ofxwyqckxktvcrlxsx[rxupkwzkvwrmhuiz]znbksfkkqxephhb
+bgzhbpweidflkmmjc[gxozhwikjiygyrm]vykpmxdywyfummana[mcqteiumnmmoyiwtcqw]ntczagaqoprodvhxbl
+gvtyicyxseltoqfgk[eozvokbnjytodemeo]ogofokdupjyhzdgrk[fucnzhyuqkcakflcky]zfgxqfofzfdxyzetc[kdgpxyithocprbr]rpqlihcmgthswhvz
+svrwqsrlntabucyssj[trbqnxxvtfiatqd]isjqyfxsoarfetrtgmm[lnwqkkgqucipvocrk]cdcsuvgwvzurnxleuus[wqjewzmcvqhhgwawyo]arzledaetbnpjmwjrl
+jttgsvurypqumflcm[ccznbkqklwsxmva]ooughikefyugfvz[rzsyqmtahohpmnq]kyotvedmsjfshan[bwadbneyfitukleqbyg]oyeonratlyvtfbcrs
+rpbklfvsjmisbnowf[vupfpfstcrfdxipqi]wuftflxmtftrcrb
+igqcfvsqbbvpmgflu[kremgawldkinlqnr]ogcijqlgvrvbloj
+ncjbiybzlsophbdemtc[zszwhtluxpobqclp]unvkyqmemvucdtwt[bzmibpkgwokausrgo]btnixophsknmjrqozwt
+gxapkeestvvhodxnp[xlvglgrlzjdrpjrps]sephfhztipqaftxnqp
+zalwvceeodddhqqyrk[znydhdhxhprlmip]bjijtiotyvfgyiou[odtkdhdrwuzpgwkf]kldnjprzjewdeyzmdua[wsdyljqvdmfdenajaks]zcvlwqkrytjsryab
+schsgvlniqevsrjfkxw[drtzpizdeopipceke]bduaeqelcxyvykt[vhoefhavfmuhjkgooub]tzgcfhwkfuvwcif
+wocmjawhtyhxksjiktg[hftunpxmlvyxauvnfj]spefcqpimqgjhnou[gmzejgwtyavnatavwju]vccngpxjmmxlruac
+igqxjgofompnnrsaxoh[lmmrwzhovfloeps]loixvtpiyzagyvgq[yaiiiuvpjpuldqk]jwpjsgmvglkzuiepr
+jgvoejrytatxvfqwt[hinkejefiqlrpqy]cgmvjuyjejpinjunld[qcdmwbqbqusirlxh]udhmheqsvmqmczbbofh
+qffigxgklwwslnts[gwhobujjovmwfmrg]menqzjmmxrgchttltek[fwegvyhranuutxgxec]fwzgoobvkjekogpfscr
+qlphzfkuyrhvkmsfxmb[unvtasxalhelbiw]gwqjfeftpkxtfiru[dhkyfsvpktyrttk]mypdaocnergxlnbodpi
+pxdqzshlqhkrhzwcqkb[tudazezhnktsxxexyq]ybzclsifzrgndcaxq[ewlslzvwnqqwvljgo]nwnyptvummeraaoow
+ysivygqkobbtznpxy[ydbgipznapsnkzfq]upackoodqdqmpvbgc[qnzvzwnbwrvgvwn]imcsgjzzaeltfxyhbx
+hcqlfxoahajthjesrdy[nammwfgfdqnjewunwz]pdzecgfgatymrrntt
+vwpdygtfuvbryipr[ehziaqbphyzzdolbfsv]rqxvfvafrauzncapu[dvqlgdgkzgpbjuihbl]sdtldsvjvvtlvjdgd
+rajovnvmoxozjldjd[czqnvirgxkydoaaxr]dejvwkgmpwqvnvnzzsb[zwxifotwvljvpkxae]taoulidxuvefjqxjdu
+jywqykajspyzvcw[jkqxjzfmvcrsqszgim]fncjgfxwbvfdwujhooa[otrkhmvyonynxsyap]skgdhtgcwmzixpdgmjh
+wbkndoivecgnkrid[tpdmkrufmawhpijryk]untkposunbiezua[njngjktbavkmsozyy]dqotrtnnoxxejcz[nyinrkqzxnsaahwa]zpdibcyegeumjjgowz
+gexzzkajyulforpnmb[mwihfmwsdpjjsnaxmme]xavowvaqybvqcqescdq[hjymwnhorqcdkoxv]myycpwmcpxinhru[koqbxfaoankdcpi]hgdktcvvxvoolccqcy
+alpcsvxjoouuhjrgzo[blnjpvnbtcufzsxqn]ipijmuwbljfwuxotk[sgpwkohrsfeypqc]vqlggpiytetmkifwc
+ixbszxrkuuzvvstrn[kdgfwhiapjrtiervwi]iugjmuvqljcbnmumal[ajgjfwerxsqqyrxuvob]qcdagpdvlnicajqcooo[qtuiukkwxyevxmgijtm]bgfetysdwvceqjc
+pdbbmswfeutwunlcm[ywbxptxhgqpjkpeenbx]wzzaxgyiztbdftpm[lbeexhgaqvezxfef]fqktklfxugwifcfaio[ucpewlhkqnbsigioumy]cawftwrwmbnfmzmhd
+xmtduxirbkbxjrqkvg[ythlqfokwjfwowrq]dguxbidgwelcrbxahi[mdumdnvbcsicvki]yhdgylmjisngrkcnbne
+yzilepuvsfipivcroyu[czocwppwvwxjadgqpc]uoypwqxrpcpdzmsyyqx[mzjaguojtnjobsvpdx]vnsywqfvrnpipenwka[dtiayvtdtuyeqlddh]wpxkwbagfqncorkomi
+qyebzyuerdwfocyr[cayytpduwkezuatyb]nuazweyhjemncuqpp[gwadeldyzfsvyqyk]gqjdzsuylxshtoayat
+eliktfnkrxvywmvr[tlnexbwvbbdeupd]gynrdmuppfbawfcb[dqsidilgsixsudputz]odwsmpcptosjdhrp[mumunqhddegofkrpabd]bnetmxiqkwhtcsgpuui
+wuozzupdubqhnbm[siwvzeelxcodzissd]niswczzlnrokkhrnd
+bjxpecnvcntfbqdyqy[hjawjkugajcwmouz]ipusnakbyyxmqhyislo[xcafwiwiabdlxpaqqo]vaemogopzemmnilw
+dlczcabztkrsdznjlcd[atcfirjxoipnvnoobjr]ujnimmhscetvevwpj[vnbwetjzberefmavwuy]penzvgcewibypznzpv[rqsqdxopumiqfftcb]qrotltpgkmzcndx
+juqqbnfozoikxscqata[cgretlqkyynhwhmk]yiehuxyidjlzpjs[jdnlbxkxvsufsduoulo]ymrfqienfjrrgraxfh[jlopugujyekjzrfet]hqlqjkulbfsnnxyksp
+epcyjxlwzmxwlulhx[pxjecldoxjwjkrndmir]baneyblyinubutjdi[cufdnjpvlwbfqbulb]dbzgyztjopciduxuo[paqntbrciorikaw]jbpsfzmzxvxlrgj
+euufrqxfhnfdzlawui[zwgpectzebtpxfwbym]btexmfeuilnoqsbgmz[hvnxaanolwzkygx]hurfyrjkanhjlaz[vdmsczzhobknlhoslpg]bgitrvjaildspbz
+gaweiazdfuixwqo[qedebtjxaewtracsgk]qnmuhjsbvqvcnov[aabcxwfcazxjqajv]xlhkehyvjohrqkbzyow
+uqxzgyclomagldxv[amcvkpboneuscronwcs]qbeqgbmrdcdtvsc
+xgkenttkfbysllows[bamxgmibkgysryjebgr]dhfiqnlocykclbofdzj
+ppyfzqrjpxgouxmsduv[euokodyohaiajyvsrz]xfxsvtjasezevkjwjk
+vcsgnfhhjkjssirc[kfdwqpdjaejqbfaxu]riqzqfwmwnsiqgamwm
+tvxtikdqugadgbux[niaxwpplrlwrnipcnnc]tcunnqamexertrdm[xkxjepysgqqdphb]vnxvtxntrsqrfjaz[akxkeqvlxgaorhqnd]sfhwarxbzfbtftuflr
+lwklfaiawghiwljxxow[oqmepnydmfkjbgkrjaj]clhguzdrfrmcoslsghh
+eqtzgxqoviujmxpg[pkkbcdmlkvbcppqrm]zjzmsjmxdkaknido[sellbmhvshvqdsslyq]xuokcgfaxstavgkni
+gstjodvjotzmvnm[mfvosfrnlksillaqs]riecejrjvhdrjvdl[sznhzufedvbdhbeq]msgvdfzoxeykqyx
+ivwoejkryedvxpi[autbisivgebnntgixu]papdjtvhwtxgipbhes
+apzalddmyxxmfysm[cdzptytpjydinlfdxa]gnjxiwepetlucfl[izgqnvcdaqkzgtpvwvk]cdxqaizjmvdnxigkmvm[cdybhclfttdchsbnyzs]xlqahfrmgnowlgba
+slubhmrmovzbgdw[dehwvsngduvcfkontgs]zeiqylnomqgevvikm[oubxjfwewqtdjwacb]mqjinmndnakfemp[mccapdxlrmrevbuaas]hcjdpjgnoguztrdjgbt
+vqeogkqjnfuayfpioi[rnkeynfubkpmjalnz]ybrwpzhiscwtyue[vnhkeaqwzawibjnvnos]ctmmursouxvylixiqko[voqlscgdnaelsbxcshf]azssljeollyzjjwkxin
+sanarwdtnkaemdsoj[ojswyaadxpnpzcm]acjrepbjwnnpncdf
+uvankqvbgxtgignh[zaimktolqipleig]mobimtizmlgqetrxkft[kooknezmesqkqisip]jdpwwsisdorcrryvyjn
+lkiqyvxlouvphqf[wiibwrighxagoiod]mavajklcesvhiytvcx[ntesmbqoxkadtth]kovhcrsmmtllhai
+ilzqxrlibfavovp[hrdmyejnxrlntti]yqmycbqlyitgkumdm
+oslndtyjgissmwhqbo[lguvaxjavhlklnqvd]cbmjzevkakhfauq[huujtqleuzhwcbpxjf]hiitxzclsgphiembgwx[ixccjsoybxmjmufm]knmagcfohytzcoq
+eutljtdlueiugunxsy[bmbgyvpiruvvuezir]vksxzmgftqglhrowpk[wphxqgxjmzhuqrwhce]giazmdryyjldglcivd[nsicphjzfpfzlhfymh]pfpeazmsdcttsutbs
+tmdniznfpsrdaivxpcp[nlebmzzfjfklqixhk]sbusrwexlbpswiyslbh[tuvimwrkchmarbvl]ykhoceojfjugoim
+vjkixsnkgnhzcsj[eqauuxevvcbzmlrvxk]owiikpkahbpkpuhkmns
+yiomyydjxljwyxoeh[rxyahvmloktamapez]ygtodyeyjtqusou[esemeduybcbngynmzl]rxszjfhelknuyjq
+hayzvqcfdjowlfeavo[mmcaawmtqthurqvmlfq]kbdpwcduhsjfbskcin[sueeedwjrdazxpae]drtfzfbefgvneiiqtsn
+lfsgnugdavjvstpk[usjflghmtbzdzavzgos]vajnuirkzezjgkst[ixiusdyawuqkbnacri]yfhtwiifnoltnygk
+fqvyvpipisvelyjfa[xewusykjjogfsupar]icdydlsidbisscyn[bpibwwfzoqajtnxlad]potpbswobrhcyvy
+wozhxjyiybczbhbqvd[kfsajcbxdespfdewbjw]afcsihkfitjosfwxb[fngvcuammwspeglx]xizamsngscxtprjwkq
+kmakicivcpvmjokl[rnsobihgweztudwrql]wytavzsniyqrdrxu
+nawqmyenftpbvxo[nsztprtyzoacbxy]jiwvrmgzztoisveafzh[kgpykqugwgvfkztnnz]qqmehjutfdzzowkof
+mxddcacabljlmyxmpn[zdlffviwrbhbjhl]niubaphkzsiybwkmh[ysxwkjpjhpyjmosgeo]kkhqupjsegymyxfh[sxxdsrtuwgsznnvhuy]licmdzzrtcxkgce
+hkvugidmuerakcmmsn[mkmrvpqxfoghbyxr]brkgsmexzyvqztplvgo
+inbjfdjjfofwckfckfo[nhjqvxeoedsfzfpwt]snlalnxxyjihecmxl[qtoxbcyxxtvuliams]bijqmocptaquusurml
+wmwfxoaocwtzuhvenl[yzpbmaoazbchjxozl]oulzkybjweqqzml[ydkamvkncxomqsibme]fcuomzdfejvijxeniaf
+clyxvevuyzylpdud[jmwhfhkzrzzkawp]nwcvtlwlwnbebgdz[cbnfsolnppgafml]mxhbrzrialopbbk
+ekyvudgmgzgiomwt[ebcbzzamsuhycbcvc]gzmmgrqbbuvbzfebh[lyuflvjhaxkfxkv]bvnmyumtjzismbtig[nqoxegjljmzarvyowo]rldakoyzzgansfefpwr
+wjhfgmicaoysnhmcer[kocbthyqjwsefyepgqh]vvzlwheralmhnixsb[adysumyfpsahmkntv]bnzgyilfgsepwvrdbdo[yqcnxfvzlpjxnvv]syedcecdzbffhmpztd
+qdmvnazvvyyxqjkm[lcmgrtbttzwijqf]gjacmuqivbcttnp[uduzbmcdayazzpr]vabqjkbgwnjophdxwvr[yyljnrcxwwcehamtg]psdjpizyavaebua
+fzjlpppzspuaflfwtv[dqmrdnatqlqnvowh]bevfgmojlmxmvfqb[smrcvucejxdrppkldvg]nbagvxquhrilbzi[dtbbwkaqepopjtgsgnz]zebxmxzzszbxtqeyjmd
+kipuoxmzbydfycmkxcx[bfmjtzvthijzhezx]aiwnfmjhetyrdahmi
+hiekvarctkixnmypau[dafmuxavuaosooos]czvsosvafizsjiouwi
+epzppyfkcwcqiirpm[drxvceywherxdpnxl]pzylclelnhztrgnqb[qrmfgrtyqmlnsggg]seaeqafycqwjfccuyhv[fnwvqeftfesdvyu]djdlucfogiqnrblz
+ihjtuvxjkvzqdpepjd[xzmyhwkdjooosritpw]rsvwysjoukgevdeve
+wdgepzzfwonrsxprc[oefuycfwngwkrgklo]fbckfdmwzzwfiinlfhw[mjebaresrtulcvkeb]aqxnxzpnqukspcol[hpfnupcjrkswiwlgzz]xbnwmtcsqwbpkxys
+nbaxkwtbtodcuecg[xqoetzqgjhxmuvfvnoa]edvwhehydqhhfjm[xyepeppmsepsaixyisi]txxbbqwefwuffdztlnc
+aqeknneydrvnameefot[dduhtgzqtjyggmr]ausnandgijmikvgd[jjvsfofhypkfrrc]rgzmkiqggfaesoznlxl[przqmabciaxkcunhy]cnntseafxmnjldcp
+rxilrztnhgzclsgy[yaxsuppphljrtcxev]mqyqgjopdetsxzmutjk[adyfostrkvhuajndjaw]ikumnitoxctaqcpop
+ntotlcdwgtsgotovhyj[wgduvgtqijgobem]hhdytbkiplykiejg[sntkfbyrzgguijtwmm]mpxnepfkhssujwhegbq[sxpsxodobizsvppqptl]uqlqlsopbfmgliw
+wbyugpjhymzlgbl[zdoddxxbnxqimlo]tyaobecgkbvrmgajpga[asriovkglwqiukcxtjk]nvjqkrzxwicfzdr[vzqasgjrafilljt]eobbqeenineqwps
+xbtwnvkwrlnwseaids[znlftryxezmidoc]suigxfrnxfzeudpi[ahlshriqmozkpiogtc]zpjiwsbdawhjynju
+drjfebkgnrcuqyzpezw[hnweqviwyjtfrwpu]popubobnviqwkqfv[plaxjplhmhjqjmqjsh]idacejabrvhfteelbiu[hhxwpwgvjcncpjcovv]tqyykiwalnnkoniju
+fwdnjlvptzmxpwvsli[eidmcurldxszfvvhjf]bshskptweuzuqtjym[dpwmmspdxpiqidrfz]bulnlyngfaybqfinqn
+khvidctisgemoswq[vzknkycuuvznnjkzay]rvzkmucboqomxkmtuvv
+ymfxlhojyjfqvctzue[sihfpembvmdtdda]wezkljquqtkcyiar
+cgzdjkbnmhptcggqib[autoeqiibhxdief]zapmbimuvhywdtsbtm
+gilwnvmvdyftcdmvaql[esmtawtmepovyih]quztpmdplotzlszav
+sfsncarxehtgmutj[aqauaojoqabkguvan]olgokvyhpfjzyqgvbcy[fsfdkbxhstvxlkzb]ozwgbzlhrocqpjoseq
+shzexlixgxazcobmdvz[bvrebdcpytgplvii]gxdgzyoqpmkqznz[wuywofxihsgxgpcksgh]lwqsslamcrmkobn
+pkjlltvbsjnfarycgf[gwkayyieahfowbrgr]ccgyjvjbdeoilsznvbi[njniljtubngiuwlil]kosrulvapzdufvq
+clhvakestwquwywsohs[ubwecsjptinhzngw]dvjcvukpkdrgpbeua[svetegijnnbtetpgfu]nfejtethkqavpol
+vksryzexymetdykenw[etxzvunetbovrwttr]pnmwnldqzmxzjldnmh[vnskreneiwajgmd]rwbeletsldocxguy[agccpaxhrlfokpt]wembexaqbprlrzg
+wrxyiatlpvvcuroguv[hfcsmxesvpwfgtpqip]jbspeicucxtbnti
+gbxyskaitzeogoej[drokshekgcpxpgktoi]ivxtocmlrugoguf
+sfzpstesdmegcuhn[drrpxmsfpcjvqerjb]jqcvoeifgceremgz[chsbisfayixexqer]qyhonslazxrkagpp
+bfufgciknfkthfbr[tlfmuebscorrclekjfx]offqunmqlcetebpov[bsbmhnbmmqmdbpnt]knkjsvpmffjqvtqpk[bryxvufxbsocwnd]hkxplkqhsymumxarn
+ftafmqgtmaazvmstfq[qxsvdxplpesqzqg]yrbkrhtzaqtygxjheuo
+xqgmldfvsmitjzhbr[yrwujpzkzksxdbthk]jblnpmdcljgadym
+ijtilnlhxlkhoaftet[rgzfrfsilxhwgpzx]gmdwwndlvtvvtdimd[wyghkhzahfwpaknrxiy]ekpkylqvvxypaszcozp[hjdwslazthbzhdimne]xuptxflgcjgdajfgqa
+ceklxvygwnkfrqvwd[qxjqndmhxzvhicvcf]lvrzumjuaawtgviue[xdvdtoulmeaaiiuqa]xveikrwzicxctyy
+pdvdkirojjubchc[iylcutkspnuquwdc]uzbtxemzazuwottv[sojezpwrsstkdwkses]laokggzzeaobwfus
+ibuowtqicxqiifze[emohxvujvolopghkrgw]secpljnouzblzup[xvpvnqvnsgsnmhwdpbn]ykpvwjlhtpdjlflxvye
+botbhhrfjqjqwdgmeu[itwjgbhzrqnnagvy]pzexftzhniligeyd[egtdkuktihxgmdd]cumzxbfgryzedtsc
+dgvuwphikpupaovhovx[nbwxxhepxfzlxcoma]vypmvuopklupuzlk[plkvxscxriyzeln]sopaaxvckgcbiahm[gpafvifmxvjouczus]uyqhgsdxkcylwle
+gufjlajgktlwahsa[kwtpvwbvjzpmpbstiyj]nqkkgajutaofdauzmfq[zihotkwlyixmfsp]fezlipznjthttsiwpj
+lqriaqvyvawemnogd[gyqqrvivtuxxbzf]xqrrsgnxbpmjsgqqr[zfwpyfwojhemhmyoajq]pyninwzcjzypmygy[qzftysfhztknzjo]zyybzurfxiolsik
+iojvqxazkhdwzed[jnnntfrduoxnyqpeszj]dpeducyducrsuwa[rnfiudvklwbdbho]lklubgxkqldqalvh[ogbeiwjdaeuwjyz]cvhoaaenmeuovocvog
+kxtwtkvaixeisgzjky[cnzhhsipmfawaqzc]gjpptvjnwmbqqbuum[qryazcieexjwwsvfi]cysiabvuldrkvsxqgu[koflanzstuwaebjih]krzursoabnpundffqs
+bzqcnugxfeixhnvk[sjyuxwjdceauputr]tcjsgbmvjklijlowud[mdmuqbpupxhndvfcd]ypgdbaxwopztyqelfis[bvpphfvdscmfbhynf]vjaytjezersopuqa
+sceyeinwgkcccgn[sgxwelfgqimdwzlbj]uvyuazuplvkhpndc[etahwkowloxlylnp]hletqjpvxzicdrs[kyrfwcyoudjlueqrvr]kdqsjyoajsfenmrol
+atkckckrgntchlets[tyebmdckmayofez]hryglgphkgeoswe[jeamxrrzxgyzvmuh]vcvejocdlauybbz[lnnricpcvqztoumc]uggeimsqrjnppskl
+rutaemkjlwrslmsp[jwwgmphxqlggydlsh]xdudpbdjfqtcgrw
+lwddwkagigyjsht[zpizzqoqkcbqmdqfqp]vbvigihfyemwjqusdh[kqgxbnysneqgxdwzkpp]issqguyhzmttxofz
+zzxsolnnbmerygtvvk[bhfexiwvaohrbqbadi]zdsieuxicwijamvo
+lbfovxmrghyzhfdybb[whedwghlrxnjtvqelzp]oezlanrknbaxtmo[jtrlurnbhmuymfwx]puvsiaizbjtqnot[rssajpiwyftzhoacoqh]ihmzohwlncqrfrjpbpn
+mflsnlcufwvqbhye[lslradskdqrueaxvoez]iyrdzgwbghbrctrmdt[bqgxpsiwleisnru]sjwifvnufaaedueaag
+rcdjaebyojixvatc[bjybjvqonbvdtyjwet]rnatoqmpxauyiezad[ltcfporqmmavmsjgmrb]sdiogziluykhmgcjf[bkkhyuslxlarrqbqe]zzsdsepgilymdpnhw
+jikhvuzivjikuxkmlus[vsgrhafeosvtphzg]bjhxequjxbqorsnhx[pvkgxrttjofimfuq]cmrxlinhwqxhrkrdzpk[xugunnrtpxbnemj]hapjbouhnfydllttkdt
+xsvwiruapkldajmkyx[iohclbiotvabvkhkngm]qfvbpipvniprtqjj[ehcphknxkybflhn]ackdoidsuczifwx[bdbekqnxcwwskgxp]ofvzsecshsgbqll
+rnpjfqpbnpfqtlpkc[itzrqowsquwryisqywl]mrkjwermsejxwqubxwi[plxkhpuflnhspjficnt]djldgtkuzafchfwar[auijeassmbtfdsd]etfcwmifwixeffrtpco
+nkqwqvkikgnmwcnos[nmvtwkyhwtwyrrupx]emdniphxpavkede
+tkcdryrjllweves[pqdjnylpftbbktemtkl]qlykuckixcfhwuczikv
+cfjwosfrfjwgwognyjc[jiwoynoxdngalmreoq]otqvhbkwlkpqatkx[wwgwguxuzwlorap]rjuopkpuaftnkdeg
+icgtjqangadcebdax[wyosawgqnexwsdqq]ulyhqvrzrqhibudyu
+mrrdimungjnszyr[quzeqzycxcsamewykb]vqrhnvflewxwzvxwxg
+aciggfsvhpeaemh[xhizavbtwzpsxdkgzdl]dbqpkvkmrbwjcle
+ctxwfkazxjvguatxus[hkcjonilmmvovjawir]ruwyywhbhkrheofbpr[qeknvkabxrdgfxgrp]hymknrdlgolmqrpklal[qbkzigpdxfcgnfhdrqr]hrutorkgyzxlqlujnv
+ocyqsefzuzizjllui[ttpjltsmxnkavfbviwn]ccfanejrzrghpnb[ehkgwatoncpnwfpjc]qkwynkumqgvxuslirgg[vrnprgoivxrsqlpbmke]jdygjgsfkbhrbfc
+necmpldghpppjggvw[vtantcichlsjgrzdxlo]bihypdunzshlhxktuk[iusfpqesheojjdmk]ycztqgqrqsuifzgnqvw[oyjhytgpicigpcf]ewrixdzorbmmxgywf
+tsddziihnzqushtoeg[ldqhzxrgtfkcrhecrm]nnesvhwbrujwmon
+rdapxiunwuijmxrqf[qvekjcwvibpucemj]uidzbyozcfnpempx
+fdvouzrhnlgyemqqqa[rosijdvpwbgnxzzr]moxykttwbfixxvflpje[daadlshdcnrwftzxpjj]pgpphzgfkeapstad[rptqkhjmanvnfuj]drurgqqilijigaa
+dcdcoboftwhtitlto[qdqpbbobdncixqwhmn]cdjrukqmcdbzwji
+fsmzzqlggnjqunemec[oxrxnckqpvilfinnolv]mgpmmemxrkuonag[wsoiyculboqjnux]urwswywdpuesxaq
+gpughkygfkxahewxsip[licxlfgczxcqejs]idnuezcmwhwgryjare
+shoehgaydkpbxwshf[ksbdsdldhfsxjipf]ubrrcyykdsgnywhojya[hfjwtuughentmddwd]wjpsomayxantmltuoep
+srpgizgochbueqgg[qeqltfdohredaspdbmy]cexowllqgvorkapnkc[kfivkiksqxospfw]naiqwxlkjowysnh
+patacqalyfmxulxxtkw[hyxkhrfewkpafeel]thgckmswuwcjgcuepp[lsfmmxuvmiyyzzxu]yiktaounkhxoqzm
+maeefdbswszxotz[sdfwswrwotoblvzk]bqmhwlxmzvjnorn[phhhipunsmqfmormtk]aasvyeqeffypmcop
+fhpaqlgiumuampggbha[tktjydzyzgbpqosq]dpqodhygfzmbfku
+iotcaohleclcmtwp[zirjcaznbsuwrbbspl]vdyhcyoroztlltnsubz[nmnaakmudmmobxzk]xjxybbzqfoibovwhr[tpzyhrmupmrfoeufsv]nfvtlfdnynqiwrmnmt
+bsadpcmsvgfxbpskka[bqcswpjvfijomiajzjv]zjzfrshleucdcwpf[ipqvielmzuykgbs]rsvzmpmpfahujfofx
+fvryaokhaacjqgah[epbqswhzewpvaip]cuveezfvkvejvvaizr[hlhatamayfeqllu]ixwqbzzaekbgxkmhzaz
+reyvoyklzltgudphp[oxjgegadnwxleogg]ljmtypolhtjwpvs
+cbihaubuoteffoyu[svxjexmihzibcqb]jzdqjhmjgugqyur
+krpfvdsywmrzxbusjl[juomxpbfboxgvkm]brhpobarqecdmqkiwy
+wsbwcjnpzputekmilg[qhdrjrdtwqqaqsymipv]fyrpxnpnbowlhwkcwd[wcxmrmmzlznnrel]oamqtpijleztiuknf
+mmjzxbxoyrxkyvdtss[cikixrlteokbezfi]urjcocznnivoqkf[wzqgjmuuvuniccrj]eiarnnhreduakcv
+honratmzckbtooiwan[epebkioukueaexbb]xyakukoiqfmtdhvxf
+auczawuragikjbyg[xqvricdlkrsbnmjqymq]uwinnxrbwluaanvjyvz
+rrpjxhttogyefupw[cidavmfspeeooolb]ucfrrurpkeqltglk[ulptzlfrcvniduqkc]bytebcgtpqkknxpbh
+ateymyqwgrjfwemgg[xppbfkjrlnizskzttbw]genvojuvqaudosfm[psnzsxmpjtdbznh]kljgvgkdvezzljte[ovfuojewcuvcqrfdzsk]kmbgrfpjzllvrbmpimu
+mrvctdetjidibveb[msvevesuydbqwrytbh]yiliwznzilsslmachk[mqyuthyalilcmdpxz]ctawteeyyrsbncp
+xhqazvqcraogaog[efbpamcmboregjesn]vinozerwxjyrytyd[vmzmjnevhaiidnhiuw]nvzsnlixrdzmzvtgfy[veacynylxxfkeep]syokzdwmkkhirrz
+swavkosetgudxoshj[fvzlrzpjhrbnbqsccn]hlvbbqalpdfefmaxdse[ekisavmzzlowfwcmqp]hutgwyxxcqjdiso[vraskyhzrfjitpxakqa]rcljjityeqogidyb
+hidnzkzjrekzkkqqpj[qvvuzioihfbxhglu]nzlgputvbrvwrchwhzc[rimjeexwqbdnsdn]tfzbpsuttxirwszy
+wiubbpcsjjmtbnd[thcllhnafhmdojqr]viplkejozrbrwacv
+jaywbjoscfdifdfalf[lvouibjhzbkxdqd]mcxggciwqqirwcyps[ztiybfroldnlieeg]vwnzbrghyfatjsxsvfl[jenhflndcjmgdojv]uyxvsnfigbtgaemccz
+uutahwebslojhtl[affybmhohxqavah]xocumtcofvavgdgl[xlypyhazihrgfwllp]ptfnqjlzbaccyoaawi
+akdzebybusompcsooz[xgymxdecspvdvkgit]dtnhtzkelcazovecig
+jqajvhvbrkrynxg[yekfvwkborakrkfl]bovxzhceonjclmgecgy
+ilythgztqwpxktjrpf[igwywudlvdqpqbu]hxmvjverypjvjtk
+dbkmmuymxedkowpcws[kxtthcqfurgkuxxx]vkypnrqtmhlsqogt[rtixamexlrydluvxe]nbehtyxipwgvefctyaf[cxtipjkxixrgawvomc]ssvdpknocgugwjxpzpf
+fidyxymrgwqpntyg[loqqjfrzmidkxskyfsa]mqilmzklkzhzedf[mitpmedchdhhzxdqpl]roerrhbijrjwmsm[quhrsmqqujwufnm]layxublhkfpoykadvcr
+njsjelrfstonstmhq[crcgsmvxndyvyfsjku]yvyrpgjnuimkxcutgvh[gwmbqumupsdfrusp]sbedcqptxzhsohroth[wudivolpxauvxvxbpqk]bnfygsxxzqwxumonnm
+ivtobvcmwywqtjkfa[tcfyhhgftbsswpnvbtv]bkuulyhtihhqcckjo[lgnkduoojrzyjhby]uwkeujommiprdopgche
+mzrhrvpuyolqlku[rlofuuumtasfuknrasa]tfhglvunxtkafazyehj[hrnjrlpyjntwosogwti]ixtpihfavwqkjnlipmm
+jzhfwqxoqsgnrnex[ccrtrnroigtbvrnjeji]bbhfsodufjqhjvplii[mcubmtdgwttmmnazhpt]hovifldmlnbzrwqicaz
+hcchhpmerpjppsj[wftljcxoqwtoclz]xihvvfjfhefdkeip[abdthspjojqvwxx]fhffpflinospcczm
+vupulseekbaiaoempu[zupmjydxyobqbfmy]xkyopqxvogwcpuwnud[orgnovcpbpqecljkaq]sdvcakqwdmgydeeup
+wruccyxbyiexpnka[iirsbfvggokpwli]gztvpqcsckeaiqofwf[zdloxqdlcazkhkppz]jydaafpuoznegyif
+lwxqnbbzjlckuji[bzxykmlhlgjosvs]fdocjjmtlhlghzvj[snveavqbuhnzqktmyur]xcoabwwqxexqzakbrh[iqkdvngcdtlhlhudqk]edydfxflcnpzrcjsppt
+eokcsyiozfqhcbzffj[uiczyrevovzcgvu]mniuhovkpklhedhx[gbyzowvpnxpemkcrccc]avfhgxxldgtjxuy
+rxjbmcovdnxoxrjter[ijiplhrlromkesgs]xwtfawphuvrjimntwvs
+uuwjtmgqskgrxrlzt[nqzvntwfmxeptqylma]gbahtqxvunohprsd[strhrrwmxsuoiuvi]nhamfjzlocoufnwbgu[osdxgghdsdkbqcpj]ywmalngfjbjymkz
+vsmcjtzwfubhlop[ttbkmxwjonmuscwi]ikjuxrmqhqldtfzqa
+oqhkopaodmimgikwcg[biimzvsoczaxfdy]bkcbjbcusyhdpfo[vfnzlymbwetzhbcxz]zyntiiipnkmsjjemxq
+hzaeznnipwioicdfa[lperfrgxekbntipyf]mnerflshwywujfsp[nrkcmayjxnxbhuvo]mdxovxksmxlwvkbrdf
+cuqqyiwojnwvbybcps[bujmpcuovhebtztm]bektaixvzjpofzb[egiiqzxqdlfwoukjyiw]nqkjlpwevuxeognpnq
+ryxoyvavwharlbwzeq[rphqbmnaiykgafsftjs]ijrqxkvnqersvvryz[mevoiitcztvfztorohn]hkchrvkqswjpyay[staoxhiuifnbmxuytlc]fuawdkujedmkpeto
+caowivzceqsclbyp[grpcqqthiebrabqwhxv]bzmazhewqmbuhjokm
+uhrtxyxnakvjydnroc[fhnjxathwyyxszmo]zzukeuqdhxravrs[zqcltmosvkqcekap]gjartckwucksqzcn[smddsrvnfxqjxya]gkumdkzqxcqxfyhm
+ldzhaqlkbxfagur[qvlstlwnkzbmxlxw]reflsfhdsosjaaesps[qajtodlxlfrbdlj]bxytsckpxumuoklw
+ghjjrxtnytqatjfxwt[opmvopscrillueslb]zsxtxstrwnyzolxk[lyeeidvaghynwkckr]shhkellgnhsuekrzoc
+vpliqrfetzttovx[nkmmjlsskjhnyxh]ayockmlevegaseq[auzorvghfdfuuajnt]poknhujvpctqrrycfun
+vzgpmpjvlzbhzhlexp[zheyfmgekvhjsnmosaq]krmficowypbxwbztrn[rvoedtkjlfpxtaot]rxwejzlarsgdlayv
+jfrznpvhlbchvre[obxfauzcchgnzksp]fgimlwasdrgqvquis[ewaqnfexmitmuxhqnp]graisawghismkouwfv
+nqmcashwuluyxaxcw[fdqovhbtwijgklubmon]dgxewefrjkhrylq[maeguvhvptbgmjdwhxb]dkdmdobhsbyforzmqr
+huwexxqnjlofulknxz[qnbpzxlpdlsqrti]sbmmwvryxqsrfzpm[ucizjfqroaflnixzbpr]ndztjtaeahzmkyords
+mwlrbdybkjhgorutus[bmbedqpcsxwkganh]ttwjrjrvxsikepdbvgs[qycnjzrbeiiplxarls]atrevpowofauioaof[nlhyhaoljptrowlmyo]hmeaxvwasyaszlgq
+tqsmjetgtzmxfgakjqs[cbnxrpnckgcndpcwiae]uavavaewuucokfrm[viufzfvvuiuuehyxcw]nkskrloinkwsoukw
+roximfsrbnzyzjmn[bqugwcdliqyzyaqiupv]rpdidncsfgexyncbg[amzmtmqwzipkjfy]fqnscfsjmxjlpoccvfd[bpebfxoinyaqsgjpb]dykidfsbcykdobqe
+rcmbmjwgmwathepxunw[uoieoiytmrywrjevift]ourmrqqatqnwmrisyu[bxodgsozbekrcuwf]gkaigbulsjxysdiawg[kczakejsrndvzdirs]ggjgbhegtgijrdz
+xtksmozdsgsclsxrfh[afxjsmsjpuqnomb]onqkiyrogyrkykxjr[bhvnrdaenimevcx]snufewjwvfqkafjjzn[cquvjkzxpbfbghmnpwi]wjbdkkloxxgsgnmriw
+doruvpwqkvibnww[uslnnvqcrwjlexech]cshujlmmujfjdtjw[pkbasqruzspzipwrqke]yypbzzqwoasgldn
+aoxxznvrxfhzwyyq[byxxvystyyrlzvl]jnilbnasrzvgbbhrl
+wvtujbbebuyuazangzc[moooepbzqolouuyxij]vhqrubkyyuypknfh[gvfucxhufyyjefei]axvrkaeaqlxxfip[fiazyighxscxhiwydc]acvifmzzltvluos
+yzyfibzwjuddaoxc[gpjgkmckxctlttgcdcm]rmjohduchcituck[noozqqxrakiadwu]mipigxbhlbtngtpcpz
+zipobscyynjrecng[jeekozoaoyuuqmroisx]tgffoyomlggbyjnnv[mcfybdsenqhygjo]dnzrpghyroqbcje[aoapyvfyscqfzhihddf]vplszbvbycwxqrhb
+gcoyyfxpuufglqfsczx[ebjwlqjgtgkqdeike]xtuuxrrbgiwhwqdcyw
+mdwjuxoulckloxfujkj[omieaeznetsnkeoroh]ggnwbuenkgeujmap[ghrtxfonaxyhfogpjub]ptyopzxhctssbwlpwy[xmpglsqcnihwzgbgm]yqmqddmugnlrbnqkgci
+xeayvddumafiomemh[euwluehznzxvpmzbz]fxcevhwksvwhrvzid[maotzdveeldpyetguj]cixjfwlbbbrrqmnoklo
+larctxbpbdnbpqyyz[vzooyuwrgpgtjtq]sgizsbcjteinyxto[jbqzsxejwwgrpcgzwrj]bpwcfwyglhtuxqmy
+zbxohuvlboydqvqhhkd[wgcjvlrppivpnxifvk]kmpdiwdtpmrctyhy[pprsqaqxunduprjnjxx]zfbqlbdpmcgfwenem
+ghcjhgkmyfejmua[mqsuukbcdvjmdnz]ixxelnebxjrtrdwzlkd[ikojyewznghqksregl]tkthqugytcsdudoggp
+hdfwyjganjbjhbjvswz[bfaxlkjfrkakeedg]zrkxyzbozmchfqgz
+inmdmdyssqhykuhn[vbjasprzyxaphygdg]ucbbhyvlsjjdqri
+zdyejivfbywyaaqljp[sxmtwgwmwbqelhsg]jesgfubnghtsagcu[tofvxzmzzsnywhbx]ibnbzcdhusdiqhgika[sipfigjsngidlzxxneq]bljavpomkpqzrsuuo
+uahcmotfanpvzru[opmqbnngxtudnuyc]lsvafzhwwwmoagl[kzpffwsffxozirgyz]lsbjnbzflbiprwuvurf
+rzietxnbixgvzxnmzlj[iygcirkrgwwsgpcidzr]bfrwgfeyyatmalyjsl[dweehclvlbefvlcp]qurpnzinmyweipshzs[lgbfgdjhddmtvbzxu]ppxtzzkiizoqqguct
+zfsvifntrvbjgdcuc[jjwqwhifqbxeqkbigcl]fmyuetebsksddti[hmopwdnxvmqwqflr]jidndiejmzoutjpkdm
+qwnlstjkluchubgkttm[yyndjrkhfqrxuyglebo]xdltobqidrkstozk[shmmslerstluurc]fxkrzqnfjoalxcmssq[bjenpehkwbxpktb]eaallvedtajrnupomva
+zxqdqrztephcpieqdi[rigecfyegojksvjmya]rgygzpdzmpvogeurni[odgdyrqmqgrcmhfcu]ggdgejoiritcrdxxu
+ezhzkozgllmnompn[sqyilkceizeygqkwot]pdkuklrqdgtgoqap[yvadgqlkffoklshvf]hkgwcnlbadpbiuzvkaz[oozjtyzsxujalkwoo]dhntuiangtulscbzg
+zvwmdxzivmtzpkmhnp[qduttqlbrhetmuj]vmykluzepgxxilmn[qgswpbooccvoxlg]ujndjzfubkxmvvdib[yrneuetnuktitut]vvwnzxosnenywomkyj
+phuncbfvyiwxfour[oauntpjxaqvwvqn]liffvpoxrbljogpcwvw
+usabjelvalpgdyiyn[hywbrqfeqwkizwnxf]ebpcgxloqmzflbeag[dxifrjggqwzokner]ndwzylxxlkdcpbk[kfergfdezgbceby]uscylihvxfbetfnog
+afgmwhqdwessspzx[ssbmbckihwjmiaw]zbbiktbhykmehed
+hforuldqhrolhqsm[gofgjhapikxnhhdn]xgdarfanlnonwdielb[hvntptxixclnlqphvq]hvvdpsmvsveyaiubt[hiiscphavjogadmj]bbfjdjeecrhhrspxdpq
+djtyronibzvtixf[yvofthnckundxfe]eccattkkitxyotbziy[afdaacfefrerytfh]cquizrjfjtqgjozagid[xkbcgazeolbliwp]hukcarrfnjctdycpfb
+egwoebxchfxxlrr[hxugiprrlfwmknw]cpmfgzxzakyhumd[evzzvvtjwwzwzywvk]lwcfpjlcgrbjszjvf
+hktuhumsttqsgfltrdv[rctkgluikouomerrv]jblnggtkdhveufixx
+ejjzogefxwuyadzthjb[ibrhegtzukygkfnziwt]utcbeamzzfkbrmqonlu[yofpkwiuewvtbswaet]zxkgoommtfxezcfcweb
+wbauuixpbtjnuos[ozwhlzidaubnfiuiqa]nlkdtbovsytnvjz[ztfjpnzvymrefnt]nixbxdoogrxdvuxbxbr
+xadpfckydqkmbvbj[vwdzgyfbjlyslafrp]mbozdmkfztxwailiuv[uttdatknprbzvjvucxh]cqcbkumzxiaqweqfiry
+bsdbnkvvlwpezlhc[cdzdiuewblcmciggdgp]halpvjdbnpbdrnkz[ikoyxulwagjnwego]twyvbkffqxasqbomi[ajwtpvliyyssqjex]cfbqtoqqlggpufbfx
+qoqtovwkavyaqbkwmd[vxuqdoobfxtanlwd]zklibywcjpksseelw[roqxvvoifjmxnarqvt]zeijltexwykdvpd
+obkgwgtfxwjfrepg[slekjheburvgrunuaxf]cnhsvevmitpuwokwee
+flulgpwvsikwhpzpza[pmlcfhtmvuiyoidfbfh]czcxxurdakbxizbbfb[blpwjusbzbdwugwbcv]vltmmzttxuhooid[hlbpbqjpqyclebkye]hgozvhgdplllxiio
+oupstawbevsasbhv[ddvybaqnhfckfvdgabz]nooqiufueyoflccqzc[jyljuydjddholsx]bbejlommzienlhz[mpbmppjwfqrgucxdqxx]sjohlscgjoprsqt
+augjtgfyoatluixgc[atdsbsouunywohfnk]dpghgakdvfscbapsm[nkodybopavlbeikalqj]myhpkcbsbkbjfgj
+whzlsgvuspnzdunurbg[cypfmgrkqjeppudbdy]civtfkixnmrkqmchhg[ypyakrsygkyvmfmmyf]blihjslfkbrysntsl
+xeyyjiqvduxcflt[xiqxiqeepbpkkydtzxs]vbpbdsaivyavnfwj[rduzjulshqiluheud]inliammiyxregzbsrkt
+txvixsvhvmxxsomvo[hgdskyjskapgvyiqzsz]shvhmfrbpxbndsx[plvytalszauhmpkr]jyujmokrvxwmanzbxbi[mefmngrdhatojkpplcv]dttxfesvavgpkbtpri
+pproajkxqwedocrc[muhbyboayoghprmbtxs]odroemzznotffsaxsmg[ykfnecchdltzosnyby]nozuvokzntxrnitq
+rqimalibychumvzdq[siqhwfjimixscjmne]hkvxsavgjvpzkyay[nzbxnmxgmyuwcywvd]qkuzrfifsyvonaalxu
+rymadifucrlickzorqr[phxxuxpffvnjgofl]zqfbhfmzbvhbmask
+gzuklpopfcjdrxoekz[lwviuuoyojzggqjs]cyacdnvkgqqafcyprae[iyazavdiashvzwpgip]sztafbunqsyjtpz[fkwjsbllccbrrdpa]dijejdfyzqycvrdkl
+nhmayligrdtlvyeo[laulduejrclodvnaoh]frxoepqtmqdzwwupiy
+exzcpmjdjiagpvsvin[aontczoixbznfwsvss]hdlmrrdtbumlfvril[gcuizdwjbzyhttw]apadljkbcsylwgekv
+pujkeovpnvnleypqz[ecxuhbtnrlnzojsxs]eyolbkoatzbwvnvwxlx
+oefowwmlhqytnxaec[rdbjjilbmiazndcycr]dvjwgldyxfrzicw[fxpbshhafqifvyju]ygagsxtxwnsphgzqrpv
+lhbebfasigqbhndgsux[drchunjaqzkcmefjys]nzloazwftxoemnmifox[gjpmyydbftxggnggadd]onlcnitfjniiekbiaz[swjdwdaikyykupgyg]ltwxeordcvjfarrhx
+ukvzfltucnovohjidr[apslrphaneessxbpdx]cxrovjkruohahxshazw
+xnsrwrjioindnxhxrrn[mvuraryghmwxppnlp]mconcxeyryuvfqcoy
+opafehetqedyikso[vjnjwsjlbiknomzuu]pjurldelcuxkdlhehm
+kvpcbopojkvzykdhm[ldleeqmztdnrohjm]vejwyvzvekairyhc
+yrbrakwltaduyge[qwvsxbxwiretxirlsbt]hdnwansdelcvxptiou[uhibherodkibtww]aphfcrfnpewbrblyme[lfwjpxyosiappsd]rshmipxgjvorazj
+tsymbomuywfpmdul[wgulyfhhwodplfi]xixmazxgewasngsv
+ktywwprbuvuhmnpwfoa[fcuicnujrweusdoe]fuarbahbvkhqjibcfp
+snhkrkibygzndryeblm[pykdztwnxrawqbevu]wwiwrwfcwtirdkjh
+xhomjlsunzjzgkxc[qyxzsooayiqnuzljj]jftgbnqtumwipywdfrp
+mhfgzwlocsrhbfkdbud[kwtnglxzzdwqcfw]ezvrdgdyjjqfwuv[abznvdwgiisyqjxvu]khcfgchqbgwflioa[upibqontzrahabnpi]tgjaagwvmqewmfyer
+yfptdfhnebzhgpzism[tglibrfrnpfmydwbea]mmoqveuvvenorhnrw
+ljztcdworsemcoe[yloilpxuumxdzzxl]dyawqaacdnjlttcz[dxyytbozmlibkocr]dxpindavjlezzpogz
+bwkhzerttqexrgoea[ubnuzbvktcxsxednmu]zqjpbtbzdcfmidopdy[malphrsrebpeeuw]vwdlaafkntcaqmwjqc[abciktgfeaiptay]yqksuqwsuqtckkoyh
+filqrpdsqqfgkcu[obiciozcvbatglnx]sjzgtjuddnazrzfcju[svrswvhpfraptqsxolt]nfcphmwaudhrnxkzc[ysohuzukkfqlskgkd]nynxljuswasofiaarc
+desdobciyiqsycj[wzvqcbwfbneahei]svofzhyvvsrwasvvg[igvhymbudpcrdgjwv]qtyrjtghnbbtekl
+fygnlyiuxapyciwwnbw[fhwxcrwprlaoiybnkbe]fxvtiehvhfgfwtsdfh[mreawqbzyvkbcnkyftm]rryknthocegscrdtbcw[ktbeedxfulszfogwnqi]kqwtzaemzwmsloi
+zxroedxtywemimrje[fvzlxeqgczajhimr]lrhvziwtgglifto[buxquosscraxroklx]pryldzimioibwliygt[yvmeeklmyokbgexl]oqezpvcwnctcbskefas
+dcowzgprrgvczwfx[zminxdmdflugwkkkk]vfoltgijbqlhjdohr
+vtrfdkwipegmqbwrvo[kshaxjtaiuyicufl]zfkbjdxhihqmtjco
+djidszgreaxdweqjk[rdjzkbmqtyolitmqhf]plltubpvwojnccsygfy[mewadohjaliobsdwezu]vmrkkqgbtfmwemn[erlreifagjhqavlxxh]yplrasxtqcyowlci
+ctautcpnnufupce[qtydhgcjjqofrfay]lfahmjfjyppehyp[qzaxqkpopvwzqofe]rkcqkjpgptshvoucer[qmczzorygyrwbxiji]zljzfavjmwawfrfr
+mwmkedorswoukdumznq[hdujfmdkyiznceknql]wgvbskjuuwmwrsvca
+sdvjnkxypkzbwaam[jrjyjxcfvipcsfv]hqpkybfiuthhszpey[cxzhyjyccoulowr]bwjcdjlwidvcfkguaud
+wfvvroenfriclccedd[aqkoeakjbakjprhnj]ytucldefderfpqaibsn[gjukmqtaxbygrygukiy]xfreqhtftbfsvsjstda
+gmqthnogaadlkycgrv[qrgjpxucfcnthziuqmc]fqlchcfytukeoho
+muwfuurxmlzrcgij[ifojpmgnfufvhbmmeu]ezcruchallsnspos[bwlnhfxtqvwcdjo]lnfuojduqnrbdyk[jhfihfozzosipwsyk]akukjehglqpancmiy
+ultbxqkpivdepjvze[flhbwrxncynirgxwt]twqbnqiaivfwlqorpa
+izvobuuojtimkzlsak[moodohlaudrwsto]cxjybpccizkmeau[dqaajcusqoaatpbojuh]pxlzqhwqdgetmjcm[jmjesiihxrtbmgwkcck]ywajslefzjxwyfivv
+ymymmfpvyiyegjw[auyhltgyvzodazgd]twjkvzwomymmrhfthwc
+romqbwenzvevhyq[ewpxvrduvqewryaoct]wxgowmsdxrxjnyj[obazseiipwfmbyxhkdv]gjalmcoqrquvdnmzacu[abzkksqdcduhkizuzxs]uzuazfdegdfqjmmr
+frvysxhaafihjpza[uuwayzhynhgliyxcc]vdcjfobjuqddqibjef[iusgoufujvqkfjt]cejktzeuphymtswrxj[nthrscqmjniokzsq]tnsfuflhwdkvsrlm
+rrybzahzqjlsnrf[aexlsirbdpwkrfhms]ftuaymthroqwnjlhwv[gugocacufksbdyqsfwn]ptivpdoxkvpbwaohlfr
+ikdnaifadlcqtyfpq[ftwtatuewtwyxevw]klpnngjlhfuuwykwbqh
+jcjepxytivozlscfk[pdosptbukdrtforgvxk]wdghlnuxqjdaztviyiz[mqtajavotnicuxco]vovuvrvnwoedhflabai
+yaiokdeleeowglfd[qzhtllekpxcjvig]ohtsvsylelaafkxk
+qkopuespenokczipnz[qmncizyvbxioknj]piygfwazneqkamiq[oebzwpkixhbywqc]tglnlkwhricqqzzbkuo[azpshyiwubdevjojg]fqlqjwtirppkilhplu
+wpjdzojjjgthuvhs[ttvkvkootolwcilow]lvilrilboatpxwa
+sqcunkrlvqeapsseomh[hcaleossxxtjalzts]dwokbxvvtiocokk[ziimvyrfcpcagbchp]lqsdomcpacsejdzcxw[tpekrtncgabhvirc]nqguzphabzalcgqjbmw
+lchsqkntfaymwss[glcnjoqtmlubbldwxb]repxhlvahfruswno
+gvwpylwrbvedenl[bsexdkrwujurnrhirju]eskvbigiwdmjthvhrw
+uumyugkrepjyfna[clcqpswhmttsgtrnh]wnfqshojhbnuvkblcjh
+hcwvxdxtuptlajr[svvedookmmgybok]dgfqpjqcewcjwqcw[rtkptmdbzfeqcyiha]xjnmaukpdrlznfxvfl[phdpcpgmzzlbeplqeyp]xfxopckbwdpteui
+mxlmvngjychkbdad[nprwbbiggpyhrgjnox]kkkrpnnokeecsxwtfp[mscljzerlkqzmxsghg]mvwiwebrwurrppqw
+bdgrunylqufybegh[hwkqigrllagcnatuzqe]tfooqltcwxznzoaot[hvdskwgtazfkqlbbbk]zlqphymjvcvgybaxo[uvougcsxvyieite]lryismkbwdzxmprwjmu
+mtrggduulofkvbdmqj[oijictmaujkaxedjfm]kvriyuoautahkfmt
+ljywcelytwxtjojhn[iopmxuupcuvfcgubem]alcwlvcmjgwoksp
+ybgcqoheatckeypwgq[szypqmipvcfzxbl]obblmhvzjoiinqd[kvoyilelwmylaezhow]fforcawucbchzbjlrmu
+txgcosxcdgywyfhgjm[etzfxsiksioqtrir]czbkwziihsrtlceuaj[ksksgvozuazlcgqcy]tcottzfkvhsmrsyvf
+iggzhhbedhayxftelth[qznllaqmnrogfmdtbx]ualmvsfjwntzbzd
+dfeuwphubioymbzuwo[tucongmmrqerhidwq]tjzrtrfhgixyspdsl[tygroajgdzxudheh]oumnugqbzgyilbrth[ejcdurppfugoluctx]rtxzchnbmwvfewg
+kyzwhtfybawdrjkvoyl[fzrhzpdsmtmmmvuu]fgbiqggdekddtlpzvzh
+irtlqtjyzstyynjfjt[zrlqdodytcoqczaib]brhvezqcuycqmta[uaofbaluqnucifngqd]eeprilhhysftrhp[zmdzijhtuxhysuaye]bqokznpdffiubikgf
+nsrehcsbptmpdeskqi[rpcpoctimqyccgnpnfp]peakqjqlahqkqfgoc[irckfbpvcdodsmwm]oxnqnxhwmwflazjv
+iuanxnzepawwipojp[bzoxbyrugitmuiutg]wtsagitdstugmsssbc[dvxwzoncffczplwcaw]gifhatzuqdvuwnupmja[wncssuyvhyawbmfpbdv]faluhtnnnvuiwbbudh
+fpedlxzxifcuqmvxm[vrfcejeyfkhegliplkr]giqaenxejvscrlxbg[qctzkslosctnoamy]qyjmeunfiiuoxsid[xpbjwjejckcavehej]txgqklgnzqdtimmiqwc
+iwkrzpmhsunofgrddx[ecssnqrcjyhmsfh]yrmuqswzgcbxnaa
+lacpahmmufjghzen[zkbpbownspfqxnclzk]yjnyyjnabyhsrggji
+vgxbpddjqotuvzbakan[vnagjxrcehlhbxwdw]kxuenaclhrihntgwjq[bgqywyrrhjzjqdnu]eirujssxedivdmvlsby
+tsqxgzovbjzlwpcbv[rgaywjaothmsswcdrtp]owwnjohtsgegsgtah
+xzxejmuyfhjmgoxfl[hyafuepnewepjpy]lbdbsoxevfzdpnwpfk
+moucalsxxvhjiyoceol[gwxofnqdrtxzusk]qjosxisditclyvucbm
+bjgdyrlrhtkbqrjohwj[gcmcelqjvjadxqnj]tlupekhzidsrscrf[oqadjqqatohbjwxrneo]ykhccsunlyamcmmk
+vgihvcltopalggrjzsv[hmrksbhlxuzvtbnuss]yqpcbwauqeduyse[oojtsldylgtokmdwsy]intpovuqazkybvjim[qbqspjlovnizurecdj]fkxluehqgdogxdofnq
+mhwhttcwzcntsbufi[afretswhwxhwkptb]srrajfoeahmhecarmu[wgjragqlbpfbfpd]epytkbjxmblfnkwhlhe
+dgpphmjzkoobitcjyoo[nzkzbsfktzftpmgwdcd]nbezurwvzkhwskfq
+epuokjzxtxphttxtkz[xcyaposdqcfkcxhncz]hcupnojktsvxrfwlyv
+xfoshshomwdgssxla[uhshvhbfofuhdsqk]zbzynuiyfagqpemuplr
+hycladrjbjuyieejeg[ajsfbpoakutelvhdak]hjejfrmmzslupsepozu
+ksputfunecibpffwovl[xteycruesicuhzai]sqpunyzatnromjeq[xlzamstzzisboayh]gzlnqcjacsbkkmgzi[aonbwutxuesczgwnr]aflrcbdkkgoyumfakb
+gjgmaueywnbqdvgf[tpheftnkpnlyujv]tvnqzdugoyjybxfpx[lnhefqkhesyicqqgvai]dvdgtlsayhtscupgikg[fyjgjzcrucldwdd]ohlycgvvdatuyvduhuo
+emkefdmyurledfdd[dxzytfxcsdxgjcwxjzb]rqwwzvnosuhkcplv
+fpmhvozxaaxsyxcpx[yohzimahvewgvzucn]ztkenzkvcryyrmo[drnglpsvnlefqhx]clawabytpjiwgqflfbv[xvqqglnkzkxlevq]dhpydxfqbclvcjtdcn
+itvuciuufdkcgdqgo[mgwnpeydayczlvjegm]jyrwfakomakilgvhd[mslududkqwtcsojaosn]dssdnwxzapuchnxz
+twopcscmaiqhzsepel[qhydrqfqwvjjvinlq]tfmaoxgmccymtrbecjk[zkuwqiccdgoubccjoc]pepwccwqlxzlvuhb
+dingttjebuuxtxrxt[jmgffmivzzxvgvefk]bqxyaoqiukfungsvu[sidxinaokekzqpqz]hekuuswyvznavhuvk[lnmhqeaujpofmdzub]vcufrufbmgwvdwksqn
+mlgkvlqtkpwzcjbrr[yzhdcawedycuwdw]ncjgthabbqmeuji
+oqybrhgapxiiaxihexa[gerjxleappelousidd]dblyflqmoarwpne[enariawxfzzpeqdvj]lgjzpkhkrumhvap[rtcetzkiztcmyyjzs]adjuxkqsxrlyjgf
+hqxmuovloocgcgjlajv[hjbhghstuvarcwhfy]wldxggmqrrhiwdc
+yelxlqwqeiqqwwaitp[uservmlohjixnqtl]cocskteueenenkfmy[ehpleyhokmlzslrdlh]lyvwccjeqrqiofplw[pcsjxogpwmbhrpvvn]ncmxjsoxflyiderh
+znmujbypnozpjpkqii[iydnrowiwhgazihmxxp]lvehdleutcqbwwan
+lympkckqyhgbaumc[oodkeqjyhckceptyqui]ejkkqbitfscazcx
+sxvzcdelbmcqawvour[jgrjmuzvknqddwawl]cfdxxgxsviiyckx
+nrsjamicxprsigw[iywcxzvebsemowpdmn]tbmisagklgwliuuin[ztbbbdtyfonwumpl]cjmddkvsaxzaszisyy
+tllvdxtvmesnmauwk[qaomhmguwvmsjbwrwz]gvzyhjymfhmheexe
+jqiffwykdbqbfcz[nzzfstvzsrtshctbwt]uazcksxgiyuwlkbde[nvsnfriumhwznjfdual]beqjfgyanriagjl[mkwaqdkmtnrzfpszb]mrqgyvqvyqabnugoc
+kyvjsbdoorblnmy[wxackciwbnwvsggfoxe]pbufyorljghrayitwnf[orktaokqgpeenjyk]xdldvupmoyqwylb[aljdjuvxqagigdbti]erzojwkjcoxvuztbqw
+zuceocflmwjxczrua[gpdqtptmhzmrumm]lvmswwevpotdyrrztzl[pkzxcpcqxpbfmznn]zoaxhfddhvfzxmdreww[roilsmnfdmogsvyyr]inqfvvkesrzgzwsnwya
+lihowzmdtujxkokt[czwvzrilryxqxqm]appqwnbyvtxjysxkh[wpjuzvceldxgvsx]hkyptytryliycwhpbkk
+ccyquivxwnsmzvurzl[gatwkzfmiuzvlxqqyy]twruqhcerhppziydvey
+kfmpvuwkfbczuahpr[uhtwcsydtbjjfcyu]mltkvudoyovjipwmptv
+yzuinluayrwqgezu[qbeujtuehlcqhbz]qwvclzkjxuficbgqv[qrzlculckkjhunba]gemnanesaovxzxatvm
+ytnrkypitsppgols[boldlbadecdiaeyp]miwxcsnjabbmlfz[nmfvanenygvwqmgpiei]dqwnubvfbwzdptj[ormimocwondmsyrk]eptdchejhezxzpqimj
+bpvimxocqygiyfak[kocimiojschpxlmlbh]oeohxkrlnaramquwz[mvodjkrtgwsyshboxo]jmxqxvydlieugen[qsqvwfzcowdvxzeflfz]eoysyaomzucvprpm
+uhanxfxnxmoedczj[pjqlsouqdhqhforcuk]wgqlbagmjmtimaewh[qlnvfdicashjzjjmmwe]wrtbmpniixypmei[hnikhifbzacymvga]cueedmtiokuuauro
+rmwtcdtidmhhqvlooj[ibfeikfmamtpxld]tvqxdwcislwdijaa[znpzxccexnnkerzseb]cvyteeonwbckvkmw
+xtrkdnwsvlqfpzb[fyqeealbxbpjxohdssv]eomkcxpzhdzzchmg[rszbjedcqvxmotecne]arebcunvopesercpsif
+wpmgxfiikbeczkih[cjfseyjqbnprrzrc]vmofgvrwxiitjsy[cdbplfeqqrpvyoguuqp]gicntinbexxdcom[bhrrykkursqvyepyy]lhpnuchjkxczxxvqp
+qnaldysjxpygshfd[ggbsrjqdcbppktpfk]rfapyzecbxeoluhop[njlupwxmsxpopefrwl]xhmjoasimqrdlgjwm
+acajjiclnscuxdsyxv[axykpgkepnjhrhfgqvr]slbbdyluiqetchbrhrm
+ryolywtcfhaxzpu[cihbqzqvoqwayjwqtx]cpnraqtbqozlcrvoxn[ippcsfxvbyrodbacgmg]gfmqhdjmgnfisex
+etevnoklfebubfa[kjvpcomfcdacfhthi]nfqsxiilqrwqianlsex[ugqfrpggyrmumjf]utvcyluzwmzjygnta
+tvqkpekrujjfpzlot[kgoaglxyitdkwjmf]mlihujxyrtwfmzup
+ktqkqvqxohypotivf[nsytklzqsdqgtjsrved]beidsrlrqlaaykv[bhalrlzjhvbdtjcmig]awjesirwjnmfjdslc
+axgwliaxadkosbsp[hpschybkdbrmhmm]sslipdgrubjiifxzze[sptnagunoyiasvcunvg]fywdxjoeyzvwrpinmf
+rhpxrkwvbmiuoks[ynxkvorcjpyldmigt]juvdfreyownzxciopxa
+qlmnvnzbswfkadrm[gvgyozcjgthimuxze]ewpsviwopsrqszjq[odmqbtcagnixpgasn]cywfvmbtfcixzjmyue[ekxllezjdqxkqfxkflf]smxhvcoojkrwvuiv
+mrjroyadyadcyppfliq[xunpwmmutvwiewlkyye]ppcjwembftkaakdig[fycllhoijmljdas]ghnbcqzccvagpgplb[eafwmpftuwwwoln]qbxjdgsbyahqkxqzrlv
+fzfcqlltfzjujqeym[jeaiiecptdpgfsfccuc]sfsekysmcjtdxjc
+jjynfbiotihgcbrojww[vrxthptqnzbjegjxzru]yethaiycpixaqfb[bplbbjoveuznxlgvooa]izorgiwsvfgporxo[lnktkblkgpenjuqu]hsizqsxbuadccikdw
+qgqbnxfvfobowmipa[pgiycstlgkcvsbi]nuvfvhbouoykamjuttp
+evroxuhzulkndbn[lfllzavhyovpvvcvg]kihcrzllseowjwezs[vpvpwqtlbykudupl]qrmhrwziizlifhb
+zgnewkpulzskmghubbx[matncbjczcjofajeilk]gimvlsfgxcdovxelxsu
+zgznxyobzrrgfnipxlx[gsazrixylwsicyquamn]isxlagxgkbtgrbjknn[qxjewpiicycnpta]tghqdldoiwdennnuha[wpwsawddkuxonmxv]bmkekmujdpmibjrg
+geeoheswegiuwrrmii[hbthbiwayyxkftmbayn]olgnlfwlixhqjgjvgsr
+crxkwxwfcdjitekzrdm[duvbsycafjsvivy]ysrnkudiueyakhpydv[totferyeflbkxuz]nyrvffrgktfpmwsmaig
+shfruolertwzhwvfv[oaeslwnysponjvpne]lzvqqieleintnev[jdhnbbkdwzksbijpsle]svtrwqftbwtkzzixrlf[wzxzoplqpcybbhhfz]klsezcnzpvgvbxqeedp
+rodljmmftzgdnxxcufa[jgqmtuwqkermnrimyb]uouynscrkxdkjhrz[hpihpdzqgzcmawkdsw]dlvcgdmdmupcmuduu[xyjvfzjaypcbbeettvr]pnqhcmdgguswinpxmqo
+yrcxqglagiyyhpt[fudlgwwllpsimkfp]esvhuezhtkwulzmut
+qwiwjsxdiblovdjx[evezbqlggluydkth]xtoftegxpmgjsgn[dygxbbfgcnrlaebugya]jvcmiigduerloizkyzq[oyfqcvstibjtqcknk]sdykrdksunkdurm
+mlublposwxvdmcasb[mmvoctlqinqyogj]lblnmvdegbddxjuuij[vlkyfhcwrywyksv]epprdwoppwnazhbfxs
+xidpschespoxuwka[lifyliiagwhtynahwr]mophvutwbflkblhzp[ngfdfvwwlfuyujsy]pqgdfdrrwonjcsxyb[txlrkdplwmwanoxhveq]sirdziimdysnzdrzt
+khglmzmqqlgtsoyuyk[ckwowqtfatmitmx]cqsnmpgwitnlycvr[hcjwrehoqrluifbx]dvorwhvznwutwctl
+lsjtzcpwlhruhcyvu[ppankbohskraacy]xriyjykeufmypvpcg[khfkqffqnnzsskbvi]exldjyjnsnxqgfxg
+cwilddndcerivvgcot[pwnjzedgzbwjhwdngiv]budzscutbkzehgi[swgapyqpuwuqitke]aihrettehkbulnndniz[ladvxuqplmfxnwm]zovkncitewbtnxao
+nwkbypvbwxrhjccd[tzjkzmgvioaqorgsan]bghmwniqqnnugulkcq[devmzttwdxjayueapxz]pigrhvuthflwfvyghl
+zxoysnouzggrhhygrn[wvovlnwttrpgnub]tflqcvvfrhwiikpfp[fmvlpmktaybiodqon]sawjgpmqugnvancar
+sfhshdpjhpscqgmcx[elzcuconpnmipksf]qebfhzrzjddpkrwy[mtpfmfwynqlzlcavdjx]olgxbalbprtdnjl
+ribazjlrsqqorxkipi[rkwdafpcbgzcvveipl]jtutooefoewtkwcolek[pddkdpvzyumbkuci]qyeuvqqxiqrwuzygf
+eobvoofynuxzuaudo[icwrahzvyvejahwlbq]ewwnptijkewsppx[bmqxtgqmosyeyhcbsvv]ojsamjjroupnfxbygrm[yqqusonrkvfmwpiwo]nueolsbydgeyemas
+vdmbxyiptwawwgfxzh[kmxqzdwjfyspqkptz]hkkuurdkmfzivckdwp[ncwldxetviygsqga]oxlfsqrbntyltzp
+gewjydarttmsjtqn[zxbhrkxlalwtmmrgfag]ouqpvnvhrcsyaepju
+iogmaqbbnpknpihgdzr[xddekzhpwasgjya]qvqeqqyfgmcjqlljhn[yqwhbjjgtlspllovxu]yzvhuxwuqjnqqwu[mnqqonpvybsaxob]emyjayuxxbvtumvsc
+ompsdhuyibxinkeelcw[vcyphnznqaeqzcdm]iqpgmmktiakqfpiejnm
+ciowlwsiatdaewieita[sjaasprpfvlolpah]bpeqtpttkceukaef[rprweenazfnwtmfqh]wedhtjlhyntjrqw[hyrqbnvfdzilazmclcl]cnzbapdwalrxcbd
+duvtrfezztrbcbrpkwm[vtrqvfcxuueqcpbx]xmjukrhgfutvtcyd[ptqlpgejdqamrwxxbl]aavkmmqbqdkxyuwpllb[cvtooqdwzcluidljfni]pohomwwnjxhohmv
+ieozeqgyrtjpfix[opyearfnbegqcgjqve]ljeerzciyhyvukdifu
+awjmnojyjmqatcnnr[hdggsjlyjznqadyuwg]gvkbbwfvbtwwfjjnpa
+dvtdsunzfozfzmgbost[cvhhdpznusqmedy]ayllrpvroikxhxetks
+jyyboehdjvkufzixpf[ijsadnufldjduipx]zmcubrihovbjtdych[vtmkafgmqunhknoqttz]amdwppzqbnylhsi
+gblfvnsmtqowxewqrzx[kzyxibskmbrkunl]nqajypwcmviecsn[fvewudrwzvqashspitb]docgbflbdpnxxtin
+evhfjidivoswuxhsbd[wmxbybthkqklvtfekms]xnnifuivlakbrvkfaau[upixryknmsroqfh]tfaezdhmvigabvwfgt
+dvdsnwpipghloop[diwimibgyehecqflqtd]tnfzbffdhkvhfsbhq[rtmprhoebqdxppae]gczergujhbzsgdxupd[ezswzkaawaqhjcdgfl]jgwotzkgibphpas
+oyuvlfvippqkkfxsgsi[jkfszneoxbhkxlorzz]rmotcrnupuzltlqurcv
+olonicnsustzovmd[kkmgnznlwjgwkkytz]usukziqukpwigcfvxw[uveqyxukqkusxuz]aqojtdccmpwlluelsyf[clqnppgmfzwrtlfh]obgkzmtyhlcounaf
+bgntejhmisbzfrblik[nitcxhpegfmqugmlw]rcwxgxofqbishzhq[jyzbrgwyikdrbof]gdxdwgpsfmmqejfyodp
+suumjpqhafxvgmgdokb[lmpsinjodlukkfk]jhehvjrbweyoeivfzt[ricjsiwyhcomnsgltrs]iysygfjrdfebsny[irlxudmuuykkcxj]wndlninlcnixabgs
+xusauuaaldibtqcyn[hvjidaemmzaurmyyk]qxooscxoynakekchbj
+xilzzdiyoqrwzcnwklx[jzmgqccfobvufhdfgha]lzkfzklxafmroamh[xxdzjoeflrhqibidync]kuodqrpntknogybhh
+zfogxhqdfspdmvxtuwp[fshligclkdavscty]tkvaozljxenzeoj[txujxbzywfgqkyfrjh]fwwjvdiaceuyumeqscq
+iqqislvjgveszvnb[qbfceykxhcelnwes]mgbeubhjgaydsrrps
+unvvlzfszuuztae[ytbzbzacrvxlksvk]aeaoeugpmkydbixbmv[nzznffshspwmlkqig]hwamlnoeyfmzhrxmbi
+eyrqyerdzuptlwfz[pgehfansstewngd]vdlfglsqchelite
+irwhlxxczsizolo[mgrotoelpfspnben]xuboaosbbqvskeooh
+mvvsstnbgtaripcmiv[lqhlubezzcqsqoh]ofqbajkawszexqw[pytqrosnsskcgmno]ceyhqvutvgwawrao
+aehuceoazqppxdvj[fekwbrgjolkkssozjr]ovwtwkvvxtwlatlhc[anrzzudeipqtlgvtibj]djkyozdjetkxaxrg
+qdkosvyshtjamlw[nvupkgnksmlfyivlaqz]vzjxmxzwetvndab[rjtknjbarestnsqar]emeeqkvpkwwwbpbyho[fxsxkmlskjyvniynt]yxdwuxqranfmwae
+mpkajmbuiqyysjiqxg[gmhxmogelodamttt]aboupdcqcaggrmjwo[uqmzyshqeruzquxxez]agzfrbsajxlgzgfueb[dxxqiqrjkpgalcp]qcqyeyosztojwikdqo
+cwzcxuvjuongdoellki[pqzhljdqxosuhdgqc]qqxxrckatnjwvmdjvty[qdlnrwhhbeldxrirock]kzsfmkvvjexhibpjfpv
+xqxcttuxwhriomnnarc[hrkxvrjviqxxeih]ofnkwkzmwkwfbflu[bsjloysawmfoigzrsa]kjajcjknclhkjofvh[jtocrkwufebomaervq]hawuelpfzimwdnxens
+axhzhgcgbqdeauomnjz[hbuvuiuidkykmvbd]yjddakntyygztrc[mgxbjwjbkzwnkybcgch]orbyhhpqxylsrzu[mygxsbzjoicfneimx]jddqvyyavgguqlqk
+sstrdkfdyahmpmolvuh[nuhocbdkubnidqy]fnhfqdyorbtzefo
+youjjtvznztbjozve[vcsiywlpdylxwpg]saiwvtogtdayorhni[bcbwjvcnlvrcqbeexf]cxmaphpnniedclqd[ilghtvdoebmgoykzmjc]gqxcmtfqougbpixu
+jypsrripwfsirlizywh[qwqvrrfaltcifzgrzk]urwxtgxsivdxexc[hxqqrmnggugvdgdcle]sirkwolflgudrrwfvnr
+jczbvdpvkmrklaxdh[iqwzvnjtjhmulvo]amkhoscjxrxkvtrlm[nlvnfnszosucrhvafm]dpkerwgcehqnmxmny[xabxqyrisiuhudad]egbjvaumucthookv
+shephwsolmshfqhuslh[iqeoxejhscbjknjkgk]ytigxjcdexjgptz[mdcfmxfkyxnaaoixuv]ltysxdcxashhzrhfzcg[jrjzihjbmjzwwikgrj]zkrlixaauhydpmvpggc
+hdwtqxvelsuakiujcgb[vrzoeqcoqwpdvdxrly]fieebtoboyeztrohbz[unoqhtonsyzptmpgo]bxsxkyquwwdwyhpxcan
+wbxdrndbjpmgdewnt[hnmfgladivxjjrhgx]hhwhdeyhnhtngzasnm[eanqualmsluacqejow]wtycyvqujeitvrvtkhk[vfabcjjiloownkmsa]xqjgahkglpsjfcryzv
+psxpjyoleoctcjgpwvw[qkiussudbvamcbw]hbauvxvnrwhyupg[jbuclksbbwmdnddkn]phqrldjcwlixcghiau
+oeiqnisrrknnuqczk[qhtdnexhjbgdaplymaj]fqqywiecdftfcpfnkrd[lvlesddgirngtuo]mfvvfvlufkoqwpwl[hljsgiuexvjatvztcp]ixguvozijkebslzjaco
+dktnilosvtkmvltdwd[vznigqxsgvlquhbquk]uinsbypzarhkgsgce
+ljjdiiuiikwufjnnvjm[xjbujiikgaghrijcbsc]escofoimfyedoist[ltrrqmdcekykivhaz]xdiijidhpxdgqbtxue
+lfwumqctskgwsfvhl[sgtnklskhazwypsys]bvjxbzrabgfrvyvyv[rlityjbenmcoigrfmfh]wczyjwqulaqxapozcnz[uqbunpfwhfrvgqcozw]ktvibesxhbrooqt
+ammvknbggljpkwpr[vnrtrxiwcitskywiw]ubyickjafcfifgupssy[cbkzhebhjtdbsgct]cgefqdgpdpcjlzrz
+wzpaqedqkmltsuij[jjuasmpwngjrynzettu]dtmgfvwtyxdfqce[usljscrncmnvrbb]tnevcveidnyskzs[ttmnmxqodycaikjio]qfhvrqvqpgjhkaaicj
+apdywyijusgxzfj[sgbhrwbwywwisyg]ssiiosnfconncgiy
+grownnednjxvuew[iniatygttcdaelocols]iyzwgdboxuadbrbooe[tojrecocburpdzi]oelyopkilwnsejur
+hfdpohrtqqyfntpfk[trpnstnxymqupxjri]lheljryczqxgvqip
+iielceqagqfksuqpzr[ollobpkbzanfxcjuhrz]jnxizyaoygzbzciu
+njpftdmpmkjwcngeot[mocqjgcycgznvcqjv]aixpwfggjyqyemoz[fmklzletfvqdyvvg]mznoxpgwowvjjmus[prrehzdyfwwuxvhl]hqppujbqaizlzvv
+vbjenrifdqsyzlwga[wmjenjnqufhqohvgc]uhrzouilmqjnjigwpa
+vwooqueyzrusban[gjwcwiagfwpvrct]vfqlgxbhucjhvobi[bkbtechiapvschnh]vjzryzyisyzyzewdy
+udumujkujngtkcfv[klinhdudyghspdsga]gxavvcsxqxvaziqrmsm[htseffbehxafyhoars]ghilivgeuuzjlmih[vtjpcrmvldjluqdazun]mebwzbxywmrfhet
+cwkfdzyxoayxukcgdv[wamyytyfmfaucrko]dchdvtpdkeonmdqc
+zklwcknfrvlblaamoo[ndrnobufquyjknl]dnxgeqvqwezfwky
+zbqgtpvsqcteltrs[uwrmlyjkcidsfdpx]cgaobtbuuntwyuhxmjx
+lbbyafbvhsilwmjivv[fkftqvaahnrokuhu]dvgaejsxgjuwiemu[yqopsyejqtvmlfxm]gzuulybydsrzhigldh
+ficlcqjefsddeds[kfkmusacvnqualtppxh]drbsbqefpdoossbkyng[uvpyqnoidjnssjobt]gsheeufqtzrdsil[jbvevjzeugpmopo]nrgxwajuatycddzwr
+xnhrhgadoziectoigmf[jwudbvxzwdfuubhjlt]lupnypmntyrvwqzlb[vvfvttkizuxshnhhw]lfdrjokdrbrcldjfs[wawjpqzozodmnmah]vdbjaoofkmhkjbphx
+fsymutmdbqyguwut[qvxhywjtposhjgwuhxg]ftwhtxqxeicsrlfye
+fglgkrjwulmkxbzolgn[vurpqcvuydmympiyofl]nbzudjasxeknjid
+nbtrkgsywnudokk[vurfuvkjdvnsukh]vkmqsmcrotppqorkah
+iqccpqvhiesnaohkhao[xykqfbmojjnscqhdv]aqlxkvudzlrncmpy
+dtlwnznjqsixssrsaii[vkikcmtsepgtyqhica]ovcpoaucnwravbozsg
+nobwzchgrycgkxc[tqoxhzxeorivdtdkde]ctdtkwzsvuxfgjtjg
+zsknnbedctklyuxngn[jjzvkixpfmskcagh]fkvhsfuckghltyqk[hmygppkjpcdicxw]mnurqampwwoiiynr[jbkvqeqrhnksizlssff]xhkxiwlzgvjdfakjg
+gqbxrvghncjdllxtge[bjuwjsvewzvrgcujf]tkrdrbempmwqujk[pmbtbgbrgzpxeoqsxw]nfvaaumgpjysgtvk
+clfcvnwzcbfaqaj[prmpnpjwklodeukzznp]zukpytpqzgmlbvidv[qhfrkjlsbsqufgnet]pfhfcxzeiowmgiyksj
+vogrpuzrevmatdbqqx[qolpybjnetsxcqfcvbc]ixxogojluwsdsldl[bztslfanuylwdld]xanhrzxetowrgift
+dqrkbymiudzhkgf[spvsqvyntikovrefqc]bzltachhfylbrzl[znefllzixypjdkmfcxn]mtpikjxqsppxlal[oeyhdcnpxvhawqbmkzy]nxhshzdshsiercr
+xmgedfiblpeazvgkss[cwbtqqjoaqbrgbptah]clzsinbtqsrkudymf
+puwqcxmsuxnmneuzrhj[dbljkganxzmjvtxgr]ekmomoccimbpbieaf[khezmkkqdwkouzb]cpkfuyzfdfxhhhuhk
+thfdbnkmqrektilpc[weshzvpsyofygysio]bffomelkkwvfsdxa[owhidyrjieeietzn]kmeqgnvyclngrcgquc[ieikyuuoliuiczq]nnqhogvlhwqipvpiao
+zsdcvcbtwlzlzlmteky[nrqtpxoefofrjeaf]myjmnezlzkfcpmik
+afyxnybelqewnebaai[ddjgeajpzswwdrg]qfwfqryofesysiuznz[ouajwvymsxmxzvgdx]ryuvawdhfmfvikye[kuovduidpcdyepuoq]didoelcmjebmytdyke
+oopihddimztsopfcia[udmncuvhkvvbcmxzey]fpehwxjiczzhqcxxi[onmizmkoyhadrxpsemf]htycdbotvmomguwbttt[gjsdzuveiuvudbyakzw]ramxommwjmpkihl
+bwlccfsaovlozdqpsv[dniiqfcldfhjiex]cdzbfrecwehrluxzprd[xpyzvlqwekcyglksq]dncoqoaakpgnbagf
+uxoopzavjdqdkaz[exsbnpbaeuvusypih]qgojfhbprpoavcbxysa
+mailxensjcsuodzpd[ftitdguigzeundytyp]fgoitzvujhkjynr[hnpcvussglqshxn]debsveizfcuroqrm[yeageekyjhilfwr]ozgpzusfpbyanxnzuak
+vxjnjaguqlrwoxlhfbq[zlqpitkigwihrikvr]dysutdfrbljdzjgcw[eslbaxzslwoxscpgoy]sudodfmlfyuczzf[vsthktidtghtmazbip]jfyoxxiaowptvosevi
+lgxmivlggzfdpductjg[qxgoioxsurcwayndy]uwlgoodqsjoxsjqqln
+qognhfgzowjikeqz[nkwezojneylzwfdm]omduvysmcovvpvse[bwxvkzoqsykfils]jwgfmwxajhmggos
+pvuwgxmpcrqknzpbkg[qbpmfthtmbkmljnsqs]zmplrxnulurhzvijupv[tgsommhtbbujbjpf]qaxqxdxmpqwduwwxpgg
+lzlrgghqmetsmcxd[fjffxsqjqctkxnw]zlzlpvksrpnatxmh
+ayirfkbsdyssjjpqmi[vpkvhbtreetyxstwcqp]rjbuxsgsrlqrdnpyg
+ukqefgljywjmlce[nqjcndjjdwohtizoed]njfgjjqkdenohbwqm
+kdwzhrslryuexdgbcr[hmbcvmrrmbsvyaii]bqprdkrgdlwjvoiyb[mqbaokwptkfmxzqr]wcauinrezkhduhcktrd
+hbtuzqvyldtvwgyumzw[dibedlwdcjyfngungt]towfeyxyxixyxee[libuilcfsdkejjl]wzzxfhwcgawuhskreyh
+oxjkoqahhqqcxcoxksg[bouywtiajyfmanxcx]xgqpjxtkaejvmqckkuf
+prhqbaccndsoscdm[cuayhbnfywztddbvww]psgyhytgosopvbbp
+dxdtcskiowtdomepjp[islofsowtuyqvcqwb]pjhyaudkqxxlwfoo
+vdatepedgnvgpah[jbooucwxtveomnpmyx]ixgsuidbemgmahtlt
+oncdjplunkvqphbyb[uvivlundxhdiwjncfq]dvhypguriulrangqwr
+vipebvitwbccsnahjhu[kpwtbwddwqgyhnkjsv]acfaqhywmwbkmgh[nryplosnxtbkpwxtkfp]njzhnytzwlprvfcv
+csvlzvkinldedsxt[dbxoceaaismltmspg]yomriudrxzmlbbbm[qilkpyxcxlvtfzqmw]rhwekeawwpyngqxzc[akqljrphobjicoco]utlunpkuptawrtfcccv
+acfepkrkhnviixe[cvksybusnhacmfoy]tmqqmgfdharutrqvdpm
+hjehtfbextjkaxilhaw[qvavsivlumfavaafhqz]ahdjvprlhlmuneewyxi[rzeuqtjkiuacirxsw]ucmfkrotfprypzuyqe[rutydtgtkppegdgjn]hmvzjyquxtydoujq
+ntosjqtunrqfoboek[aogjyqyzxpdgopkpbx]sdvftoxtcjefotm[jivgsxjogxklwkhm]cahcjmgzepqebtn
+omkznbrlrodmtmnhwsu[ysoinknpnzrjqkf]ybiqtlzoiohtldgoaud[fbzfiajeahzmiplcih]qimubctnnrmtwro
+drdygweayxraomiblsc[oglpuxzweqpofwi]mbipxabkjqcdscltkh[axbvkumlaforzbqy]ircpsgstqyzpwnv
+jefmuplsptisjqguywe[lkgtuysseapteszy]wzcehypttzjhjfp[nkwvzebjrydcwfkqne]tnmaxtrhvwvdnrhpxne
+elfqfvbjutssktxpdo[paguttthfghhyktkjjy]wkpqdurcibsvviqfqpu
+suzpbjqdiebctwhb[gwnbzgajwrorqcx]qoqdgemwbkdpsqgjds[qgozargzosdgbgo]hbsmqrwnlqsdans[vhppwpwwamtuurulc]ylczevsobuxtdhvyg
+qfixarbnawmgjcga[dhgdmxcpwpvycmwl]mkqfghairqabhmokxk
+srjvnnbutjaeikkbsd[flieajbdmghmuzp]ieimmehrnixqjynp[rjxiepmrhwrmrpi]yfrfmlgakaehvqm[hucfgczbwdpxxuhk]bvgmehildjqbjdu
+qcmjtgmmgybxhde[fvpxdzdmzkhxdzjfkf]qfnaclxnryinmvpgr[pcsmctnmmrpxtfgi]oszbhmhynpzqvtxso[qhpljywydqpnksmwzdi]yqwxnvgcwsdwuluiouo
+vhvuumgtzbrbgazpo[epktoekzvomswsqq]bbkntocwjpaxaoc[rnlzbqxqcuyltjxepz]iaelcpyexpoqavcbepy[azyksbvkvgmgimw]kvknvptkveiacqnzll
+pkkcmeinlwpoupwpu[qtoyfabmibfrubvepwx]atgpzcehuidgikzn
+srwntduyxjkpivzkgvl[hmenzrmnnisxgodof]lpuawirahbvibfki[gazzozitxhvxixvc]knbuydfpbjzupju[emzrzykcaeukvec]grtwlnuzmqivnvknug
+vzlbpuiceftddittp[srespcesbfprkwuku]bslyxxcynfqywwu
+icolypvmrgrhuvj[fgpeakrskxaljnakz]bqxravyjmdodsvhf[cjyehkcrdetiknsttv]dhoghrdxmmzxbjtbql
+nowswrulawbgqkmcee[qsktncayiihoxiu]wtsjxnvcxdriviyn[tebqonpavhbfnwxvjc]tvpwgpgrozhtqtiy[lhagntjbctcsdejajh]aedpfftlvvtmaqneaxd
+phiopnkoxulhkaddkxv[ueqfevwkcjwpcmsfspz]zkcoexersqysbtqdpc[nmcsonrswjxvdtuk]xdrsvfxrrdrfdbny
+aosrkxvljnapvnux[ldzgwtxmjbynmlp]yrxxllppgosniqv[prtvqenfqapocxdrlst]gypcighnnppaytp[azueqhhtymzpujx]lsgvwvvgctkiyvlc
+rketxmupdbmrircajep[xfmnkumekemjnwki]zurvxfxnrrvkmkrhbxh[lsrwyjtfjairiuwbaw]dyvmozkzkcvmunw
+crxtvtdwdxejpebbv[xthcfmihpjqbhrvqfkd]hztqefpqdtgyhfzqsi[nlaeacaqscestvv]ylbteskdlwjfwru[morvntwyebnmswguff]othonakykxxajuj
+zclhqcnlmxsurcrqaty[stohpulyrzcbabnydyp]veajkekzuxjmecdzym[ysujzinvkawzoqi]hfkcorxooelnfididyu
+oejzfesyaxeittrdh[yziovimnkfkadiplm]arzmtikoiveyvlsdkwd
+wvdwkqqmnretidj[smwnemzwzqhclpkud]yzguktkwahnuabs[bbyhgwmhhbpbwij]qstxwyfjjagyqvdaexg[nkerjbdjlikfgdv]qortpkyhpqvvebjdzw
+apdkznwjfxwdrsm[fddlqepbyrbrfgmyeiy]fvymcxblcjkcvpcyup[szsfswjdzmcabwuz]hmutpmhknvwrlwbvs[vpfcztrelzjnqzq]gqbpttcrakuedsp
+sujqaghlxszzfxf[jqybozaufdtanwa]rthiqanlennnowvdkm[elvfekcowitcout]ntjaqinnbwtqsctwrz[axpnqwfjmkocafoeadn]aplpjbnhkrcrbebmo
+hzkbvadkdojwmdmdxq[ohmqkaainyaufipcso]zojzxelggufdascjz[zlxncckagxntpzqa]kindyikavjkmhopcnek
+yjcsnegfsmmnfce[ueladqjdaqflfas]wcifctlledgnvodtlzw[zqswolvsfhpyrcivk]vemkuyjebqxyahb[ydjhmgjxmruwwmq]cufuqsyyytlgbpwrj
+jkkrynqxqlgxukyfv[fugivxklerausdl]shcuiixkbmzymoxv[thtakgbdzvjsjsera]lmpwzqhthoottxvp
+ncmijtczixmeyfuhspt[ixlxgrsyxrebpupt]sdoinvpfizdezpc[xckbxvncmseucrzjo]rzxfgqlionzaeocj
+xmqnycsovydhyaqiv[iuvymmaguzbrtgs]zhvxodssnpnhajwzy
+rqqzaaswdepcnnmqfif[pzkyyjprisjybnnjcq]kqpjhykszghcripq[vgdhuqujrkqljuc]qhtxqkqygazsvuh
+qynvobsdeutfrvb[fddgwzhlhryauxzb]etznfbueibykerqfugr[rviezfaehsvigssm]nwhvctxhqvfdmgqe
+ihonnjncwrkvglabk[pnjachlnpyonivmjtc]uoxellmcbixrdsisuhb[nkwsdmhisjdqurn]bowvauofupqfmxf[liiytxrcuwwnimdurys]acluoarkxopwppv
+ipqsfckjkqxkxyuvxje[arswyomsnfueuwmcbev]mmlwwcviicdmllylq[jnqpolrlwmmccsd]nfobgtdlxveuuldt[uebjwwikiebtttgqss]ikdxnjdmzbrpqqvw
+zhjywcsrtcadzdrby[ynasiklerbnlgidest]xhzwkwypktpkqgfyh[fuuxtaekwjpobdjfvdh]jcsrxmtbrqkerkrc
+osahjtbzrqukvphpe[guutbgosbfkaurvuf]baiwluaouikebnlgf[cgssqcbscupvvadpbt]lxwmvxorsfcaorccxp[jcqzcrfdkncuoqj]gbgdolqdrauivfnsyti
+vvqcdtcodesyomh[efjjzleahiejvczmsd]naeosnsaltqgjrk
+yucpovujdwslgdczxzo[fbnfueoeatnphvv]gwegeafilsbwgor
+thfmmzylspbxupt[asfhmdmkqwnqppnmu]awoxkgkgtrkdjzz
+ghbifboivgelqxkfeo[gtpozhzqfntyyoodc]yjqcvpimanwiunamfh[aglylsuuakjkmqx]edfukuqcchtbhtblcf
+qzonwqxjkpwqier[qmrnrkkwruteiijirkf]xhnrnahamaegfla[fzshmzjiczdyzqhwx]acjlrknukkbewao[afpeaepzoljqxcwvs]dlvdxhsoljmqgmvzf
+mzibkpddgkilmcwcshm[sgpxutpcqniuckl]kqiwkwdgydpnjcj[exyhorurvawneziiy]njznkaphsmgisqyujms
+xgzabblockmothpuxc[mhiwwhtpmtbxowbnp]aucpfqmnquiggenklcx
+rnhfshqrlxczmrcz[agxxpteadztvdfeo]zogmjfpebldprrmqg[zppblhkevlkqlyie]mgovaojjsutbwtpzsm
+kjgtqizmvuqerhb[dmhtzazyzqwjhpn]knmrbytrwrcsonmshb[oiazannnreojooa]hkhackgpdqgyqsgnb
+orhnenfhsjyibqacq[tznvydkguvcwayiwmi]hejujxsitqcaabjwskl[qhpfmxgjdfgtgmy]ahilwlhjkfytezctsj[ewxepeeisacexgtc]paxwwhhpaukgjnafuwl
+mhmfziehhppfqoocvju[hmfnlywpplffsxwzg]bkhkauhasnuoglve[oytxewvmknoqchvy]fyodxbpsytyeltnfsl[wojcbkfsswlcuqcz]izcrkyxzjclhkfuv
+slabudcjhktddar[cvkvaakjffjjovgus]ahgxzdctihvboiarn
+degyynefmxidnbw[zcfgkvupltxmbhroi]dbnaezqekcegyki[tjrnhpsmfftiscppybi]qgyifwlhvccshdiqfx
+sxszfjmiathxoqnxg[smizlxpwmelqjlf]etoglecoddmflqma[hsggyxsxkhhshucgtnw]oqzadjxenphyexaqrb
+kqwjndajvawmwxs[fskyhhktkilzwjtkt]ufpvkdnhygmuzfsfiso
+iqdscwzpnnwehtqmwrd[fqbmsfrezrkhqcw]gqkpkiqhtrjpusoefg
+bhwbuaqjofxcbuxrqub[aaanhuielrhxhlzscv]fkgimzkootysfzwcan[svktoznaqxkkibhigju]fmqhtjgxbrovymq
+pjybsukpzvvyouum[rzeunjnideaseer]ltquzytuezonpowuhdn[wzwlbeegsgtwpzo]hqivrviswwfsdmpgnz[fhabjemewetsjrjhy]lgbwcozirgljoudhng
+ampiucjqxwrzbdtcjnr[ufubjvykdfixyzqq]mcxabdvjzhohlcmcu[xihctxapmjpmrev]mggwuizzzxymhypmcw
+pprbxhbjbnlqecvmu[ewuffgnuylwmrcvkbku]bntyrptthpmexiakh[lswyqkuxrfzokacp]rvkhcgbfnjivaagp[mnpbbcgrakjlmdqt]bujykhlbutiiqyke
+xtcidzkptvkjakxl[kwjzzydtkvjmqdz]httbqtbiyxwryblrfd[cyjwthdmalqkqvso]knfncfebbbueoqze[zuruluaalfysbnmf]vodfiptptwqpnllvbdf
+wtjthnkscjzzqrbpc[eirytrqekucxajz]ghycghnyntrthzkechc[eiylrukgxsqpetjfnv]xuiymnuzydlawjygi
+rjrldatkdhvzvgcux[iuhectextisybzvz]vycerefkzhnmdyg
+lqftkkvpvepilrmyty[uptcsbeqtmcljaziisb]himkwiqkrogoyhjpru[wxocqzrdgaclbeefd]mtytxwskqznxgpfex[whqbcssppfhqedhv]cbtiuzgbvptcticlbcg
+pbotpqbiqdjzsmpbki[zqcshqinikcszjm]xjxijypculvuoavvg[nltkubwokrppvzifi]dmedgmkonytjzzk[obonilwwerhchueuf]mlfqiwmaicuecljj
+exlndpqjplyfdbmvlji[fzzvnaszvmpwpdcovj]ymothxghgfddmzqtglj[wyfqyqwrhanponsr]ydpntagauckmdqpjb[icumanaybbefssdjnqz]owhsbdpufodsqezginf
+ukfirftsouqdsgbgmht[nrkpwksebkijlha]zfkumnifusjysuzt
+uyzxwkcgjfsekdhktx[qhgrmuyjmfmunghm]mgjbupndudwultdnnt[oczntpgnyanxxgdqx]oryrlqkmroilyca[xbevednhpnvzzwmrorm]bdozfrabvamfxae
+toqvrteazudmppbrxct[cyiebroauwofshvceeo]fhoxdufwnvmlwhhp[xykvdatsfccxlfmn]zpqqflqttorrmjs
+ltkcveeqyawjrryerqa[zxoihtpkswzjrhnbvz]cfpirvnjowhsnnbehd
+gdiyzvnydjwhfzrimq[lvieihnyxtdrgrbs]kpotvolpjgjtfiqf[koloumkhoyktylql]cxgmdumzkygpppqe[aywuzxkrvrevgnnihh]uplcpitzxbcqkmfgsy
+tskqojnfadpujfxym[xomwfoclpvyejczgyy]lkmawlhwgnpccotaetj[fvhbgpqqvasfykn]xfxmjfyoygcsbxl[ldveqjhkzxczzgxhbxh]tfpibohzhgrythjgqor
+xkduagbswofivadpo[mxlqngyjwbqfsszj]xoxngqbxwsttknmtcyk
+zvmlodxbacmwvdti[itdxiimzuvluomfxq]ymrkoyojdnsjqvl[dihqibcaznldgoteyx]thrrpohvatzogxrz
+soetmauqgsswblf[hlkchnarzzrgjawosj]zsghpkoexwcujpakaou[wvfxggiskbpgntosh]zbohdymojoxhndfr[qhyzatgvedhoibktw]iggjhmravyoswvu
+mwjmmmeiclpjmvishbx[dbmbrjcjcmbnqxq]mvhzexhgdmmnduc[yiccjcrvmzjvygs]uyvqfjmiyccasgzlz
+dsfwjqahjoozkpei[olrrkslvxvijsyopa]jmzojmvqtzvkhaxukkv
+kudhszsgsrenjqcrbp[ipvxqnbradyxoline]srcnihnhywqlietbgqv
+eklfpuufieqqdfrgouk[ycxgdyairggpehtkim]sdfhxncpiqxguzlqw[ysjhhepmruqaegxp]wklvpveoxxfyizmf
+apdypwjfmxhjgojtb[zojzoufhucunvjr]zjpuqiciaujfbjta[wlusnbuvcffrnac]ecaccicpvcmbomsvf
+wenmnejyihmxaxdqwqw[rckytszqrgaxmjpbqh]pngxudjgdtbshebyv
+ieyarudhbjrrevfodgm[grmjubbiqdodhae]mhzexlzijmzpltsxjfa
+byfyxjxqlcpjxbpd[pdqkhutluqjoelb]pberlwpeqxmovie[zkholwknvgbfxcyymye]askmwovcktpqhcg
+ccjcygsnanyvdss[frpxggwvfjuugdysypg]tuqczwtmobkusalqusm[ignjrlsysasfmzasa]nfpomrlygzjyylhvypi[lahpgasntfymdoub]rlvsrtudkvhtwhycf
+omuyrkrubieiduzegr[gcigoszvylmdrlrc]jtlrlsgqxiqtciehh
+hqeghunlieoqhetnh[unjtmdurovonejpsjtq]xtatdniykzzxpufps[ysaytzqvcxkvimhql]tyfkttaoythcttexrp
+ciyuspkrywyyplmlro[myfyzvlzntivldrquq]eighmudngyiwlsme[eukgbrmtghntxpacth]pmvxbxswfexsnkxmm
+gdbeqewbrhyfbfpeti[yvyiclmkwzelbqi]sktocytuvyvpcia
+gnfkqxrtauwnkhfoyc[msfhopavdyhpvpttg]ewuyaxehxbyziwmxd[iyqrfiudsalpmpk]smpmubdejyevdggead
+rqvcsivlxhfyboxj[flvvsnglektzosreb]yrfdzdgvkzgrxqoyv[rygmqeiccgtqqmni]frypfnzvhkzvlabrr
+idyqowifirnwhkk[vloivxhtkdzjrbuuzmi]beozwodgehayklyr[cptxwcsgsapmprrp]hfrdeefhyehwwvghgdq[prcadfsulvamytpsfo]tyodjlxziwyqtqmi
+tdwoqxlhhaqkdmv[cxayaazioswycmwj]pkenayaygxyrtqrqugi
+vtqeqlrohgalpwrqig[bewbjgeryrvhzwetm]hpccsjcgunkysntpwp[yefsyqedopuhssgo]jjkkuwoyvhzzcmdlvv[uqczrglqumshdhkdkut]dlfilxdlomkvtjhv
+fezgzsmmxdvhtmy[rrmbxexyopsrhxag]ezltorfyxclstzhp
+ytcnqprainktcjei[phwarjaicrgistkt]qdtijjhbywixrie[llwwjrzrxhaqhie]ufaezqgmmdhhzjzrza
+uyvaorvuqwbbexmafbj[tnpwadyyakeawtdextg]tiqechjccyyczpvbf[vaqfvvcbrowtjxyu]oqswjgtolyixytoj[ismczyxhizrzbbpscus]rtlaqgqrcxpjgmih
+jzamkswiztvnelaqnqb[iptcqxmvbgyaeiwob]xnhehagwcwdgsvpomgt[jsasqvgectyfdja]dgjdtjlzbkyyckvy[fobafodakfhhiem]thozlpiakivgzzvemu
+owfgxupnufaiuovcesw[jeskiymcmexnjbxrbp]obganlgvlqdczqrvwad
+chsvqakwmnabitpotyv[eqeyowfftbjxdkpyf]cflqouimlafrxuqvh[vgjbvqafqyzexrzhr]mnywvcxtgsaifufkcu[rtjuztroxgmpkbnim]xsqyofncdrvdpin
+kufzqdykjclolpveo[fopvuhisayecxlainzx]wvrhymidhtoldhb[vylhmdjqsdhokif]megnkxywjthliwepc
+cqjpttuijfdzott[wubeiefulpuuhweqv]cqxbaudhnmrvrigogf
+hkzaqueemmhessqjq[xofafbaefryhwyzzuoc]yyzaekuutvjrwnhonpk
+zsgyhvutvjmrgnmar[kbxkhssdsmefafntsr]ocjxtkpqmugcvkopvsu[dsdwezhcblqssurfmlx]veiioiyfnncyfrdwyv
+nsqgaufitxefakffd[brdfctppxqczvlohw]ntxmfmrsajxuqmo[pbalhistyzwnbfs]inapnupdvnwtlvvu
+krtwywfktmbdobnq[msnsspogynsnwdb]efcftgrjdyygncnqdks
+rrasplhwovftrffuw[txyylwsjezcxalx]voncsevbgofoiiolvk[axcouuspjtfzsekglc]qoutiffuqnorbpnlp
+etyvjsjqwelcdzpnjxm[eetihszvjrmccshr]uskafocfyjorzhdx
+rqfzvsuredndurz[ebgtddsixmgsugd]ilczpjzsukpyekhobu[eeciaduigoflustith]ohmscfdomzprzjncno
+jjjarldpnxgwvlxve[yjoqlmnvtslexafgvbd]yngfttqfsebrcwtctf[bwevtymxqlrpqqaage]wdcaqtgkvmzesrjex[svnkfzogwcsyfxoxh]hvrsvxcpdxqmlfhb
+ldwuplbjkimdskui[flisuphwbiqphsddaxk]eelzsgjnvecwedneyb
+busmmdpbgxvdiytw[kwlhqlohknjgwfh]xgmkafonkyzffqtj
+ngtpdikbtooilycy[dwpneelecozfzwwseg]kwkwssbtktxenqbnyfs[lekbaoqzpvjbnuvq]vhlbuorxxxxztocuiq[rscjyzvyznunxnun]jhipkmizwfpoxeuktk
+leghszcprzadwpwlakv[cauvyhahnjycqgmslqr]pisyfnajcsrgnvkhcmj[ozrbuuodecumxzbsr]gtqbofuoteafyjk[sodglraziyxhcpm]lbzccqgejtsczvj
+aiqnofheehbiqxqlg[wojpqldgrsrkqqpywb]dyxygexggvertuktz[iolnpmkijfefcsebi]okwjyjatnoyvlhe[zbfipzfoszigysxpwu]jitbvwjmknigdnlt
+tvxhyndcnfrobfrdvo[vwbjbbozwjpolbmlkwd]kzsgbhkshipoxtfp[sylshvahmztsbngdl]emwcmnpjzydlvvknrhn[aarrocnhsmnzqgozo]uswudvvjntlhqjc
+adbrrsdjlpyizfgvuc[qoimvkfjruwpheezeuk]gyjjepfgjpnyajypq
+xgkzhzjlkwacqnihyns[bmprkvdabnasxzqzwg]hxwyywhnuntidvpg[mvqpemdfnvvdlpul]ttqocuncdebtomizabo
+zztkzvwguaggryld[fgkabjmksknxlfhzpc]iysntrtaaweknzbxemc
+ocwsupvhvpcgwehx[vnmhfmgubwbhhrmkp]hqpkkwxwwefzojltpph[bvsvcgwsztazzzjoxi]iasiueagvwjgmcugh
+tkxywinosybkrutpu[eluxrinxkarduffy]brxgvdsoguiggjfemb[paaawmhcmdxneql]qtvmkmlldspsheyac
+vzcnrbtoegbsuglk[rqhhdwpschucsvlnq]hzjzijxkcoxpwhi[glryptoeiosdosoj]fhduvpzlbptbehtt[yigihwrodvsulsrsh]numkgigkznkushjc
+oexrobvxlwbqkrigz[nnbfhaheuublajo]pvlstoxdjdlbroezlbj[ykvlcsvqstxycpp]rxxgokhffgyioltc
+cstzrhymnqxwtwpnvh[dzbyzhzvaooswlkdrof]dzxgsohzaxvkiwho
+hftmeaqbiiefqtwklr[bmqfhgvsfrywauxq]brzoeoncrvljpjqxpjd
+vbnuypzeryxltunvcb[ldnuxdvgfcbbysibhop]ejgwhaxwgnnbfide[okhykghpvystpufnxqr]umdmoixuvfqgecr[rkwsaizjzxjgmmftw]czzteyolfgwkrnkxid
+nvflxkucsnbsltnp[iqhnmiyolnoxjzjzjvl]ctdsnjzjaflstsy
+glmwwqvembkbsnvs[skbkkvnoycklltrnyrd]irlewhaeagdiojbr
+gmzbjlrhyoqkiyrb[nezqwphjfpghjubnw]lflopkhihhamygznxv[zuecanynqmvceqxyy]kddyqjerkeuhuamjxcu
+kwneigdpqhtznqaide[ncindqlugpdagtfzf]ctutcducslvhztsii
+vhjlncnrshwikfm[amlxjsoevzrlkgoxnml]lztearcwiosrcmhfi[gkdbcfroyrgwylu]mwhzhimfdrflqqihaq
+wlswesjcluvzurgrnul[iehnkjghqwvennpj]znqbjbnszpnklctx[pkxxihelrhfkiqizi]dlmwkrxyjxaumvtlbc[icgjedlkxpjwmauu]cpbstqjtdebbywkf
+yxjwddyrzrzhqrarheo[dcayrrmkvazrzzlpqh]gkvbwuimfochtndis
+cmqdgywvwqpfkixkga[zkcmkmqoxmpzued]iaerrfcfhcaidkkvwvm
+uhwbwhbgkrzntdxrw[pchhzpiwclaasygyqn]oalmglktkidoijgyg[yugfmrxigwwqldfsfb]otdsjvxzdlsdhnyk
+ctjuabhainyjydm[axxsgakjkreoeifx]qaphofrkpiflusbeecj
+hdfthabpjjuxgoh[zskhkbvmwkfmqct]vmqfixzmyefzvza
+wnihepbftegtdrtndsc[wtmfxwvxzxorhbj]oqlfpicrqpjgvmo[zyvhvkalgcwwjucnxq]ppatiiiatwbpyiwjr
+ojaqpoarskgzmtrj[blfchukdercwzqa]anfsoaopkutqfqltry
+ofijvkbfofbyadh[xmlicvxwtnufzpn]jetnmprdolywrbmjes
+fosypykuipsqxaud[tbfwtcrdgvidqsg]tvmvfhrepppxxwme[qpmrvterftfxchiv]flnooydpykdzrtfck[omhwxcdomygkbaeqrfg]cwztbmysqwpqfuig
+lvojllusjibvayrr[izfttqfhjethscsrghs]egzyjonmwdatznvzjw[mfxjaelqslyvkaqir]ckbkobhykxhocczot[oezwabicsuchjia]ivolkjcvilnlsdnk
+acytktosnzjatmwue[medgjpfpvbiqgld]rjsbxcwqhrrklyfuu[xclxdxjcgjwkervy]mspnrnsznpccgcke[ptntxmnzdrorgoexbsg]bovvgignwezlpgoy
+wdefvabtqsgstwhdxm[otahaybdinlnszsaan]xgjagsgrnziuqxjasw
+cqkpuofhsousjfnlfxu[syvkhshtiyisqmrdp]vtvtzgdxigpsxcpdkt
+qwagfdeyxorxoaphzt[kijseqropygskgre]tnpsgfihigocogn
+nvppsgsgegzthtmpt[dsjjswqmzkoqtihud]toeoabpfknrnwqxk[hgyvhoktbvmdvwauue]pniilifxxtotvypye
+noijjdbzbeowhtut[tlfprbqoqtftqnjjs]fwqyyfzzbzjeykhoje
+rewfvmohscszlog[dwgnxketzlgefgf]fmvoxbzpxywaicq
+pvtakzfeeithcogo[mbktbqqelkzddsmn]nuydimwmhdyhrls
+qfzdrtjoipdlwkd[fsymmkclzvcdvqexr]yrhwcyjdzgwhmuijhth[zgturekjlobpmcje]eywzpwpfahsrwpwl[bgyprfkbmyaixrqj]fvhhmcltucokvqba
+vbpnikyhvhqnemdo[lnyocyrozyteoxalil]phhqtzpbgpzrusr[yygaktzkmithtegl]cskivnspoecsaoi
+obaxlisumjgehbkpea[ehzysfspgzssttpebuy]vwceybunjzvlqevd
+fpanvbmzhlkcazo[wfnkxffkzmxnslov]gtifhhnlnnxkeaolr[pwkmfvowikzjctrje]anfzfrtlihlyutaq[vbujdswyelmwoudg]lckbqqgkglpkfnhu
+ubsustsojocdyjv[obkxihfxtkbaeusurk]zmlqtgokothiokq
+fpgjwchgmuuwpzquwf[xtluejeypvgynbsdgip]nyztcugwqufjpakuxkb[yanyavbmpeqlalnk]tknqteuqrnnorhcm[eshuljurljirasr]supqastijujykowxxhz
+solyplfhwchyjtchjuk[wuwirpjuevkxulrs]axqqiqzteislutclbzo
+oktlpryceitvhqqjqxq[ufupbpapoxovifhqp]xgrwutvfooowfaxs[yxoxzdoqyhxsiwcxrgm]swmalhlzrknfxgnamr
+kmmguldgktbolgarsp[lxrqjtqbuhuthezfcfm]nhyafiyealodqrmagqq
+jfowosecwpywmrwka[rlvhxlrwehljixaggho]tadphuxhvtyxkgvyru[kdwmctblkvpkral]ufydjpceosbxpcy[qkiwffygsjragvq]zlvqihgbbhdojkgjgj
+fjnehklshlckrcdhxk[umipduxaengqrizo]obuxhxbrybwifedma
+dzeftgulomkuwyrrm[aphjorxpuphqsqmp]nnslfcfiblaexsbftwi
+eypbooqqyvqucqvyys[rcijvtatnyzpafpqhwi]jrpwrlhuiihzfwt
+zikyfwsyxwrtrgdkjh[netvaemiverwhfctosi]xwdoncumksuzsryj
+jxtpnxhjudmsotudd[lgvfscyjpngmela]wumifhvbwbmmticp[dvxmvcccimvvcrvpist]czyqdmwoqjgnfvjuxul
+fvmjytywcfdqfmfvj[nhufehmupvzkcrtewz]hyxlzunwnjccnnphrsg[hrfqmrewnweuyulb]hmqxiwaqfebkvxhv
+peqyzkuviznbwojhtys[svfilvdawzpmtygynd]fpfggygzketpcrrqx
+ttcupspyysrbukznk[rpewzuewspsqthbqb]yszbsclsnmbgoazsfl
+vwoufilgfhpaqfxt[dmlwugzgaywwzqb]rkwtuggupfsffridmux
+faibpioziimdefafugx[unrfywlgqlxqmwtxrb]owzarstubtqbwwjlh
+mvgbokjnhpcnsgcpm[vznublzcbsgzahkjprq]qdhqdlpftbetdzckvs
+dgpkamepjkfizyaknmw[ctdimkbvwctjqcbl]euwsfdqpvfkrxuwr
+rjcdwjzbrqqqqljqj[vsrppwgvlsokgpn]rxpddxouefplfnctudb
+lhbnntitpjdtprbd[cctbkujpuoegzrijpus]xbkzdntmvzbzfxljvt[brlovkywclhnnoyrz]rhixzndklgudnxkr
+byahaivirlqxulwdoe[otyasqivnfuwxmpn]vzsqfapigdecsmaqd
+myozxxksdnucpxq[jgpjjngigboxsoy]tidzlszxsdbqxba[lctczcenpuntfjnf]hzdlcamkehorgpz
+uoylyvyljpnzqimzgh[umieqlmcsmhnnxle]zvxwqjbaemhtoexyzr[gjyxtenkxacukadvhfh]kwagkgvaqklyfurjnar
+rqzfgsolwpyfzeg[fqbhyjayacblhmm]egufazwxlncxundcyyw
+eexntdgtjwjtizhlc[havetzocjnmfnpgzl]rmeusmuumcpbzodie[efuqzkuscnrbxwef]ehxrajahcfdggjyq
+ozakiysvzkycefw[dcjsobqhxqyxnvwz]yuoszalpobgzxqk
+pterhsdeyetokcbtzn[cdooadgsexdxfzjmo]xdxrkcynckoeirmjnlj[matsfmymdliwcqlqf]llnuahmiztvbbpise[egvzoittbupbbqrvd]bantcrmtkbvvbxi
+tqpfhtrunndzpsd[zjzqvvckxscqzavcig]zquncdjejdyzegvcm[sxxdynlbdymictrfspg]smgkjimutkedknlppsa
+byjykuzyigqofolpgf[cybrboapdfgimjwjm]oczicilrowczdlcy[tyaduotkhfvyatb]iklhgcjvfdyypdrdbz[dqkfqaadlcnxfofsvw]syuiaqaemufewlijxk
+flbmovywhikcuedd[xyzunixgypmuhyj]loihlyylswpxtenh[jadvlnlzdpmoghiir]xbiwlfkwxtthlimngnl[vgtvhphgxfsshkgkb]vttcixaajhdcjnqx
+xxxluypjxxutqoozzn[gufawigbmnhtmwhcgry]yaldvqcedheoocj
+seczijwqqpigqcchnz[snihttcoqeotvsvxtsh]zzgbjkslldiespjeejy[dxpgxigvppgnnddyd]hcwgvtogqdyllyhkqj[hbkamssyyusrgbg]dnnseuhlwkwnycktlu
+xeupsswdnrpzqvl[tmaszjcshsavymzuog]svjeaxmdkgbimlv
+dktkcbqwdeomyrp[fqaiihosklfctvufhw]kscgwrylrgbrxjzogj[hqvwmstcpchcqkowtxp]xfooorpnwwfrqstxft[zclwozroattjxczqx]uwnclgxymympirm
+yohglmwqjxpcgozvfc[ojnlrvpzwcwgnfbvf]uwjufnumsvqwxpg[wrfczzmahjdxdzhifs]psipfjeacaysvubcqqb[paeelhpmpjlvbal]buinqeedxmiijkxpcpk
+ficdlwimcpzelkxcb[kyizgumxqprpckyyh]lcwwypjwqbzhtozovh
+bycnifysnrtdseez[xombfbujijpsrccccl]tbvuubyduxnascxjkds[gteskflapsthkzigcet]otggllmgcgfgqloehf
+wvrrowjovflnwpjhhrj[dqfmznuqmmttqtdqnp]wevjmhhfmorcrvxvw[cnjtxcdcketvdidcbu]icghhdkudxptbdcdhik
+wquydkoyevtyfwqyimg[bhbhiqnxwfrcvqcsdq]hvcjbihyziwvmqr[phnejggzeulkkbdxb]uzpvcrhqhfkdkwvxcku[piqegxvplepyfjff]xqgfyfmlqqgcsnngmli
+aiufvoznehafclsi[ynuiezokzxlhzsnlnmw]buhvbbmikiczqjlfhg[qfqcudscoobzjdwfyu]dcqxfcrpnhywlcabobo[piypuleecpciydz]xiendyljklimrwaexac
+bmcenbqijebgornj[kskdxdmdlojqtjtw]kqpwfyitjbkfubsh
+wjivpitbdiigvkhfpjf[ijhxqgwkoctfiyf]ezeuczihdpeegpnppj[rdcsrurelstudtzqv]afvyxjglfxybwff
+rypyyznanxetdychyd[srdvpypvsmzquaeec]qzehxnsvvccjqbjres
+disgynuubaeuiwg[qhmjwkqbmmjhjze]zgunyyctwtucdho[xljnbisahxahllyiob]astxdjwqultlphiijvh[zmhdobafwbzdndlrm]hwcwvfxwjynbaxidj
+cdhvflnylxmmlsgo[oollmpblrqislxgmvvp]nivfytkylfpufcdxun[bocnmaazerwhgtzt]txxystvwvrsyoym[iafzkvskmhqjdtk]pgdgojbemypqbkofwf
+sjtahdwpdhuosbqyss[lopwkbhedbpxtcw]bvtrmrjxtncfnrw
+tdofrfbhpawcjokb[ynloiqgijuwanfekxsz]fdpwynqofzqumlrelfr[orxakqzzdjfnzlgywae]udzboibfngqztfguv
+huwdaehvnyhbowsp[kbskeavlxslbvco]sekeunfcfnrsjqgqpcd[xrfzxupwqfrobegw]ndphbckizbunwqmykse[qyoqnkrhdydzuir]romctjjzwxjbxyqm
+eyutpqnxiqygxwt[wxsiplbaidmlgph]vhlavtrefmbfpdfbju[owuuvbqjuailmgynkqa]setuzkegazwdjyzskty[oaqtnegjwglqnyw]pyizfgyjbebfacjexkh
+bxpzupefyifcfhkv[fyllboalhcmvoctf]bvfifvthhaovzixpx[vtppcxdmlfbfgvgolil]gtyweatzcejbwtse[prplzrovjaeczsyxc]jkylsdulnhfilbsqh
+eedtujnpvzzzdpgfrm[uopptnavfamhccc]qdnckczikmbwkxfmst
+hzpjojvdukrnakxzkdv[gychyosqibeedkj]efhirtkgyzjnrqn[egmuiotfolnlyjg]nbleytvfmuvypkpabt
+xadnnqlykhisnky[hvfudohkwpthdtyxe]xumogpuzbvdpbnapcw[gaavnafcpfbycdpvz]xlgtfefhzyskqazl
+ohnpejtztddevoitaw[hoixesaghtpruyayyzu]ksyuxpootryqgsfctcx[yoazsorvwpkcrjqq]allrvqctxxhldwwzil[rxxioewpnqttrzaevnw]tjgvhfbpninpzwvxtl
+qhapfqjbpzieybx[iobyolfvekomzeelsd]ygcprxtqzmwotja[pheachmbpziycyhykp]yhlmlzbdngqpvfcjt
+egcxwspabytsgsbam[hewsugjwdvnywgjhrsb]gbxbpxonzzllmmkags[jylmvbwwjvmvkkgvusd]fxckijyjjwfrmlzp[eiohquiromkekgsbp]bpimyywlklqwdpfasc
+iypuotjzbcsafzclwb[mudgawqgospvlepaexc]bsqftdoatnacbnpqk[bxaxwphnmcxlptaz]yhbsqduzzzkviyxmv[cfeyjhtefuxjqndg]rknngkyxrldxnqxfil
+epqhofdmbeblgqjcpan[tuffplppwdkoimwbu]yiyfzqemymmtzevrvtb[vzuuiqvvudpedkbdgq]qzkbzuuvgzujipvh[etjfbbzkhkhvlslkjg]sqkdjmgjilbpvmr
+cukbhochuhppwcuwwh[ziuieaxmtjrcovi]egmfefvbqztrinknvh[tcrdwnuqobusvhhhuw]llwltqrtuzujeuatp
+uegokkxxfybcozva[hwnrfpsyzbclsubdc]kxssypkvfyghukcsted[uvtzwttuxxztqwwyjx]lhlyeezyttvgxgtz
+vgriivdekqhhyzgmc[lkzxlushgdqezkwkbv]aqtzbkzcfxrkuwkw[aeubxxnhyhlolauhnu]qphfpphyptbmbvcyutk[xscabrjhmsfredzulrm]torgsvodiuuxkgcp
+blygklicgpngtpgcldl[melaiuchcudinutcx]fldhqlhwyjqhgthjsrb[qnvfdzzszgaedjqky]amhauyjuhdistfgbipm[irrhdtrtvlhanuhfb]cszydrvyiahzwegkdiv
+yrncnxrkuamoung[vteffidkspotxmwhna]lohvncugddeuevq[ueuixhkoouhzzfucs]xgwgddhczhiovgacg
+gowzwidadczncgofqsa[gzkezmlagbaetlf]oochwgecelkuokyunem[slzawxgblqhorfpezd]chugkzdgaukccbeoi[apmckbkkvlblsel]tokgjnxyppksnep
+zyqnagblhgoyiqihy[oisqkkmqfxdtvfx]qrpxcdxvmtlqbgvm[rsoqvutimhujjhbwaf]xtdayhoscopmejfxz[sqcpfrehprvngyagm]ecwgbravfceaajqg
+nntkrxodbypdodgtj[lnlglurkrynztgae]twtxdcskknbsbinlnnu
+meztofjunuxbkfx[cthbsibrfgxjyjawtv]ujhnboyhpoyjprrheg[qmjwvltvyjgntydrmeb]dsbnlksebapwyfrtr[aoyswieertsyvbfijuw]wfzftnldrfdpnmnn
+aanwuubqnptyoryyrw[izbhposjoffhknmia]pmpudrwiwouwspqnozk[sojpnvluazibqcqkw]veawduaoceyxmzwbgd
+aenjhairjysyrfylli[ksygiscororwmpcbpl]mdggayipjsxxfhz[zrovsdxuwyxjjbfm]vpmedxtfdporoono[zfnnenxocrbtapmnezl]odykztbwvuvlngxkwm
+aetllelassgaxxhspd[knioznfojvtrwjtnvfj]zmdmmmgudgcrchsuufw[qowcvxqgjaoptskz]qyrfhavolkmidaul
+gkevcmsegjotmpa[yjvykufplocymkaq]yhewirtmatswhjud
+kaerzsgqzwhdrlzk[fgmfnhjaylhdvepgdr]smkwpurhnnhaqccuho[cznwafhuvozqolaruqx]ktiyadiryeclynr
+qnfeguqpvoiadeipxs[tuodvfpmqdlndroq]ruumxxencwatfiv[otgvbhlyuhtbtyfews]swsjtpcysedmpsgwao
+mpxuvhlsahhdmtwlhz[saxrupcdkcfpmpvzk]rctxchvmeqnqsxqizr[isqtziiuucctgioof]vdlchnruvtuupzvukfx
+czxihwpinbwjaatnmx[quuiszmtsnqdsugbr]fhhhwhvrnenwekmyi[phwhrltyjkmdffqyu]woxrbiznmygdqbptf
+qwqniztrmqkkiyg[yvknzntvwmikawjlgh]izdzijciztugcknoi[mqpjeordqprhefbbsdj]rtwjvqdagpycdsxtd
+pyslrefucxvqpgtnfd[guaqdwpjlwhfmmyzxln]unlgsygdedtpfrpz[uxytlfxsaeouxxdpdb]ufpwpasnaiqyqnex[kiulyoykitwlllexti]cvxikzspuywpgaud
+rbzuremuvpunjopiw[evldkwtjsfwgvdl]unsafmnksqehiore[ipvgyeheeuobibga]ohwjoehyibiihubwuo
+zlxdszmzwikrjfjfh[rmzbjspugrnhysidi]impguvxjhbhtirmdihz[wlpaqqnimsearxzka]fftirrvfdqzoyusjucj
+yvzxaecltitusbcfqv[witiggtqtgarfrq]bhnbijcfbhoqpojeuqw
+peyeydbwowzleyebpqs[abxvydhobwmlksefjy]hntuuskjfvsfwnmh
+gxdajcawzfzzhjbzpxm[nxdsexkhsbaviwzw]kojsiljoybqxuvi[razmescyfxecbmzc]fdayjgkrzsmzngiszt[sdqgfgolavfqmuzqag]uzbbbcwcizcmhntiom
+gssllxegqicytbgko[imezntkypaaclprdo]hojadqftyszdiohirac[wcpiroednqmsrywvxsh]gkfmxwfuaykpwmdukm
+iwdziuryoqkhqzukcbq[qdoppjrevjmjuod]jewewfyupjnuydkn[ysbuocvxflmhbdhlb]ggjdqbzqfekjbbf[ubywismzabwewsrl]fufmyromzqrxtxsijkl
+tbmlgasrsqjxwto[mvoqzbghnwpunzvxu]wxnwrrzdalxjlflva
+hlalpnzdmwlhuwewel[uqawlldafxwhejwbxj]vkktsmliwswarsq[isoseemfosjusoo]bjbjwogehxaqhasloxq[oktpqmpxmsnvbnsubz]ekgpiztxkkuvpszb
+xfxkkivnffdwrqecja[lvgeafomwyqhlfd]uyvvthewoyqjyoo[dcoayhnhnhakcuv]sfucrodbqeqcqhpmc
+iqfduwigwfxgkhbge[qojiewaocberonshm]toxtpcpkallieefn[swenxuejqehdfutw]oaiceeyuhhzpazuyaiw[gqbyuetdmvtttffowv]neqopgkvwqemnrmauc
+bbwxyipchypnmsk[lefobpxeokqvfglny]rwdgvzdupkxjhppcqp[onrpulkcgonndkfq]eegboakcdoqrmdgfta
+yxeegoeubfjhijn[pmdjdggehnbtvfqkdk]ofdoklopgeznrvssgdc[jidbyndormgpitjsl]ucucnufigpzjuuxdq[phajlefstzyysdkdrh]vziqmjzpeeqnqholz
+pnlllqydepsbgkrhm[ltoscinqrrvkdyusds]qwwtxmmexgsfqgoh[uucslmiboquvlso]xmbeigfpdmodrodwbp
+jatdtuzlcxvgwpryf[dvyuqxhxkurrpblehq]vowbsishfgkjtvicd[krvikdxyqlwdjjnd]mujppmtqzmeviflf[ihqppwgfywzrqyx]aobhudzykvgwwhirfiy
+thmdermwtxojztany[xcohmubhlagpuew]lnlsiczemaohvjhhknx[spnegzrtgilojpnoxs]spnvmefqqzpdfzset
+jccjsrpjiyokryde[gfwdanjjnbycygt]iqiuzghicmveelbxp[tzugzompmkteyydyeb]bkvntycebtvjlgour
+rzskdzdoxsdqinbmjlv[fnwbduvtemtogsfi]oayebzmwazggkoo
+hzpsgtucyxemkvmfxy[duxikzpqdgcmkbl]bluegvpkqmjiyzibglc[qruyknjgybyboyvmrsk]pqyrdevwrpeatgkyo
+uubdyuzvtcfrrdl[stntntweakppdrbqk]yoiwxzsdefzihdnilx[vvvsontntjvgcvanni]sqdbtjoziwfolwbby
+tdpetsinuufpbezbgpt[hpklzrbaryhnibm]ucetauqranqexnfdstk[sadfrrjazeweeec]jaozzdmvmylzatlon[gyrmfjwewarvlpsh]wfojorkgrvraihwpaf
+sarrhlzjldgzhyuvefm[braqtukjacxtcbrgtx]rpfporiksxcacot[zezcjaonoyzxnbgd]jmrjkrugljonkzb
+hclqtamrzmzkhhwcd[hcxqnplterhqgbude]kduskujldxotldizi[ashjjijtmbppyhgxo]ozdvjfhxmojeqagmoa[dppzupkveblwydh]qonltaesyzvczgyng
+urvfscylyvpyvpqwl[akngblyladvcuwa]pauygcletxnisgriad[ovsqsgvuccmdzqcwn]jjugrvjyydebzrjghae
+ohvihbfwdsvpzohtu[qsxghcyyscnxwgnspni]kxlgrkvsbjeomgckk
+gzywjgljugwxnrv[mssfmontfbahkya]gfmnxglcggnbrpvuxv[poejydksxougrcw]tiqmbdmjniaqnqgptk
+hillvlrgjsewmjkoha[iighatessfoqwexqdc]iqwztbnauifcazihogj[xgovsowyvdafqch]qfjgljkcgkdmrnlrrmv[hnjcrfgkftyitryole]muemrwwikauccsregut
+vmdrttktgqkyovr[myycrednrrhozjdhiog]qrrfvxcqpthdfcls[nipthbalwkyqrmqy]xaprggoudqizdkqu
+ofmohzqodnueziyemx[njkghrspckzhduwsrg]fxxnmxloclzfmlkebpl
+naurkqfrkpbbfkmbe[cpttgjergcoemawxjtl]cdkngakkemsmtgtwyzn
+xtwigprawkooqitoy[dzapkodeyqhkixy]zrtxkzjqgqeuagdie[vnieacbchbgexzaf]ezbpshpznqosvuk[mcmcfwuzlyodiqez]bojvjhtatwvmxsxhkbs
+muiyjlnqtepriyly[cnrfxiwdlkrqsarpc]hdlysxsdtpqxquhnz
+clmaeawlvsluxfrhl[rayxcpbervctzew]syqcakahftovtzcdl
+ljjlywtzejfslouih[hmsyjqsqljnppyv]bxdissuzzauueguk[xhyiqeotzpbtzsrd]wapoxmkfmxhbykdv
+duvdnbsaqzqemzc[kfefbyefuptincfaw]jhuvhgdqrnjwmlfrmr[niprevfcbwagwvewhj]hdhrwocbqysjstefldo[uelmkdqczcnlmaefjms]bwszcueianjsjhiywwh
+yrfewhgpkihnhct[pxzsdirhdakahwdxteq]ygayoyiuikakdqo
+wjrmypbsxqajzbtwl[pvltruknhkznchej]ypobvzyforzyiihvzq
+pdchmvgzmxaspkcwkpp[kekolrkqgqcekeitv]xwpjbdcxgoelowm[wxdhdpqotthaeay]ovvuawitaqelckg
+fcqvgochyglldipl[ryndsmjdhqvikwnexf]smwbuebgfzzmfftrdck[ynaegesquznhgmisvri]hwbktncquitjaqs
+hcbbiznmlcfgdfjtgc[xqnepuustubktgck]jspcsloqtblxprd[mudjqeoagjqcfato]vgguzyxablhnrlye[rvzjejrpykdzzqcpgmc]okcylioamjhremephbh
+ihlcdgalqwvznxl[afsqmxduvmdjftmrjeq]ekvaovqjvajxfdutwhv[zolonpiqednbtfpsrh]vurkbqdeglqdsml[jivoaiwnfpbgbzzc]neycassstykebswqao
+bsgrhhzfgwsgzowrbj[mvkzjwkxsuwxnioolfq]yobngzosyzkmgrphxc
+edoabezjjyzijqbgxup[lcxkqejwnnslgykokx]wihvmpynxyyhaysxvrq
+wmbgvnekkdivugwirt[yuioeaoerarbpcmbwk]bdlohxkfgdbthtxlc[zqpipkuumpyyioewz]xssqnavbegcidoenex[xvcirztjwasastitiy]mmcxttawlbzdztesk
+fmfwtjsguazrodvdy[uuzglafbhjlwujwr]rjttgtqakbrloqs
+mjtlntwhjqjoxsbhk[adswsdpwqnvqtuj]uwzfdezklxcvhvhb[rzmgufbrcamkvsl]imtazflkqvdgqvfthc[pvktfhdynocqbhqb]qjtlmgsjspdfgoazn
+hfeiexxrkdehqttaam[uinfvckvhatgmlblj]rhksgzqfcizyqqx[ofgjnqhqhveobpzva]qaxdjvvaibeenyuzpzl[ktwkynazrcnewdnb]yzmotgipaelgbsahicf
+djhinybbfbbvidnyest[zougucdzxpenqpoi]vvxbocdotanwdrjks
+poulgwkphlvqfjplgw[enhvwdoftxrnowdy]jfepitixnyjgvvl
+agbtjztsonrgwzivf[igqgvjqttujviljk]pmqphqrfzfdiinxhy[hjpgkjjwxgfsiki]fqgfwrylhecwcoowxsi[fygonoznhkmzcjcpm]nwouwxzbpqmsxnfhedh
+fnukiqycmrzcije[optroggxrsbsokabplj]vlepcfzbmvrqptyx
+pdteouejbrhsicugggj[dipcyddhrktybch]rsynpfyiklwyhvlzoxz
+yuxxurstojjfnoft[obornuhvvdtcyzj]kivbosojivpliva[twgyjecwqsxjmgi]hbphkpnfffzpbwjgf
+iuauoxmsalkxobrgb[blehxxupivauaxkahxf]torbqoddhsksgtnps
+sjgwxpuwloyujust[psqoquaifhrgmah]vpaddscloldhahh[hditsfewhihijrpf]ofjdasdbjvfrwefs
+arpvdepqyadnevyphg[kbpdnghrphvogmn]wrzcskupnydzepdmxkp[beeaeyelchimtyrq]yppeqczzpjsntfytp[aofegesxpscjbehmcr]wkhyeeykbgemqgcynxs
+ouluccjlcbcurdpkzg[flulmqooipvjzhip]qkxrrgvodksuivbspr
+zfmcvmwchidwtgjmpoh[ecthaqwuytzvxcfk]pwvwrbzdjqdtxlq[fwbcqsvdosnolronvef]sbroultaoabvbtvh[ziihpfydzrkdqsz]uydoxylhbdlicydahf
+wyvxswplnabvdoeshds[zhrpmmoiilsleemryd]pgkwuzialwbqkiw
+ehkebgpllhheumhf[pfovxzqmiqoxdmywhc]qpzsvhisrjgjfqnliw
+bzizropqhokoukoxz[ahvweuhqlrysrwu]sdmyzgqcevcixtomzch
+kfyocamgrbgzslp[bclztdzvmbyetlgjk]llzxtjeauatwnnpkrvp[pxshjlevsleipkfkmf]xblovddfkfhviqulap[zhqfznscbngsaej]rjfncwzuuqwowdhfk
+biaunelzsqaxohte[zyqygmhjmwigxsfi]lmdfmblocglcxaszya
+ngxgqwjnobiygnm[jnhtcpyfpwpwkxapib]lyhgjgvcuwgbxgxwn[rovvgibkfcahiyn]dyojmojklujquiqfsj
+tqdbdrqgfyumjwktbg[weesraucasfagyailb]ilhskphxtzaqesynmi[stfgxrouxicascniwpo]yfkxnhvrwkielncq
+twgbfgwbpygvbfnyy[xhwmhyacxxleyadli]wffogpkjkmysxzlmpuv[qnjizoqydldcwubtux]askyjzovxsalrrgo
+yunqqhjmfpqqycv[vamwyuzotttqgdzgj]lmuivwjmlbeqkay
+qhquozlhiohsyzwv[utxfaionxyjgcnpulf]nkmfgjxfobxmrydyic
+wehhwiznslzkyncnkc[dzxeftrnxfhrwprllke]imknddjnfrzanslzdz[dfqldjhkxhowubxs]ojzmgmludytadwespep
+rbkqkcqoxrfczfwte[poemreldxewfaif]vehqkzgxcwmvocban[ffpechryektpzbdaivy]emfkcgsqpqkqxiitol
+eidbkaxexnexudiembn[xyiztwlbqvoavomnlwv]rrfwfdixzpzvwkhwlw[kjinrqheqjsynha]pilasnmhghvvgaxor[nrgzhlsetahyskduscq]uazoholzvqjdaovgjr
+ynlcechniybypvzubo[fupezmnrswguyjysfj]ckmilshpttvobgoux[hybhkdzvvhelhyvoynm]amrybybroexntrlcmvy
+qpmlcmgstzjfincjh[axvarrnhwnkyucrz]wbbpucxtqbdjxsug[tutypessbhpshlyt]wwlkakvsggtbzcz[rypxpzrrmmohyowkja]aeuhylvosccpatslhp
+hrdlnpgexbirsepd[waphktwkfccnylxg]hgukjgxutuzfovpazhx[jzgspycuftkivlpx]bhfazqqagtfpljr
+ciyqjrkwqlwtuhh[lknvhwchhuntllyvjb]ontiepkrlphiydhyir[pdcojzrccoatarrqj]rwmyqonvfiexmbnjy[nhknsnxkwatatfhwa]qzlqiiovmuukmwypy
+tjxbenxjlgozxrtqdp[fqimqatlktqjwjdzuoc]fedjvxnqivqaxkvcw[lskccrwcsxulkabzp]orszzlxhimwlzfawjw
+yufbensvlqaxthui[vplidvdhajkxfkledbz]uposqezqxglywtlxgg
+wacgjknueqomqccqnkf[erdhexyxtcmmvhums]bnywbavxkfzbqwlppv[bwdbqoqfxejqnsgjd]eafoepuyabzlznxw[etyfwvldfchsrdsjyec]apzomripffavakswd
+conwdmtawpjnzrjlkrs[lfssaruafijkmgdp]izwehdqwarvfgxi[stkwrpsrwwucxlrpvd]sucqudlqvvklrfdgac[gelbgtycawlilemxamk]zmdjppqtsdlqfbhmm
+ufwwjiajxhcorfa[hrdobejvqrdojftlnj]vamxyyehcgnupky
+eonddfixsvjssautqun[kktlnrsxhmhwisd]drpflrvwelqqmdrcleu[vefzppqxcrtevyv]yeayirahatkufcjvax
+gipuuaoxlxfkqld[kytubcrnjxvhdxjto]kwpqrvvtjopyigmq[urijeznvkopxtgkd]infdbnklnolvaqwwvo
+bdqprkxthvsgqlp[qtcbdifrlnjdpxrb]xqmtwugptmssrivqb[zlkwptpsqnljxxod]esxomobcnfjuxxdmsmc[tifraqareavetzrpw]dlpsxjssqzyqwhd
+ylwhvgowletbcqjgr[tnhoxqhrnytlbnwifx]pyzwjmotosezztkqd[ejfcslurfhiompqindp]kvbfdwfmwkiswfm
+bqlhxpzchtvwcqc[jhpqckkyntskugvua]ylakfwmlerklrxq[wjrmeexzlljednrxho]rdobmdgxkucmdrk
+ehtqwbiyigxjvkp[qujbspkhxogjrzskfm]qebesubhovwonqudy
+sjqrkysnnbgtkhwe[ibgrjvqztrkknsr]mnbkbbxvfhsihzkbsqz[hxxhvxonqzrgcant]kbkvnbphoymseakbxjf[yjkdvhsscxggtyyk]tofzfukarcsahrmvs
+ndepmgjnsgfsttp[rgrcqahcpnsyknjkd]uablhivltavxssnx[uwjmrokgisrjukeoh]wollclyotaektyjg[tzbziofnztlojbros]qvbgoapfzbecqwjsq
+lspiukvizecamzh[vgaxbxgipyodtbxb]qpnkwuqxsgnihgd
+khdzfhioeykvnvxuhic[lhfxiidbrwldhvfav]rwxsfwhshazzaxvk
+coaljuoxfhvirzhedxp[femqrflktuakhveiiye]iabhkrebiawlktxmbr[pzvgzzcfzhswxitunrj]kqpbmoluwjetvhdcr[tyqdtrnkdmvdpuf]skrdeadiylehnbiyvws
+qimxmesehwdrqskwitd[nvgxgwksihjcplpl]bxnyyafyzxludvyehd[hswtrhxmggpcpcvew]cucgudrfxfbietibgv
+moiyvifvvucewfqu[wuzvazqcictmsbtq]nktfnkfjbsejorafo[vfreizeqljwshfafwdx]xrtbsdzcfkdmskiiuwj
+kchuwlbokzivzlzvib[izbibinxysyjrvtapis]vugjoxtigdmbdqjn
+xbclcahcqnbzwpvshao[qkamrpzzmssylpxb]tjsufvzaorutvdu
+hraytavipeznkuoi[jmllyjddfakuxwfsx]ofoxhbhnucmiztrtcji[vebzprplbxwqnzllu]peaegqqeqbjikxff[jxzebruqgpoqmklz]liakpsmvutnpufovqlq
+omtbdjlfagkxdlntz[mhwuaqvyldixapgoaec]aghmtjapinrxlvem
+kbvvqlrdswbturvx[qpkrbbaxhpljnhlytou]xsogoxibyznqcpqgygn
+orqcxbycauryvjxq[ijorpddboqkyznnnm]rvildjpthqvtdrzcq
+hvttzyckbqjbyfdn[lzeulxlidymszjl]wbbmixifmqzkvypqola
+eizqnqqixewedcvcit[ohtuntptfbovbsnl]uuswevyvyulevsfnw[etmfugdbznyzikdtx]euprxmmhcrdoefvfjg
+pvxjhbwdlshqkth[gwmtamzhtucvbkmwacs]uyephbahzeptqmif
+zitdlkpouvntzndz[iluwraejfdnwafe]fuevzmqlsflfcht[suumoqktussjsze]dawzltubgawnahpd
+krskxctpuowviqiqxu[xunkhvqyyqiqhyx]rcdhdjoqrutobnjpimv
+frsjlbcvuwydaobhii[bdatbysbolkcpzcxoyf]lwsfakbmjilithjrls[fhozecjhruquesmkca]oorqtbaamburjorhy[occzlzfhekgspeep]lilnnsqheytwakzah
+ragajrztetigfkm[egetcjedsnrseahrxr]cblhtdmtcnoaank[fzhqephlcyygbwt]uyqlhhlhmnfyfcts
+nklzxesmrrdlzyakdk[pfexuhulnvbmndvyat]xjvspjnesqugmkngn[vmzvdrheaknqmzyrc]xfncycggjiaqvirfvnn[aqeinzmbaijlafd]pjojbnvismokshrs
+urteecaminrqiohs[rskgnsdfpksfznqpphc]yaxixbacbtysdrnwixf
+ibvmhqpmnpzmghdtdpo[djdzntakacvezlr]jtdoweayvyiaskblc[qhwimwixemjmqsu]rzekezftftlqqovnq[hzeyrnhbrrducxz]ceiqewhcqqmqluro
+joqwthpcrccoovxrvq[qjlcrltwaxkjenbbql]ovebjdqfnfkomjpswn[qhwrxhvbaattcrkvff]nmytfcchpqktagojhtf
+jeeuutsrxjlqegcdlrm[chrtabpzdcoetzoopc]axdhgbwmwhhlrvc
+djcujdyidkcgwygy[zfpuoobkfdetgiifrpf]uxzlkhxzqgiuyvuc[gboovijloiwizfuuye]wimticbreszjcpsls
+ylpbdnvjaavulnhg[novahskycjcruokxbrc]gzsmxnvpupgxwhx
+qdarjsoimlwxduyp[nghlzeghibocgcbhqb]vuoixghxxsxftuztlxs
+ikdnbajyzpzbtzjdey[fiygpvlyluerdjvcdc]hheswtvpmtvjochdsih[kmjnhhmbpokaxsrf]byzdcdlvgyorjvkujyl[ttxlhbnifbfgmvs]onytmkodkklacgel
+rcpgwlbaskiorvxhgsb[xikxwyiageqvilea]rhkkzuqtuxbhuygcxya[prteqotsqfyypus]mpdedamsijgmdktn[ptlcxgtlxfnvychnwe]mdjujbmrytfbzpslad
+edjzqlaktolcrbwboup[bvmtkmfmidimoohq]kpsgyntrgidclnq[ohqjnvirkjlmztem]smtywugfaobbpvmzj[aksdrqczxftjrzuylmm]ffyrsvfwtqlmwbw
+rkgutyhaonmyick[udryocpupaohqhrmmsk]lmusznhxbkbagotha
+ebtiyamyxtfcakoku[tfggedpatfzjvirou]iwbguywvekoline
+vjyzycrsfycfrookru[iszkkyvwngsskic]bnnqauaqcfxctnyofoi[tlegfofrqiuqlgkld]biryppugzufezftpjra
+neipbfcjvrnrmpijwhq[eppjsmrnolpscnfowe]crsmezklwmkbysajb
+quwdpyfsllgkwtj[ercxwsjcfkbpohokuc]isdjfklflnudrjetf[fuxsclqmfyplxxvao]xflfujjqnglxzxlxz
+vfxrgmnvontljaodk[pwtwiqibbceehlnhf]lwzkbshrmagzhwqyq
+ecfthornfevsngitzhb[pblbvztbbsbsxxuwec]jtjnnhwkekrgjanoxbe[osbstvuwyjietzx]xiordmxphcsjnzfnrwe
+tcnlllsrvzoxupp[ficwiahpzqtauuk]whxfguillhkpxitoqq[ovsdwbddmfojvkqrxb]bfagfcimddodrtb[lghczsmdqufswoayezk]ctkmauzrnhgotbibbb
+qahnaxgypnpjftgu[bghbgwqxwfnfrcybzd]qinmtddfxbpkhqnna[rheeshzhyxfbcfxkd]awwsrosrkyfqcvtx
+siffwvlfljwbcndns[cawuqwatfhgwsphjn]twfwwneebgzxmqyrhbr[awxuvozbhlohuaxim]dykizkumcmmnwiwdx[dikxuxtmacvaxiwih]mscklmepmcgjemwtvv
+nwnwxbeggraucwj[ygdjhwgskclfginltdy]ngfxeqsonadvobrnwne
+ceulusceecbvzesfpia[etyucdrmmbsstudbfo]jjzwvaqsiovrgro[msadpldzcxurzije]mjrrrqwmyqxpdgmp
+aiwctbwfathsnst[ymcmlyeojcaokgf]hchdxsyquapjjgncfq[adzpesdwzpvcksioys]rbfqvkxsicnkphd
+hnbounecoxhinavuro[tdytxmzudgjmyxmm]fovpxazijvtvirqfrup[qbfsslqkpyioabrzhlz]htlcbtysbfxurnuqgs[nybjnpqgugmtfculk]zxdfwtbtbvhxyrtcodd
+ecszlqenzswzeujn[aymhmhqkvzbuabtr]qasueshfbfducoit
+bmvypnceplfbhhsko[eypvaebyvggpcmzum]ycwgnjvrjmdrkiao[hdkledypozrgbkexls]isuydppzigzqtfo[onvsgjzwozxcvgkukez]uhjisxtizfjiaebue
+ljvtminczzipicxg[eqfvilzenlbztef]hpdptelqvvscyfqjbk
+kofmsmvngqzdobeg[atcxvdptaufgfpec]rbyvvgagylqgryjmdz
+qrqirixxxpivzyxidp[vanhxwefpeffrphvwm]awiajngjmxhscxctxt[hnmowanymdizdow]lqjbxcvbswqatxyp
+baeknzdxlkxorrfi[tiqhvwvqoyavllfk]uqqdkslrjsueklu
+usgfgiqvoudfsdyov[unqciexsmnreobavmoq]kcboezrfdmoqrgg
+xrqjdugnwddstnr[gbnpzkldpjyfady]edvtrvipwheribydmaq[mwzdiuqdstogfjy]owanzbjqvaqgsgf
+oumjseobbaxvipit[ukwqpfaqohsabpd]twomizennyccksgi[hszmrfksmdcycyda]connwmiollbtvgh
+skyizttcnisqncq[lcxdhawnbdbcptj]ocvhdptvtfnwqcdmjff[sqbbfcaufseolqwcjt]xlnlzmuciirvedlni
+nwlhzupppktailtktkb[bzdpulmwswdaqrv]kncfgfqmxoohevsxfp[vgabgahytpqzalhap]bbubtzxxzeysqyqp[nhpmkotpzfifrfpmk]fruxnzwuvonfoxc
+yedymyfylbzvjfwst[woezxcgsurflqnrmvt]qsiblcwatgywwbktdmh
+gnbeeaxxlvupyacdpl[dhgikxwvtnhllqs]dzsbgvmgvhcbygjkxz[qmayyikkpsqdoukt]kdfbifunpwlbhsh[qrqskqnysxtloxs]zudxossasajrdeanct
+rhftgsygepdspzqbewd[lcmdbukbzwdesfroixj]oblwwxyfconxmhefjow[fvutwgcvuaemgzqanrz]xtiuegikggcimaobg[uhqwmtpowirexexim]txoyjvcawbfxprxf
+viebpcquqeagmuavf[kxfkxsoijrjklkgtahh]gdxrwirjrvzjcykax
+uptdisvspkluwgzkti[omvlmaxnyxyzwuian]pmieocovsvpfcveurx
+ejmnzzuuduhzoze[xrdlxozvhgiofrc]sxtycslunhjmvejtkd[pakbfwkagujukiybe]adudpcxmlamtkwak
+lqyqdhuldmtwbvydji[okhzffzbmlvqiko]wdcicvzpzkaowwqnztt
+imnhospjiqsxihx[utoykmsvdetrkdxvzti]zgdfvtmfjggwyjef
+lwsirsmcseswkfxh[izotdhmoodsvpsp]jivuksxahorpwcgxnn[plncjtzvyamfyxzst]nnpdtmoozfzuemdcenb
+puavooykfwvhwzmkglt[xutftanpuhgsdznc]rvzdveoxydbctczqu[hetpqpdgohitmgtgyp]koiwybsyijhmmqxesqk
+puivygxavmlrxwkst[qvtxsgezqcquyae]brdptsxbxnobkvcqclm[ibxfeuecufosgtzhxg]vziaqziqriftdfrpnll[bjfubyvxxrbsjbqvi]nnlbiuncvdtnnarm
+tlzooyjugzfsomi[robsmcwkpeprtatddr]taktjvhztdlygkj[vbjvzeeznvmamus]sformulcgeirdihntt
+zbcyicsjcmpicotmt[tbrfctpfnqspmvnv]edzcoymhzfqwbuyuyu[jhauxxgwnguurrviws]rfkagjqfdvhjiavoxtf[zdejarfvfodyslh]pzjedvtgzwflpduq
+dhbhmlhsizoeldofqs[qcypvphfozxibpjdo]idntecorhucvlufrwu[naoixcxuqlgsytnt]ehsyusyugbmahyrn[djtckrolqitsztwtuq]urantneyeodhvorgsx
+cnsrdanbfjubsdd[nwynwjxiyygvgdlx]gyyuqjjvumvquvzib
+otivcdfzmsjivefwujc[yiveblxrayrkmfjwd]mbwaroznwihbnbmjp
+fwanqgdmtlsezhtvat[bhxmmztvspchqvhovae]cnjyjntrcijkmnjwnlp[rziosbsufkiamqmqnmt]mvxhzoxxibbkezhzlks[hfessxjoefqfbgxhc]kdgmlomxtdfgdgku
+ygxiiehdqiqtqjzj[cwbddmmlczrgdgpibge]tartaeajmndarksakye[qnurjchyeijxcsdpc]uguxoncwdrojsyszsib[mlwwasmjacumzfqr]sguglzsozcdjzlooexl
+ytyzugjtaxtnwxkns[aclewmcdbbbwyyu]hlfhrgrigvwsdmdethb[osohbeuazmmffxyeq]ygmbsfwcmyqowdvh[pqpwyutdqwwunfqt]ppkundibovmqwjwyll
+vcrftmfliijtpaqsoy[zcpypxlyshsruwbclj]mnwgypyvzdxnnie
+fmfdmvxkdupjadbxh[tauggdjujfbeogtsgzs]pygzoyudakrlrlba
+ysxiybmwpoygkyle[xaaughrlqulsertp]iukezabalczvwieegzj[wlycqpkbqptraajl]mjevizxosnolkxnfwxc[veialybabbpytrf]tpgpqighdqgphcwoysw
+cnxnptbcjhgrxrtremt[tjguyerqizvuobq]honeukqpcsoiapswdgs[hcroutdslvvzypfklj]owxcxqehkqqyeflgi
+ypgeqbggpntconrgr[fmsyjvaninmkfqekne]ykrmyjpfwlhnsvgehop[gvltviftpcixosamy]xlsyzevtwaokuvneo[nbfcynlfsbmmweiml]nxuzmhrwlucgvfy
+zagsvkbkhcrkvnukl[pyfiiavqjgonrarga]antgzbmtohtndzgf[gkvovvdgppcnyjifrc]lxdhpometcwlkofze[fpxwacqdussynpwd]mymrmftjovoqtkuae
+xrtjipuirgczdlrrlnu[xdczaqvzsfgavmzq]luocuzuztdgsyxbcy[agpcmbiyqxfntvnmzn]atjschwzmauidumzxru[gvmmftvwtfsvudtd]vhmononuocptbuvorau
+fzozmcmcymohndlq[rnrgxsywctnmxxd]unfjafhfgeexfykym[xnldroqvnecyhhcwel]wagagwcqljxduzebjeb
+efvejswssxdrqggx[iqwwyhgngmwzwsw]dlkdcjxurmpsoceomp[scbledaqpgsgynjo]rsdxazcyjgcubfxlbb
+rlkrgjrxefztgtho[tphpsircgzsauqfew]ridnbmerksozxzwx[lcqwhfgiihdzgtgudp]whskzgdpjubkztb
+qbtcopfgkbhzhhglhh[ostebaqylyggiyfptkw]bbuaatfqlpxstpgwg[nydgrdgyazzfwlagrz]fiiddplgxeyyntyeb
+bogowskdtwkyhtdpzw[uxvrferconwfnnj]eukencoekwwahhefvs[xtrpjeahwpxbwgogfmh]axqvtgibzojnfcku[zhkpmdtwlogmypeqc]jzqywlhocshrdrlgd
+rdmpdlidbkplejoikjc[iqzadghltpndooanzp]ltizdvolnhagtlvr[rqcrkoaqwfwjpsrj]rtlcwqisvkznpvrjrbi
+ndbtkvzkgjsuyfibsn[gbfhvruiotbnbtvuxaa]xihrrhcnbnowthpdge
+vxtgjsiuodbsuhg[updgogkqrntiedefvh]xwgrhmgmpzsxyen[tbhogopfepprmtewkm]fmrtnudhysikudz[rrdmqrctpwlcykzr]lpbvstnhcmvnfcpngja
+eoaqeiqpsqdqkdvia[pdyuqgwuhxfiukmpvw]wsjyvdabhrdsxij[puikfklqhrmvfrwomu]zvbbuuromxgpnmpviw[fvfilnspmeoxozaba]yaouxfprxpkvkit
+qpaksrcracxnyuozqc[evqvzzqomyzwufkvxx]vmbkqqkzjskcxbmbbp[alqaapbcvzuxchmaa]pzxrooiyfqprfaucxue
+jmjvvyxljzznmaarmau[piytxuyakxaropkfnfb]txaaoeuvlqiwynhqlt
+yrgxyekmldicpvo[wqcvsbptigcqvzoet]jjwvbjbshgmwttac[ymvjkuxxoojchqomnj]tsapoddljyrehrxrke[ajspkmvbrzxrxlpzw]hwymrguaqnefpsza
+dmlshfvkrzncuuoo[fddyurlzqbpqdidtkrs]kcewmacglikdszapy[fltgxlltlvysvylrl]rgovwrvccixdullrof[bqkrpxjupbbrdnahf]ebmiiwmxkutltuxwrds
+lzklscqfbovjmjbo[rhwheqhkaseohohelh]msyobgeiybsbyucus
+olbjozztfeowxftbsx[oefyqpxsebyfawerwwb]uyfpnsvujqenwouagc
+hwhbihujnzgayah[euifzicfxexpxir]lpgjmexgfyseevwjpqo[nniwslmnmrgybuelwb]khkudtujoigkyyjipu
+okiwsdqqwbijptpjzl[ktibxjcdrjvsgxzlgg]cimquzswgbhabcf[gictypilnrboctfwls]oiofteanmgnauid
+hdwokqbmfofrujxvf[gcrxxfsxmycedcfr]xwcmtasmlcvfmezvtk
+gcxgyjgbqhtcqznfuoh[yitqnwqdcpkgwzayq]oqbiabducwietmxira[kuxdaeohprtnmpfniab]wddlljbeofkomijydzt
+gnxobceomvkecom[oedsyavphnrvulwlqfk]klkcrpigniietqecrc
+bgzhntrrxvjvhyqhf[tnyvbggtjvjfgratfo]hltqszvzgcutrdcvddq
+sgzcemtrlzdjijht[wtvzogdoomtmhxcwckm]nmvftmtbucjnczm[hkqmnugntbrrsphbmn]yfvwwzebdqjkryhm[ydcjwepsqqrwnhkpup]tyssdovqgkhvvstvd
+buhlborygnuuklh[haftitnpydnilqbqabe]gemzbfstwlhejmjoox[awjrajspxybgdkbl]nrkncxgvjhuwukw
+suckcafpmeixlavp[ehmqotytcsxzagjq]vfwmytywcapfwlljl
+vblctxriewmbbpxo[xsgdnvmcmfnuejlrtz]iltofzajbcezlpy[wnfixwfqqgseisa]buystfqzokvletbzv[woumxjkmiqqstnt]ciarbpnsahayntnv
+cjsgiueunqlisps[zurvijydsqsdtktm]xhlpspwgqlwqfvx
+bobcmszgphpejiwlwdm[wwjrxebfctqobojw]hyrcpguihwihhpmr
+jlyvxnexbisiiwyjjf[pxpqjtfgwysrewmrv]xcfaninzgmdidqswt[spnysxcfdiwijvfqitl]wigmjtxvsmwlquxew
+qqtluuthgrubwpqzr[kgebpbdpqekehnnuyuh]onnyuyxeqstunzueapk
+sizavpqzmcfexfocoxn[dwcfbufvxxousaeah]hymczucocssffcj
+ldupymvmttlywlxbbs[vsttjksdhwfdxclitx]hfvkvgmtmaxtifvo
+tbgqiatbujypfbjha[catabtthtrydcjbt]aujolgbocqymyeqfr[apsuwlktuaukokmldw]qllsjhthoqdlpykgwz
+zqtpkzchpnnmyzygsaf[zuokmkcncefsioenp]ynympbineurlgzkdys[nhrjzpmbwhwcsuowx]hzawgwukxrerbljm
+navcmnriavzmexm[xdvtpfcjdxlbsyenvtx]byqzubujbhvpwfcme
+kookhqsmbrpgpsbctfp[wlbmttbadvipoyrojd]cqmhhdfaunlqkre[gqmltgpxfyljdyo]zvzerdpqmktqmezf[npidrfvvtdeqgzhojn]hzehtqonmwoahdakvve
+tanngpmswmpddgfpph[egmymqydmigpnpr]bymycsueiolsfyfey
+uddmrzbeefaxbulsm[ieevtshivgygbvsiwpd]lbxhzadyduakugey[sqywcrjzoxbbgadoqne]xngapfdfzbwcrkd[gurtymibbzvsbxtpypw]elpexxrljomuxnybuxk
+diqvdzizaoprrpzrovy[cbayiwiifklhjkw]somecbyhptpmhjvkrba[gczcezgzlsyowteraem]xkjkakyvwxbgmybzj[htxdiogfsahudae]hhbdrescqujtyeyo
+kzrqpxxtetqkqqfxild[tenlubsvlvxwjgokm]zxfixurqybohvhfa
+pjhbxnktknirbwjp[arlmosnekoqwtpysn]hexsbuespjgsrzbvpf[vaacxsepjnqxegwqq]owuxuohhzxqnoqepvha
+pumaevegtbjlzsijtf[cjpsnszjnvoexufcgxy]dxngvevsnjzsbuask
+azhhrcrptkuqsvxa[hwxldisbvxutspea]tiqwqugkmslokmixx[wzqlcgyfzacbyoguk]klpprvhtplelelsmx
+dumehssexnwcppac[gucpccbmtrdgoee]zpcpjjuztjtgxxhzroz[iizviarbucshvccj]xlypepsxxhxphttgc
+deujoayipwnugheu[nnyjneomcvpfrvfu]sfspbwylbnzbyqh[innsmlncnbxrbfuhu]tldwbficslnxpkzlrtw[kyfmnucfyrwlvbb]wedvxsifdxaysaw
+lcvkjzckpkeyzyjgtwy[osncmhyofupofwscd]rysnhkmiqoqulyu[lqwjsxrgpkpkgxnvhf]ftmywmwfpckoadd
+pixbxvhtlxjxzpm[nvmqocftgaxxgejke]npibmenishbqrxtavc[jzceumsoxcyqbfv]qcdqqbwcueyyqptc[egixgueerjonkmigr]teecwbxvwhgavdfjxi
+vhtgslxovrpmlojcyiu[pngyxboltgfaskge]eawigmpxrezdxtau[osjcsdhppmqtqxixkg]gkxhhsphrnkjyxgmp[khnpkxghpkaxnvgxqe]zpedrsevlishcdbd
+ixnbejxsfmcjmqh[pagzggnbjxxwktstf]hcjdsogfetpzoucuxg[gsnpjjdmrqzojcozi]csxsgebagjjgxqjx
+mekdjtrwhgafduvnmwn[aaphpbnxrwwkhzxn]jqzcqvefysuegreqcw
+wbpogjbyzelmxqeaazu[djdqdlmpfmezzehvjl]qdquppvgjweftqvph[equcifktaceuqwoakk]uxemheczqpboerwq
+objhlxsujoqunmhip[bxpjvcdqedgvqrv]rvycwulyrrllbrxlbty
+ckxcgnosnlskecyq[lcbisjdelotgldlea]edcebpmpxvvgktuxq[pewmfvnkiiulfehy]electgrfvkbxiic[emqhtmrsqfbebmykzv]jfdpefifxcptpfzvovc
+leyueicungygchlce[fbclcyopnajqvxey]jcwvhehawbpflgddtn[xlozeiujqbiinjlvrt]ljmnnzlebbjbccao
+mblrhofhihdiotvy[nfatavuoewnlsvc]gtuqdhyxielngaci
+eyzlvgyolwwobcg[vaeslqvdrjthzho]zdakaychskakuufan
+ukqgdhxdohzgrdfc[vfxeqopkydlzdehao]cormknsmtbidhgml[ceialgwruscjsapfc]erjsjeuxzxjokxct
+szronkojjdgnfzkpqzq[xpzmblnarrtycgglkw]cixtddybdschdshenjl[gflkqtgzlxeesrfvx]erpfhhlwbsdasjljnqh
+crndgetyvbvxhujqtu[svhcpjoxbaacvpqf]ohhkqbbwhtbcatwopz[nzfqzdbjhixrtpw]dpyfzrpxayfoglzji[aynmktzgxtegbucrw]igvfejgptghxddj
+efswwtohurobgbpvlhr[sbgfgmsrjsrjblwr]xkswzbsgmboecxc[odmohossczkqjwtrdi]gvdjrovgilpgrdgt
+qihgnzozzcedhgivz[wfzerbwlgrjbwolsz]ehnxlqolcgghtdfkeus[isyrflbjdelvbgz]eblyrmmkbobefzo[baowrnzmyctfmoylu]bzhtmcwxpcqhubyws
+tjgkgtykbfdogfa[tixjoqenpxjbetz]oybvzsgugsucpvid[qukesagikwrrpuesq]xodwkyngdrxadgqz[sigwgfluzksbqqpvueq]rlgcptipyfrgihzn
+tbilszajwwosrhs[rewcahkzssatddmv]wtusvesduewjvissr[efusbpnhwnrdjwgjthd]dunuqtpzocqwyqbysak
+spvqcisucqxihmincf[csjfurernawvtia]vzarehconlkvnhbpsaa[mttsrsqoluowbizxrbk]pewqfgipuxqzsfj[qznswrhnuvmmqtbq]mbjqscwfpmkejjowy
+eqeycwhpzzryclb[mvthqzizihyfvtdgon]maeannxtfakrfmg[xlxbqdqlglfspvyqrx]chjokbtqngjjsidqdyf[nnmqygvepumttyp]zipyquwulqtblevg
+etutgnamoiukjadrf[phwftwicxcpgdegzkr]lafqcmydwbvsxlegc
+kbwfmffiylhmwisrb[wvoulhoyvagzmgxmp]heupruovkypjtzkilqm
+hjgmjhzizaeqewp[fepsjuqdjujbjpnooe]rnovsbmzwqtukgy
+rlxvqkugtcovejm[vqlkivalxqfohnwz]afmwxjnymstqmem[ynyidmrgyujdkmjq]cliodisdvotckoatva[ysfxjtwokboitvhi]xfxomfghbnfnkobval
+oxsmqxhljzdjqtx[eavkvuusdpcbrlwmr]kkpbxnnmuqigfvbrf[qrfzadqfcladouu]irmuceccvwsazcydh[kvkeafmibmbgpjoc]kgmkohjtzjqnfwxkv
+hvvzujphepxjyypzp[isabpxdneywzpzr]rjbcrfhnidqlywbgvxf
+ezfeilvlhanyhfvd[wgbqirhrycdzzbu]wpwvyghpwpfykgdt[drvcvbpndcvrcirig]qzcdvhfcxqdxubat
+hjkktoruvvqmuauitf[dmygsosigufbzkm]rjbwsccifhzyhqk
+zazrvwupbrzlepfcc[nzlsrlgeovdbndxwqv]yhjwjlnravqgraen
+fqjubgphparanlll[avwevtaigfdxgjet]mgftlttzuhaqlvwqn[cnxupkaxahrlnjelty]yqgaieunjkxlhrha[xexqcuvkacjayozydc]blhjzcfcoyiozuajqxw
+nacvyqozsyqgnvkvw[urqhhtybjqfpqqcrex]pxfufqzfghzxinnnlq[vbxhmpntjgivfgzgmq]vgsmxbkpphhjvzqdirx[mrnmmtbamdhoved]zziaxsjdqjfvqzq
+hdrdsknkwrtejdgeqg[wbvycsdyecvuclhi]owhsjsujsqjachyh
+jwfxtraepnpxwmziud[qhwoewcswwusdqcvfh]czaiemhwpbkflzqi[yntelahhkwcytedvpe]kpkuxgqygwicxoh[vuifmbkhbycxqiv]cfyzggvhpveafhduk
+ngiytctkauehibctccr[coszigxgcttxzoqrhvn]hfrpsylypetiwrggzg[xwnfgwaxrjabzmsqquj]gxdqtprloqdojdthh
+rhhicddiuxdobco[ihkmummwydkeoqp]seubufqphohblrkn
+sgslfpeleveakroo[kgpoljsrrcfwlwyzb]zeacrfqqaortgdv[yoipuknesgpwoscvguw]ubrzxeqpijxuflgsgpt[allsdtgmdlnupofjb]brnjhlzxmijpicty
+vbcaptabloujxkqwnsc[iujlwsczjefkoewao]yqwmtuetinhedenovhm
+fcswktnxobrvovrjg[qsaxxwxgrenkdcpfvx]bmivhngglvcwxwgjz
+nhmxhadaretplflb[eaaitxsycuqarue]zzdsqhjjnebzptm[znupjbepvjzujwj]djueiauiobywmclemio
+lzgmurmbxidxqofgvy[nhpkiprmeusixtqhfid]zlpmcgmvjfsqhddfzu
+aziympesgvakqhltci[qdofqedxvlvpyqat]txvwrspujxyuqsn
+ezewtaywtinlcbrn[idtmhvforhdxgcdy]ohpcvnchsamehoewc
+ayzzozmdklbhitpd[xwlznwdbvtciozoykoy]ainwvvxkreuvsgdatbm
+kvacickhqbjjwkk[fryxetyntagtppzorb]gkqgbqhjykyewipbcj[zdaanxpihogooeeqby]lxdkkpostipynvh
+nzngguddxyeihkkyt[wamdyvzgrnofprps]znzgitnmvvvrrzsb
+vnbogcvphumewlx[cboxtlpwdmfbtfegkai]zlxznqxwahbghxz
+stwxjgiqglghaaot[gdxpnepcgstafgt]psljddrwgewawdc[snbjvfbagexsbpyh]wqqhsxerdjilgln[jyqcqbxxikzmrguo]sophymnkilydvivcdk
+kihnifnjfzhvlinqrqi[bcgxtjpdyxtgejzrdi]avzbrcqlbmaadrrvazb[ntmnrjhiklfwujlg]pifpvzbirqokamrmd[rbanfbdlrtmtkxca]udilckezqvrehkz
+liradbqjmqeaifibll[yrfnryjrscfrxgazpzc]vxmlibidbmcwgoygn[ojkunzztsdudqhma]dvmtamzfaanvyivxqrq[yqypfcmwnezorcnbzy]wytsaklpzfftqat
+fhaxbfjherqxbzbrtg[nabthakgwjarjsfhj]iokwyfrrjtwulhwi
+asundudwctdvninxpag[opdvadcnjnbxptahj]scynlgwnmzdtmudu[bupcfcyqmmcwsqfffb]rjargbcgxvonfgjco
+zwzcwjnudozdektxh[wesqhjkthgohlufhrf]mwqrvudkqiysxokugz[lcjiemidwqbdnohpd]psvhnbkuptpjicdmb[vfoerfpkymcjmhzicwm]pwykcpzewskfmho
+zbhxhhqfeurqurm[buuctguwokorlkfq]extdceaqdkokhdaxzqj
+qcrnmtdrftlnyciul[qvtjesglscjradq]tcoobnfosubnnrps[qafsnrpijrnjkemz]urgzkcxptagwndzug[olhgasghsicjvswx]higdtidzwjfzlfkmxbf
+ymvlttwormrtliwoy[wrcafamahrcipugxxgy]mjzzpdkuowbrbqtmr
+swwktdvpgkbbntq[jujwbyzbmzktmpag]uinhisqwpyszittfqe
+qrlfgtcrpyanzwfeuhl[sstllbrafqeobsocmsc]gmfmnisxdoqqctof
+znfoqfwiwmxdiixycul[tsxegdjmxscgpfllqvi]fhwwrpconfwceqv[gqpboszvyuduzehsun]hmydskzdmmifotkn[jurqmnkixknhmwj]vcjomeocgzfhftqq
+wukfxspnkhedqdbtfti[cjcrwokxqxfqbvfatie]eaohmttcidinhxqtcu
+usgxfhglhuknqauzic[jlhntqhcyjuoywthv]hbskrwccmtzgyby[pijipgraqquvxhso]hehkqohxirecivlxnvo[lawgvpbmozisammvpcx]vuchsyinsehynzm
+dgnciyptfimtrbmfbcd[tedeoxadobgoobffh]iucidwknmfofwia[bbtbzcwjwiphlcruw]ukwczycabezutqdcc
+huxitbsdoqaffnlyxyn[vzcnvdddtezaeymzrr]bmovgbcqswsdmjacezx[jjdtfpukrwhiafcy]fwlhrymiaolokojdkx[ftqdrarkfhfbelc]yfonqpoegjmmxkwhz
+ldedcblvfbdacsy[rksxibwzdatluua]agxedenvctglzyvpu[qkwulxegyokwljso]akjfktolnkzwsnn[lfhdwjomyhroqkkzk]mtkhpnffxrrwipsrqet
+ajwscynjeiagnubeew[ftyzkgsmsevmdkpyv]ufeszcwnhqpwsep[rinrtwoninoxbqvlgy]mzacylokxrhxtbyut
+rdlragvdebqlteu[kitphkhhnrssleu]chisqrsnofxmmbegi
+sjzglwvefnntfgofuax[htbkuezcjsfgohzynlp]wquzxtqerwxlperau[kqnbhymijqtvtzxbra]tcwbvbockcilgvn
+bdqyqodloytjtcylu[xgwgnadrhxshcyhd]qshqmfdqpzbruygmmzc
+pnwkymgknqqdwzmymmh[vcnetknxxjvihfrlvq]cujdvtwltkpkzwkc[owjyboqcsymigajgish]bdklpwzslsjvadacm[mmimdikciuetfjeece]dxwoxjenzguercr
+vxgoxslogbrjaxbjg[qyyckvarfyidktepi]odfkcgodqdusnjs
+nmumnqunfnuhvtucy[voatnmasscuvwjth]grckxjhdzzoqtpgwm[qwmgudaltzavyrchqy]bmxedeqkwkgoqyrmlx[uqzdpkjekjgfvlnfwh]tpsfewpellmljsakhea
+dvvwqujegsgarow[rkjpzfvtrtlpcdlc]kvpqbvyshmoemkhvq[hzbtnbzhmgaufkfvwh]ipdgirduhpdkhcwzfid[jmxetzvqbkrhkices]yzrxhfcakriippr
+xyijrstjowvehnp[ylbnnbclmipxjtxtbb]dtynyczfzgqozpa[rmontkapaesmlvuasig]qmuqzwqsoipzutdwz
+bdwyvvnsxojfzifhkr[mfdopzhxfakffhoudpz]vqnrhwzqbahbztlynpi
+hymeoolncfmkblqrd[ifbyrijjwxsjvmhql]vgybqqlmoilegcrcp
+arqsuxhcivbxfiuf[jfqqzwkamooqvyj]awbpyjrtunzulggzmh[iipnlkhwzzmzcdi]ktvdnpdmzmkrqavxsxy[dnoqbxknjvouymfz]brcemvbpovqjdvps
+sxhcuagminkkyodlma[zkcpbofatowxfdddhv]iydjxsbzyvvptmrivf[thuzxghsyyrkqbjozw]zicredtdvmavltqgeg
+qgvauvsmewyfypvgx[bkzpxdkwztxbpak]ghwmldmcmotjcmun
+ivnbdeggumwedodrru[ejwxagdnszmvpyxtsfv]eaabhawecgtctegy
+nylnblglukusyetuly[annmbyywmkzxoxcubb]fwslxffcquyfzezst[exsgjgeufpzlscazuw]rebffdvzignmrpriw[qwsiovjdtaimkun]utobenmeyrtxlorxjx
+eivxnczlgqbmybivjx[zrbbxnnjprbaknh]gtfbkkxqoowynpt
+botxfdjpvcayvpxmf[jysydtitavnzahbeg]zwkgkehpvxtocktco[iodpobnripiqifmexh]zpnrcxntqwwwucz[nwrxbbqtsqmkaiysi]pecfziyavdcfehr
+bmfbcrmibywamwmic[npcluivjtbtwmwxmx]mxyepxnjdabcuiexhwi
+kezzmzrmfsmhwxfhy[euevwjfsullybtlul]edrcskoqqmtwbhhafnl
+yywsnxvznbcockrn[fnmwrszfamgerfhocoa]uxfgnvtphthtmeuyy[houdomoboxleqhrf]zznqyqwslypolnqef[ttbcfuirmlnwevhzw]dmohemntzpwivaab
+xfrmjbgozdwamlqe[rdrfdfobgryckvow]gzbnazpqaqxcjdro
+vdxepylmqqekuqe[hagzuweczkaioxyz]sndgjumcegndnuwwukz[ymkpvinydrrvfare]oplwhupwenqwloy
+paikbyhegnbvcqa[kawvebmxrhzszrncq]noltxgnszsqxfbxbrk
+hwifnlppmjawmyb[gulsfllyemlqkcws]wfopsunpcakhzkz[fcpmxchdgicqido]tlvnxgdsecuxsux
+yogujlygnpdyhkxpdf[bawcwagtpbuwaorpa]noyoqlkcbsytnzywva[zvdbrjsxhozvyrugdnr]yyehxcwcnepivtjntex
+ukkuxsacdvwqkgwu[qfhnxatswcchleqaeg]qynrnkuwuynramm
+srvnvdghsmgtyvvli[gujzqjtjtrdfeandy]rypduscceqqfodndh[bssbtbzcdoiygtdse]klhkfnjidkombeom
+hrxpcidpccertdnde[iubpwxhlmbnofumjnk]tzjinnaqvzhuqmjgzqs[tbpdksrgbhbhscpnns]kgaslrsilgklgukanif
+xhrwvvblyiyyjithaqj[nxzhuqjrftquwsq]juvsrstyudnsyjxqpko
+qjjtuuqdjaovcgs[klwmohvmeyujgvauez]faqyixqvshgpkrgvac[hzjbtsvreecwygo]vluysvnbqjuroaondag[qqaysmxakrfjdrpvj]lteebmjrrlysmwocpg
+fkemhtixlciygti[babpytzqdpoovfy]ptjooannebsdcfrs[ismooacbkqjciwrfw]wsawvmoxxzwzloxunq[wrjhadcbmeslujxk]zckevlidqnpsdordy
+ikapdixlczlrtpab[xyfywwygclrvxmc]tugwitpyopgfhucrrp[zjnmpndgvwlqnsfnemv]xeahjahtuyjwjwxfdv
+wjbljlhlkfhhkhrz[kfhvlihkiqprhjno]mhceaicjbnvajugy[rvkrsptmdupaylqsbv]nptyjetdstrwmqjav
+nqcmyiscwhuiafdyg[njnrwedfdsnzkyg]rsxrirfayriqxvyqthn[alkdpteuyfothxvyeow]smfyaybytdibkus
+msvwpibrptekclckgdd[gdowictxfvmjmdtyimm]nlrlpatlusnrqcydh[zqiivotvmzapjjdzhx]eqxxguxozcbzlfkktk[amsfzydattcuqolcoaw]exjpttscqgketzhe
+uqiaugsvrqenozqcnry[hcmsmwdqjcoohwlu]morsyizcifxpoyzes[tdnfcmzkcxkltvom]jbkvbwcolkcpkxdlhy[joounotcqahwjvx]teeotmpwnuvnrgdxscb
+xsejzfhwsziaedxovv[accbrvbghrsomiv]glmkioydimjfcneh[xejzphhekszjpec]qfetmjhsfagbzjurrr
+qwmyiuonuwttopaz[esdvdnqxftkihzblcc]xxfxmkdxigfxfwadl
+gnvhardsrapmlpmlg[gmliinpyvjenkrnnh]kovjprgbyfdknmnbfme[nhzmroniytmwwfp]falokmiuiibxhheszok
+zcczeqrlhunbfsxu[ifzbbveczjlfwppp]pvtsdxzdoxrrlukmqmh
+rbgkskquxcvswaf[xihgvfvaxkptizohvn]tbntgfbhclvkdael[zuxdeparbafjpwqvg]cpfuexhjmkrdurlbnis[vfmoasavisksmltggm]hsnrpmdkogfxnprmvxu
+abttallvhutezhtr[beucmccowruviwqjxlo]slskvryjaodaowc[vqtmaqykahuvoqc]valnulizvgiciruetx[rbhcdafdupnswhn]bppfeuexkximknecfq
+hlnjhkjucpmxmguhb[gtoyutdhjwfudqnra]pipjkprnypqtglf[phovsbawbyxsuwsyopo]phkewndekgucmrrbw
+bikqggafubkrtyskep[eugvetcxkbfuajpuz]drgqdldmenwxyldlwd[klwzyogvokknfwdqw]ffojmxeeurqxasxgf[qdjndihaiuwjqie]uaatdignzrdeyjddxzg
+ddjhxhnkcrmnaztvps[crzhufiibsjerulkslh]snirbjgmmerlrucjlv
+ckxphmsmljtplee[mbrperwqumwnitb]aikxmbbxmgsmsfgeni
+zwmouppnlfbatcigqkh[kahnxdhbhongbfgmtxy]kfictxvtzrwlzvxees
+gfrgqbgweickiocqas[urgmzzgkrwpkfhpf]aazsfnctfvvdrrf
+sgndtkclbxdovlte[ylbolooanippjrmyi]lfydwbjkfsgdrecxzn
+gfypysbhqsgyoxrtxxp[vdfjphnhrphzphdia]ekhgpckheqjkjinexuu
+tagvhpldzimodoca[odnlmmdinuwyazwif]hsresddnysmuldvv[zpnjyvabzrktghfvtfx]jbzsfhvzaglqkstj[leniqywipplvkues]zumzesiphmejqufbn
+qhkrsmlwyoxfawk[egspgdlxbrdcwvoeje]pxuytqzjiabwebbmu
+wsxvnbuosiwcutjct[nzthycbqcazrnqppb]keasqheprjcqwac
+jyiifehztqkdshfuj[cddnloevonuheydyle]tftddpechuzfagnww
+zyicuknwqxtzzzy[mqgzslkciigsugirbcu]vadteaxyvnpyhwbec[waifsdqtrcbdnvrl]dygogwgquwnouhc
+jltdbxzvwoxlherhs[vuuwuslxdkthbcs]ujzniwntplzaaldguqb[zdcnhufvintzrxm]cunexbzfbuzomrv
+huikyoqqhcabtgosej[tqbxkfxeqyclgcqqsu]thtunfddczjfocqmr[vddedigjifexfqgp]otvsknxemvtrpbxw
+sgukpjkupqmgtmj[qmvzpbebkypfmje]howlgwptfegdnqp
+wnomkfqdtyobjkmd[goockdzswfoumhiavf]noshgjhgufjxgxiro
+ivzlyzlnqpslrbldxqw[qmlmhingxmcporfx]bccugkqyzoqaqbv[msgojkckxyuihysrhp]hdmzempetgwwycoy
+xzyacqjyialgkmmcj[aqenwwtnrupdsmitna]bhbicwoaervlixo[cggrwmpqsyxfoidjm]yawyxhdkscodboohvvo
+aoywrlzjkqkzcmmicvi[lhwojrkhqdearhac]zwhrxrrrmfpkjvrnd[zwdpqkomjgjvkcndhi]cxpctyvgnthrsarfhx[clnierazieohvgsy]eydbsvaautujuqqsr
+zfozpdjsfxmbwyb[ignvlhfnrdhybkwhxq]qfxolqnfiyokzcbdy[ohvvpuipajnqwml]rybjvumgzqgzfveqjvy
+gkvxesvhovzoekxbmgh[hjnizppxqxtlkdj]mqvvrcdepnalllarg[urffyistzzqlhimfhi]yhndztrezwcapskbkz
+qbuqvobipnbazji[qypkenwigkvsjhfdhd]pafhisczyaozydialh
+dkocroswvahrephwueh[qtiawejyhzlhsnlaxz]yyelniorfgcpgfxtle
+uyuylzyqivmpinpi[nxooflqcmtftzosn]vwxiscnnmmujalwegzl
+ewyjffqwxipurwkejav[yxcfacgyuuqpjqxgn]bsxufukndbljizkbo
+lglancnskvgdozzuuy[eossyfcrfjnpqtim]mvjbtylaisjdcgyn
+lxrbvlmepaibubsqlc[pnndwclekhualwxbpg]cxaynaselbcbisw[evtpqzovucquqbgg]lsscjpanobjuqlpkhtu
+wqcqpnmdhfupmmaa[qawfetitfsotgsibhg]vanugoxziwlnbda[apowiuucwbqxkcxry]kithnvgmjbuevopx[okzohlobuxbbjxeul]wrcnqenrhpvmxzp
+qwmlncrpjifxmtyxjil[evgtbhnhavfwyih]ganxbqprffolbtg[pxidrhwgdqsycynecqe]sukgwvxkhbzolomvx
+vmgykxaeppaasupwolg[pqkilujgqcoxpzys]vtmypzwtqecvidu[nolweceicrhwtvov]uevlxruhysbiedfibc[ytdalspbuzpagzjr]yrkwrgdaptnoxcqqr
+fgwnpezirnabdiwcknh[qnwczufxpwtomgr]umwdzmivstlmecryoh[ogyfrrqklslzcqoo]yohswnizpisqpvpyu[bmwnspsfofxvrvqkc]itdkhtuqsybuiom
+ynbnpjgaoammxaoagp[xkivkmwwiejjbbgk]ongbnbtqtcxqipe
+gxuxnshdgyttcjzvk[lsxpwpvsoquxuazidye]mfihmxgxumzfhnm
+ngwlkbdsfkoopeugbf[zkcrhoyehnzszjl]jwkxolilixmiake[kcoazkmvlmmlxhlip]urmeqvldopqdrvrdd
+hnlkmhqgkitizzp[dgtnogdyumxjgnh]gazsmgjzighgwpided[vaxfshfsqkmebtkceye]ndxcvfbzddvksncrr[clhmftvehwzwljbp]tooichznleiqlksnv
+jgnvwreomaddorfbnna[oedwzjkpxolayry]wdkdtjlmdviveeog[tkbjzabxaqxvbnasst]lqttnyqfnirsajb
+yiuwebgrrtctqhvq[dmddhqpukxspoiaua]egktbjgjcfzhltkjtyu
+sbfvjniiethddwbjx[guajrdwgcphepysv]qntvmggllbcquzfu[qtlrmikwlmlzfpqufgk]tjwivdcycoacfcwwfyl
+mxbvlmxjhiorcnni[ubvkvylqtxbchszgp]kzxkzbjtogzujapfq
+aezkzdgfurigqcdxt[kkjkjuyowyhylcxzs]maogxmmqteaectjv[aocufmtewquabwa]wlidntwbxueqzbql
+gngwphszdvmcnjj[qvbontopydlzjywvaiq]jbrgkevvbwzvkcpz
+qtdsnkqlmcwenkzxodb[wqmskmdllfarzicsce]dmubpplnmipygwqjim[yejatlbffcwmlyrek]gsvwxfaeblczgpdvhhm
+ktshrikjzljpacyux[omqqrcsqtbtdqsupfvm]bggungenwwenmztg[kacviemyqpqmwmiivp]petgeydeoygoknl
+lvvozapyfvdohboxrt[sqedcfculzdrbsafvg]ioohxzwwppkserbkim[bytwtckhnlhtxgmes]uzwrmuczkofyfgv
+ocskfzkwwmnkize[wnjrhvmcynlydnbvn]qbykllzinrgwfvod
+eqnrivojtcjljsfcj[rlxxybjowtdptsg]rnnvkyrsxzytscf[mbykscjmwlryaiictd]gmfcxwtjljrpihljll[gxrwqhtelbnpguyvw]lpbbvcxyokowlqfih
+sujejaymvqavyvhwpe[vzobezygmsxvqwnnu]dmuyhdixfuqfbnehqve[gwdapthzmbpwtui]hxhsorcfmtmrdqqrzf[dqrxkbkttpsjkqpbnl]qsmueuwxsrnejednm
+vmqbwehpqesssnps[jkyzwrfofkfqkse]glwxlfrqaamjejrievu[jhbggigitejevdzgqsm]sqxbxgyvfpqtxrlbca
+mlbhjbelhzgprdshat[zcytqxmfhuyriabyr]yzhvmpjfzkhgxavltdz
+ctdohoakygysybf[loxbfdhctlnhggxpoq]bimosyslpbihbwqp[fahhvvdfkiiucdf]bbgugrcsmoasoxyymgz[wjhbkirawxanrqf]palckvdfnlhficazmwm
+qoetptacgfcrdrstl[gpcfptpchpeiicbmfd]vsjqqgbwiqlndgmop
+dmlzhkeleeqkgqvriu[qxzssbjfthbzhdf]inuernrmyomwyre
+pcezyuyfhpyebmvanp[jccebfvhvicqksgwyqy]nssvudrlhkckath
+mrpkkivxuuozfbxejfm[bkwbwzhwwkfqqlupltj]ngrlyucvbmdilkke[qlzntmxfkeapmlbumu]ynjqdpmonwypyjpalvh
+tkqhdmjsbnhbvkdgo[jufmjoypjidudkbcvy]olrsjedkqdbeijypjp
+brnhsqltbrizrohj[dlzumegwwcbonaa]llqtbxfulkgjeqw
+vxjgwcccalsesmngkbk[owvdclfjsyhgchpt]zgqonnjsnsqxxvqzmqs[wsmtnxjpvzcdpobat]rkgwlaecswhucndgv
+wkjmaneymsjdyjd[uvgaxovnqgsvamsbz]naumvynxlnbgksk[mmjeguwrwppdwmdjlm]puiytitjsyskwomrfqj
+fquaiztteofhvsbcba[hvstcffflwbvchn]ntvqaedorhoikidi[cpypurqddikmaynmxzx]qkrvwfsppcglqejkn
+cpjplvpmbumvgsduald[sowmjselnjpjwhav]flufpydujtzuzusyrr
+jfhplkijkstxymvwgz[kbsytlilpsegzanvlee]ywcxnydvgcxzuibxvu[ayieqmzukhoxmcli]rsyubeqkgvobehe
+ocsbswhjtvywugym[twhemgyfgdfegogpj]xamojomgxvyedia[rukhjizwdryazdtdsb]fdiecwglfmtfjqxocw
+vywxxiyjfwsjhvjmk[mwjsyhoifeimjqtmx]ribwktjvuvxakqqznf[izcdtybzxfbyubfbckt]aocntguubagirsgvz
+ursnbtivqkjfkcbls[ckjjoszuogsdnficmhy]wwzjkspwdvilshnzg[gzuoexgingreqktak]ywmfxtqooxdgqaa[bmucdllxdktiifoqp]pvxrfcknwxdjivyym
+ebtozyepluaazxsuoi[mocwxdgmeyxmoulo]grazonsbnsnczptl[rusiwrrcbqpybtjfxt]ewazwwjculbvwjgc[jmoyjpbznvzlvnzu]ghwsmgrsqjgragu
+cmbehdhyvukkufctwpl[toklbggcxvjerfqozbj]wqbacnegquxmszdul[ggzaznwywpswuxmlmg]swowxuqlmlfvxmznm
+qbebmodvutfozxt[macysosjlpjhykkb]qdewwbokbiqofejcsj[ddzpouyuxgogajwmuk]iukkhkmjmrrkefycw
+adaobhuodvmkfzrbk[ucroxtaavsmpvfd]nvrnzhxozidrgvf
+yytzgmmuqrfqegalpow[eyefbjmsyximixd]sgxjxpfncigzmft[zuwduxnhjiidywvsm]qmdvambkreelttqmv[mqhlvabyxnmnjfpkigl]vuxmnunvxclyhkxi
+qdgaknszcwxvyhlrfsr[kbbxnitytjopwtruar]ucanrksrycnoqlcvrd
+nqwjdcnwfxkdglllft[gbawkxvzhyiprfenf]ysybkzwywpqwerm[cwsthmeytiuialllzxx]plcctxffnigyhdfmndc[kyyvjcfkxfofxfsrw]cwynasabqneione
+kqthcqbvfsncuenmqx[rpokleyrpkohzefrw]txvckiapuezhimt[rrfglfzarznwgchlej]vpnrufinbaqrbjtu[hypcxgeuiotonfxvuf]cfpjwonfyqddtogr
+aaxuojwascuilsqjt[aqpfsummtaolqpdi]qoqnuhfpinypgxiex[peasbtrzdkneuriyt]dbhohenosanaxkqqxq[fwvbczhithdxtbdpd]bmncqvxnaijxuexu
+mgiepbqfrprbaqd[swsyfijoncrtrigly]bzdkfgrsmwamezhp[minqrxxklutrtrfxps]dacjpwxdrbxhumh
+shdjdexuhgauroqwtmd[jpvifgjpgzmjlrnuyj]svvjpufybafcjsoppia[albycpxsvxdykattdos]ewhcfugwuovgnepvovv
+ldwjwyzaqxwfrelh[rzkhymugnnpmowx]xufycgvikehdxxggp[mykgpsmatnpimovscqe]cpdwiemofukofnauyh[iicxbleijoxlvml]dxzlvafklkbfhqke
+cqdtbwoinxghfrwulij[wwuuffpfxzcckuf]zeayaofaskxfueiq
+odegrvwiwncavmxd[smgtzidklnmlnltytx]psknhjsrxwqdqlw[kmejoinwatytdkz]dfziwicdcmfwawwf
+jzioqoutlwitjdcb[furuyivyebozkvcny]gfhakdfpfouliybsvk[vfrykghujsittpcxjnj]vjekmvdvwkaffrhhr
+rclnyybawbizurp[cptbsqptpvcuchcyncy]rlqjeblagqogxwy[mwexxfjhkiyoihog]slgmmhvjhpomcvgabu[xgipgcmbydzmayywci]tptdbfqkemdnuzvuz
+junsrcleteqbngabdh[loajbjvuielphzeel]yquxjlecdumepsr[lktbtwjmyeqrurys]ralurzrcthwtkenjtet
+zgykbezaearyhzuxhta[pqtjhajbyttwqzfozi]dzodljvnchwsytat[wrdvidyboznzzbgvxc]fnpmjaiocpucgucwh[kiqymnngzdrlcncpw]xkjzheobflinqcxu
+kbaghyebhrmquslcfc[ukdaffinqagmwhvhl]ruyaqrvavvfrzwiyit[jdhkzojqtxymxoaval]qfxsbqwjtsudcet
+obscoqxaeartfjmeue[dtceaealpasuxsdoo]zhtpbqqfonksrcpu
+bphcztpaoqfofau[wlhtxjzhyooevsax]pvktnvejsbjwsizugxj[aijfjqhoxneawmq]dlfbjynbvobrkyur[swgyiujwbafngtiql]nepaaduwebbpsrew
+fsjxwoamqjhjvyyr[johjhabbsofojaxccga]tqcnhtvkimixbyiqt
+lrasfxkclqtptlt[bmwhuwhzvfmwxxwla]xghbszjpdbdykjmfvhx[cerzilbrtilvfptwid]nkzdvndlbgkwkgzwatw[njpjupthwiwffesnct]cipyoqwmxtiugbyfmk
+txfqpycfderhwnqtrp[cvtdbizqhlxikkw]nuxymppbyfdpayjxt[sfsnmgqrjqrlfxh]dgwdxoveamltzalgyw
+ntfdficysbefpup[fvdhtaqmjosqoxosu]pwrbdoceiweqrfyrx[ftlwubetphczbxhx]jolpetpuszxjkxuupke[mbcbzrxeoqpibuyjsgg]cpdzzdzkwbucybc
+pwwzjoakzydrvkyn[xisfgbgguunevtbg]ntzbwgeohmdvitrtdpj[fzkkujhplarmvzckn]whvdpxzietgdyfhok[hlmsjxrxxrdjfrzncyi]xvvkjroullhawqdj
+pgazkqglbbjzrofkpy[mkeiyuwlxlmgmeugcbb]oguzgbkaasscxhict[lckibbhqnkatvzlqcw]ulilgiydzfsdwngr[qcrozfdctltxaatyajh]ojyzengehkhylgh
+zdatmhxwkinjiumoy[qwhfmokowsvzgcngeax]uqebryzrbawakjz[ltilidihghatuhi]lljxtazlhxbrnvwsrc[updgoblisisvpdqngzo]tjvlrlfopjdoyoisim
+tfguxgdgurymskwxk[ngtycndepeqrcif]gttrbjkhsbrfczdwxo[xulqdcmgztpjgiajnkn]pgwsbrzakmvblfsvlsd
+lclevdvivjogclcmn[kpxlegarknivgdvfymk]kygexxjbzqppiywvxtz
+zadpyjsswjcfimejbc[htbpkbzsmbkfeqww]ydwbivnpofvmzvw[archeurcpsapgylrf]teidjxdxdailsbb[nmoqxuhzymlxxqykol]zbesrnrszqdpsbchg
+ykwptdjfydxfdue[svxdapsdzsvmsifz]omdvdqwkswiktcwkma[tprmxhwqpdycftzlsz]dyfcmpaaokppkzvoa
+adfqjdussbzlxfvlg[hxktcqjmyqctyjnl]ouyrbuvumwwygdc
+rrryoldbjkwnauaz[uarnttzxeuurzokpa]clkjazjocprwqti[krkcdnwldqexavrpo]fdegufvailefzfi[izadiszyerlbhwd]myayzynvrymyobbfdc
+krttvoiaszqvnme[hlywolnuxbxjhzmnt]lwcvxyuuugaqribebi
+yrznsouskotcing[jnttzbfwdrpszrcqr]dhxidpojntnwrrsjjc[dlvjkiqqyrrougz]bjhjvlhvrefihomycx[veomjtdhecgcvsshcwo]iboybnggfhdhymyukl
+qtvgzpyhogqojzi[vtbmgswqkcpdzhxwzo]jsmnjadclhgsofgrq[lltxvswaeqdbvbyqj]gvrdvrgygzhbetbkjq
+oqmbdnnrpqmjasc[hzdfeapdznngjzjchow]fdoxpevjbqngxrhhlhj
+ujszwtyancoxbcga[qzpevsjkmozdbeqf]bdzegnfxtazxdna[wyinvjijbvudlvkwvg]mrgzfijgyouxyio[qehebkkwomsmozoojy]sqhbhyonrnjocbjzfl
+hinhkyqfttbnnou[luuiucbkkrnwiuqbwb]ujfitmunviqwhkiziy[wqbetolmyaceofd]wbwbxudxttgmtuxjeo
+schrxkylmxpwphllds[iijplekwtutqrdkmsrt]hvejiqeylhoxdpkxz[gbhczsfvoidbktsgbqu]rtfwgjnvhjhemkkvbm[lxojvsbvcnlbuofvwg]ruakyrabueflgsnict
+fvqtupyapfmstztmbe[zxtzrmjxlmgshjlfywb]tdihozcziyvstvdtvd[ifzqxsyyhgstjwlr]xihkbuvismdtqtfm[xtxunrrzvtuhjlzoji]zotmlgbjircyvzgcxkd
+shkjoyjuiufvxbluji[saofjqdwpwodltmra]xldohzmyameybbnw[zwaispolnanumhtz]hpobrxhytzqmkrkf
+jgaozdtecqmpueg[bnfjhfyhdndzlkxrcb]esbfjomhfrfvzgm[wqvhdvpvrbsazqzgnw]lkmrymdcupndnoktuv
+mehlgjudopvrolla[ghqzncojnxbdtupn]vacvkbpzsztmzhz[tcvqbgfvrehiycr]unpokrfctcwqexbgo[hbigocuneutkffaka]dwwclmxsripmvcluve
+rkdurapdxvohktm[idaisubzmlljyfbblho]kkkxhnkaiaxxyivjsna
+ujdjbvlqoavnuoeeilr[tpiehldutfyewbqv]crvmofwdjdesxrl
+ptyvtwbbmoujjbvsf[avhpwnutnjkysjdubd]ysgpwvxugjswjzhw[fvgohaphbuqpbwzr]sqvpubqxxhmfxvlw
+sslbaaxswqcqfln[nmdfjxyyrexvtxv]wavnexwpbgnrbrwyrf[deouszhzjkbxxrhvkn]xtfqfjexnqgdiddxh[tphqtpimimjxxkkndng]ncngkkzdnhmbqohupgr
+kcowklgmyivdmreahg[nhhhjuxwoafzwur]jokzmfbbnzsobiahlhi[qgzkumabuuxqhki]ubnjasaqscrxdjy
+ccofivnvzaxcise[erfolydklxltrildvth]sjprbxbfldbsozha[lrbdfwialwqinprra]wqresduonlpwaamhj[nmlgvtrcuqvsirfhwi]qjtgpekylrqmxxbm
+fugomjlqyofxoij[prndifttmowgenapio]jpvcsgonnqmvqrxwo[yuioijkmnwkyiba]gtosuvsrcszwsotg[zvtndiccjofwagevdcb]qpdjgtopkcimpfyqw
+zbzstwtngoozwdgtkme[mrcfdmgpywwvikyrto]ktlmqekphuekemo[wenupyuqahrgisu]wjyyqsuatrkzlohmo[judqmuzbdrqamof]qiovruvlcreoircteb
+yyclnzxvjfymqgrzup[koyfzianzwtvdjga]jtfmxjxehvwejfl[xbebzfwcbmjrhka]oqnpqgevsokznwo[briagugdtzfswfbq]dmnccxrswiebtkwao
+muxweanabaymbamknkz[abtqprtejlmchtpy]nmrtnrjxewbqynvbe[rtxnzbwcjbtmvob]segkftbvlvczkgubgp
+hkihivjdrqvywhwt[xpciwwigazxeddp]vkaysmwlighihfka[lcyiuojfjmmhltubrj]spandymlggnmqiact[xizoxzguscxtsut]cmjecsmmjasgpvx
+kasrdhbhmrlwiczlyp[sfvdefhihrtmmgele]voszgwzdjlvkejvrkn[ahwvipvknuyzrzbrmkk]yuhtxgfpaipuupqep[hezjazdypaguhxkwud]bsfgurgwdetewwg
+mkxpacxlrpbfqio[axwgpntpusujnovkpxp]afzkmjvcysdkbfeli
+mspmqxwmjhzxqmbhbj[zniufuwcidklzfpuoxs]uvlrvuhbhjhudvx
+nrgtmsqbjxlnpsc[hpbskrvswufaucjmjv]pkuulesksyygynxyku
+kmopgjfjwvvrfgvo[qsigvjyusqjqziiuwxf]ewkbjkiqfgdwhkot[tbrynegplyfllxcqaar]cybelgkyrndjodpf
+wjzkfwmrsnyjitglauy[jnncpybddtktmehxz]hluaspiawjwywug[ujwjjttoevainaxqmer]gewchllvjclaahplb[haewxwlxjjnfggtg]uxmnawcpzfwhfiefo
+jogfshkvmshdacro[anluswkewepuhbemk]rwfxbxtmtfgxatwj[lwqompcrkgqzkajgrqg]ckjftivpzkflgbifzx[autylalyokqqlxgu]chewqmwkwewmwoby
+vhqxmrwadjsfoprv[imclvgvrtvqfbcllpr]kmgvgofdlkarrusoo
+kwkqhpdsrkdlhuq[njldfvflplvygnihg]hikxtejykexrghupbqz[tanglgtyodyncabh]ennzrvfvgcnlehci
+hmibwhrmzhcxvzgt[vrdwkryugziqxxfv]tcgmqhirboxwvyy[mjgojhlpjolsjtcu]tphrqucjxjpsdsi[ahqidqxdgeucevqinms]edzoyewnqweqkla
+deizsskvkzcsohdf[plhmdlimpiduxfdyzv]iaodhxioxasudzv
+aepgcwcwlpdqric[xyxiplpunvajsjk]dkragqziaqxgbwr
+keocoxwzsscocdxcf[lvdnlggndlqzvxjo]cajmnvjxphmfopy[bxfnemakuysdjvhzv]ymuttirruskkndjlpw
+rrfoglacqhfucnjkhsf[ejgwoteprdneomyqphi]gtsffeskyegnxzfkssz
+awgoetenjdtwnpw[hflbiyqshareqvcc]qxwgczjnzceffwk[eumisjskpmnqfmox]dtsifzhnbdvlfaqdkwe
+jezzkwqvkbbcskih[cxqpssjfttcropqrk]eqkohazzfagyqpjt[qveehpentvwwdazsmdc]enufhtsnszihemkf
+zqokauntjcoqolc[kfjplmodgrkaeuuvq]fqicoryxfrkubee[fcncbrofqpyxdnejn]yebngpgxcbjnivisgza[bpwzrwupgpmtbhg]ufxyezblslkscovzaqd
+vdrhbvkjchpslgpwwdt[cfslokjhwrpogwmf]qkxlvkrswbbbhudgk[ryazzfichahhigijhc]xbxrwruzjhyjlwxf[xlulxjmhxnhmkflqw]xtkuftnstlwxwiirwko
+qwbqncrimtxfjspgyyn[ysolszsumngdzijn]stfhvhqwymtjpauip[lnucccqwwzenxlytrb]aumcvdswfuucagbkel[skoaaxgeqadxehwvjt]jrjzozvfrrjrsvmov
+akweexwajqyahlpq[pjxilukjsvzjerrcdcb]qsptnuxrshmerfccxhb
+xbnsmtgyhitmtounl[msqlrxysydxdydbtyho]varxjhsmmqlilsprkq
+udmbexywtscnesd[azofuoboewwundyif]mykxybobvefathvqkfx
+gjedwdykwqbxqpsb[nykqvlfsckqcgfhvbd]xdactphykfhbpjollax
+tinuplnorykjcuete[qqwstzqrupgcliapi]durprlvdyucmbkhceq
+zrfmusbfbogbrsin[gaayijtuqfbfnxb]cgjsibujnswdmuhfez[rhatyymizrxrqud]wpvajerbhxbtrva
+tpjpjlmhvuorwnd[vnwdgopuigazzwytzbe]uaplhgdvedfaiboz[rqkafxfjjzjwbzwung]cqwjlakbfpqvxspia[chyrracxefgkuznb]chigmcxzjqnzsdn
+badqhtkxeokdbres[wmdthitngyoujdumxfb]lnafdeqakaggcdttnq[acuhhjaemkakovqq]vfvloofttmvvolbpgb
+myaunxirrlgywdtyrlp[nxinrircujeyezto]tdzynxmmbhjybgz[sxbjlwhbkhpplbveqk]oplketzgeeoczpadvhj
+wtqjkfmtshufwfiux[njjvqujaetzgcihtxvi]fapfzhffwqovrvfpatr[hwjfoqsbiothjtrbg]sfwifkjkimjnyzaui
+milzoncxkgtbsgtxgb[zvskfgfsgefelbjckwy]lrdralfxvtlupde[kvvibrstieyneglniu]pfyopkpteyovtkahwby
+sjwqwumquvxpwokonnd[wooozqoxtlhwsfhtcic]tgzecomscwuxgazattf[dmaxzgxonbkehxgymq]xbqkxgbziuumwex[csesnsjiexhypqrxjj]dbscxozezqgzexrwci
+yqgpqvteubzxsmjb[bntiezjqbiywrsq]nrgpewzpshvjwdx[qifsblzcgkiqfmele]oypyewwjmytlaujp
+bxlsaiblatkrxpcr[xxnilxrehixaglra]apwnnbwgatzwgmr
+rqsogjhjijafydmr[krhzamyodyfpbdv]jkjdjxgdszznhiv[ywihxdwlgdadayqm]cjvrvelwbegtiqswzqr[toujknandbegjga]wvdikqjnnxpuxtijios
+dqlbbhlsllmcdejnme[fchpcehhwkjwkythfc]shnipixrreczdblufyb
+pljkshxmvbpvswl[gbuflmmaywvbjwibfud]mexysgjrvoxovxtvici[svuosbkwxjzhvmztiq]cvfjfnisqtyomho[jvrshoymwbzcpgxtxl]ysdystgkeioszdbora
+ooyljflrcdoujmfajfu[qvnbylveipljcmgrvl]cjfvbounfvjfpsxmbnj[mohdhwcdrykexihcgvb]gfzxjkkqdnspzbqb[jkoiqbqtbjxgezxvsgn]juvveztzrtcxhyp
+ebfbaesgsxjbwhkmpxp[dzkhyyykwhayaztjt]xkxdjdlfvlzpqbb[tjdqvwygsgoldpffs]uwccbahfnjkhbfzcocf
+uayfnudukxaldfgdvh[tshkbhbydlzzndsc]wtjmhgayuizllbngcr[tfglywxclqmgpeatsva]riocgxwsethrhbh[xnerbhkafskywvgxbdl]yzubvjedgzbpqqng
+iensavdsekzfncu[frepnzfzbolseio]thbtyqsviqjozgq[mqobufwdnxkzqvqtgj]woxdzihysaypdxamitb[llqsjadcqlogalbice]xwrmwjiednucqqfuy
+lgmcluvxcilrgacyc[ozvsjikotkgiepo]ximiftuuulbsghmm[ykwtdziaokecacpd]bvhsjkjycywcuitep
+eoefpqghlbkskrhdhv[wkzmafhoocaswuz]iyiulabsaueugqys
+noklaptafpgtvzb[hocgskfdbisxdlcdbq]sgwqzdhmwapbbjox[yyjutkzwybpoeea]xtnvxgftzjdwqhgh[nqgarhtwigpfriuq]etonjczcgfhclbf
+tyqqeyfkxjcnjih[edtgzfrlpapwoyrnccx]fmsegnaucwnvsyrsj[lptzjaxumqhbwhmljyv]rugwpouagbvimws
+enpywofbxruqkma[lesuqdferlsfxqis]tqkchirhakakvbgf[ytrxxjwygqwaauwjsg]ncrkbikcmvtbtrabvqb
+nticpuumzthsihk[asrmrtlzizgsvnvcxny]wjntjizixwyedcrh
+yjkotqgkximxcbpa[ttuenysknomggwwvvhe]htzkgoilhlqrpmbcvh[zucaclqaevmjqfuy]pfkvmsbcslkjxyydhk[obfcguogfxfimowk]eczitrwtnkfqyvxco
+nbrsaktghjdxrhul[kmtgawzkmntyypqmw]jggmopgbovomadux[pkwngsqopjftulu]ymmfdmimjpxufntd[hnovhrnfsloivbbueip]oreyglwcjkylphqtwl
+ufynjbkocygleqwskw[yuykssufmvmdkdntk]opbcqjxsioqpkzbtuhh
+nkxtoheqxycxqbp[nmjgqytppiuscyylrm]ezhiobiihpmhkqjc[bewnvjufjzxgfwhy]hslvggdrixjquaigzp[dkaylzejrwivzcl]mxzgkigdgfhmczixkrq
+fgcsqpmignjsbxxzt[zoatnmdxtjwltkazbep]wiadjhqakemepgfh[csuxhgjcqjsztsrwb]wdekgrxgngaaqcequ[kjlsrjjtidezpuitng]lhibpbcwjndstunhfff
+ozgymklbikxnhme[bbbbemtxaxyxnnazaxm]jszcoclvxluigfgdlq[bkkxgjapnrpvovq]tdsakecfolgpiynztiu
+tytomipjwhuqwshlvho[ewcfspufoolvxmeyodk]wrrxjaexfktctmwrkvc[fwdrputsdfepfvglfq]fqhmqffdtqahfpyelce[elfiaqrgaqxwpjbxcig]jmlxcfxgjkteodsufs
+zdfxveufnuenptljiet[bxzgimeczdpygyen]ptmmjlitdsoncpjlwh
+yfyzedhbbtpqiwmri[uqxjtkmjcivoqatycbc]etqdfgffuplikkgrug[ezipcwmudtfakrrif]kumvfsiqqyfrbcbvgf[upsfgrzgndzpzxhmx]aewrwjwdquhsagmgwah
+tkhbexdnhdkmlogvk[rvuvfkiqrvxwewnhihc]yytysizvrtytoqznokd[cyxenputwxkuesw]qukaxyqfxbjvgdcy[rfvlqyyapixtzghha]sjazfjtokjizlxiim
+ynwzzgtnjmfjhbys[enxaumsepjmyaapa]tctribvarqtdaceq[omcmnkckmzjjdhjiwvj]qlkbuktkubixegud[bbvvgpocsbliknv]nivyswbiijvnvvkuw
+dwncikgxhzvktwgwa[nwmhqzwlvntxvjv]dmbsieiwdzgwecq[uvutvspxpxwfafv]vauzasizdqputolg[ncsglnqbwjshyxa]dtgwditcpcuncdcxn
+kupmpwwjcwmmrhum[aakppoytxqucqfncv]gpuyruwkndprpqjqwup[lrcoaodsmpmlhnhnyq]zathwgfvwmumcjwaa
+ivdparkbqlazewoujo[tzfulakdrwfncibtnza]titrajiplrfpbsar[rnjnbtkpwadofahdfvv]uwobxeoluadvnxyxwl
+kkoyqwkjdgcvqaufnj[qucvzomguivuynsg]cbhahcwrhchflfuc[czlxnbidfvtovgdl]jmyougddwlejoyrfsfm[kcuqcjogcjrhvjpxx]khnizsdkqwzdzehlpe
+wzeknwbkawxgvgtq[wmypojfjlgomvmk]tfwjzxvhrbxpkuyk
+ivalkzrbqzhiqmjo[olluyctvwisrwwt]ndrunxditvvundvd
+zezjmfpqesoftjufk[tdueprzpghkckpq]fnwlbwrhqmmayee
+jpmhszgjuxnpjdsbtk[cpzosccgpfbvzuretl]nfpjzsqdvzkcszid[csygzwucakziegi]laqibhadzxurnulc[otxsegwpopkabmwbxzd]ymmsoiqsjnlnsvlsq
+srgtzegqicrsutbpfsh[wfdoodrpmioayoa]kfqtpkwcfgyvjeyhvsj[yzcyshhziwjudxmm]xnmgrqxumondortjbye[nyajdyykzhnmolyv]zbdkvkbjavamxrafhbl
+ifwabdpxckluvreesop[dsyliwtgkelyyam]hqwleigpcnogipr
+bpaukztdyuwjkjrqj[dnslgwpwsanuxvtyn]fxkjtpifmtqzrlok[vfcgvkrunowkiilyok]ypgxcltrqbuzwiqom[ikzgjcafxhxmtgril]btdnvecxukjskjkndz
+nghqjtbvhviyatzaz[guzxivxizjukrxwaf]vtggynfcmuttsnrvm[eqvzxmtlkaigaur]dmfhpohcbyjikjl[kxaapmbxolonwgbw]uektjdecblphouwitdv
+fxefzaiaeclqyvka[srznplyazbvctgfdr]xakjubrnnbfykcep
+rwlthwstbsaxphlsrz[ihywtcvcfdeczmy]lpxfewmiwnskbnv[ripgyxpgczfvxkzp]iltpwldaivxkwwcb[yiejtwqmnnnzywks]krnbkndouhoakztwzh
+mwaxggiakwqnbihaaj[pxslpnutqpgdfvhvwgp]nhhnvftzfwdfnrqisfi[hgroxibwekbugif]btrhjqipvkpfvcf
+xmxlpyuuqssmtmzqyb[ybwrbnrgkansaodfap]cihlwrfxgbaxddtja
+fahbkbakvcwwazgioub[ouuvcmqsmykbkhfhj]gntumiippgacbcl
+hqkuhmrurcqtkzusgu[drwgthikmebvdcjapw]vdxfpjwqlcvwpgsflb[mmaxekmyvkxfxye]nlusofrecbdvhbruu
+tjyqhrxlyrubiuwl[voyszxwudonuwiptjoy]xggibveyrclwxsq[aolwexwhfxpwcuavvwr]bwkkcnpvsiynoeikmlb
+cxpvpcjhfbokvuh[sdkkaewwgkvniqymkrl]emeetymmtcbrivitvn[bvyzmgaorsfbsmqoka]vodjpeovgjpofkq
+nupojuxxbgjvlafg[uhfrugmmacqdsap]nxuunqzbasceyiz[ircwdmgmysazaya]qwsmsdywyhklvniiq
+mxujioozxlybxvyjcmj[afimhsdzsmtxszd]fsckiqksntizegvxgz
+htyhhcuqdfhhniloe[iqslmejacjbynzkw]nenyirdlormvppyym
+jbphnkbvlextsaqnid[xdebmjhugwvnodt]spdqamgmvsuftfx
+mpdupjaxozerpkit[pcivcugsbsqynoz]zrxxjvwswbpuylnxi[tjoxsullllulompfxhy]zobcdnaypuabmzfn[inubfyjlhoysdjath]vufswsypjkekcrb
+qsbiexorinxuevkoad[tjzedsasyapfnvwa]qbfrkhbfmaxcgmovnif[evrexsygnumrldt]serpxomgczhbzjix
+ukqzagjymparwzqvw[lnkduutsjulfxuqug]lvupmgsyiquqeepmgsv[ekenewopqmddlcqc]rhnwektxgccickla
+ezrytvzepmzxbjapim[knaxuvqciriixgji]epksyimofrrkgawirz[tewvfyplzorvkyeog]bwnejljtelcigsqfx
+fngkrmmwapuutwtn[pjrinpthoymdxemoe]qoxhlklweoscgcagw[pyrevdqrznakburr]fnsowwitbsxsdsdv[hzbrhpemwokvyhpohjw]jppmuxhrsdsmmprl
+wfpphsvqgdaostxg[abwxepvuvujjmdbhees]uxitcdrdkyaqgtyrdr[rqdczpmmmisomtmop]lnqpzuqcyrdgzrcc[cvzwdsaeorgdzzklrx]ekwjqzkeolvlkkqtj
+qzhiltifnugunsngzg[fxfhjhvijjnhnxkbl]bbaftchmgjrfuanns
+isducdmcjzbiacltx[jvkepdvzknnyqegqte]zbuvzcrrsbjsqkf[dowjjsipssfisalqwmk]uzrmibeeevzeuxtb[ajzixsnzrxwpekzpy]weogtsmtsuxvjyhy
+dnxhdwkvawccsfvncy[odsmukbcbpfyjqeau]ugusdxmjuxjosasg[ouwrwzplzttepynf]avhgcbmjesyqkzjgms
+pwyizorvifedguhjqrg[zsafqttsqlygzwmqv]hxilzjvsuyfnyck[dnovwvccguuzizrjw]qgbluurgbxnollv
+meqzvrprpthaebpd[htamsljskphtldx]riagbpmpasjnjefv[cvpfevyvpivbals]tgxiqxmhvqhhmrr[cgeamacqfrlrhaoz]vficakheeoprpbows
+okkhpeexympjqvlamxu[mvjvngmxhkbiaygi]pnwoitpqlyqaiwdpf[ryfcbkcyzbvxuyngw]xxgknvjauivacqxr[tqmanixcxxbolxf]orhkvkwpyrwbymux
+ipwcjobowzgrgzmnf[uahjinxxnmyyibzp]badwoisgtafnkgnp
+bcbwbvyvqpozfig[twwsbwyhvfaddwo]jogvkczzowocmkwwlla[yedsazzkeklftvohfqz]tghtcjemmehumuyxar
+bevtohpxkrlrjjen[jxnohlogvkugugmk]nrxomawkgbwlnqwb[rtjoeivssknwelkhv]dihcnpigtbnwfdlxhm
+upuufvskhseazwfttq[kkipejrjmxwmqjsh]xquyqplziwgvkkiyv[iirqohxpmcxsjryb]ajblnptlfnukvae
+sijztjuwnyftelgytm[mgirqlkcbaigiyx]wgbeoandnwaudhgvd[drhbrumogcajpxnvqov]vwandmoxgzsokgfs[xwgtfizcmyjrfzgejhv]nhckviycimfezwefw
+gfgrgtizxajkaicjcc[mftrzuftzrgrwilsv]uckwgxywnamzjglbnts
+znbgncjrhyxaxgd[xyyzkorhakwqubjzk]wrsdvjsrsdorwkgr[krrqukxrdobhkzmr]mdebvnlirbtdbavpj[adbczigmaoreudvgns]yqxeoeccdlpuwyvf
+ymjcaobrviuqtvxjqq[jwpvalizcmbpfdjk]wmxpzhqvcavedvmhtn[llsefbpkphhetqhbj]qryznzcexwgvxni
+ginmrsljkrcminltayt[iarzxlzixokzfxiazwl]aircthhepljgylm[wlorimkebaxcvcwanlh]bihvjtofcsnvuem
+zdegfhthlaitfojyj[bltnoljmwcfdvle]gnadpzusiepwthtv[ieuoyrprfkwonhwjt]wwfphscvjchvrab
+kdnddjueyrofzhjdzcs[asdqcpbunitvxrwi]usylnhwfapvczeb[ozrrpkegwtbkftyeusg]pncbcdrovovzozcazn
+lkksyjqoayppxtvns[csiuzvhklkfijem]xpsmnkdmivkitka[djmnmzweqxrkfomzqhr]wkzmhoiasanmhez[wojpalkldcaopeg]murhvjrgpwxpbveekq
+jawznxjorxwvflmkk[gafmrermlounwjqod]nalazknfqhepgnelal
+wlszezwacdeehnlnoj[njlzbwkfnvnbwim]fydgpvvovkuardng[gqxvckevjodockykp]qsbtvwpwaaeatbd
+bwwttxctuzuezxfdz[apvuanhzemgcupc]qcfxkvevimwvwpu[zhhorxgplrpuyabae]gzabsprhuhwrtkd[sqhumhfqwdgxthu]fyebhdninkahfyy
+hhttjuhgvcgkisaqof[obpleewrfrrsgpumz]umcmeaytqjlqkyrawp[rhkhciyzmxciiysv]kszzqcmcylslhlpqjag
+fnevugmjjescvvmbmt[bjzdquqohnusozz]fwlevkwzllmptbcelsh
+hzqfveaxrqycvuolynx[ztsmaipixbuhbmv]ebvofyoeponbpip
+utmnuyowmxipzhde[yuvqwfsuyhonciiepq]ynjvqvvifywnecwzdk[httqooeiilokkjghwjq]znixikpswkpgxcchuyg
+goojhvcnizyiukzgmwb[euyvjdmnjjrkjwpu]puidllwqpsddlrhx
+ysglduipsofxegb[kzrbdzimejxkyftyuz]aekosjomszyegyy[vpkwocloupebnjeo]ocdaynpnnytwrgkn
+anheyoxddpkmqla[isqzqeuwwitvtqy]jnchwevvrgyznqsomum[kribzkkrxawjnfsmiux]mlerrnvwcydnfckydfm[hwouaafteeabtgflb]acwwvgztxwcanzizha
+kaqernqhzefzthuc[tiuifctajhxawtoi]kyqdkeudzkihvfsn
+vwwekuavrftztxb[aywyoempmajrdkxpsc]eibnjbszsfsapujqn[rxpcsihuzszefcdzl]gsahdvozzgxjhontxk
+ymjyffbcgimsalujegr[dnppglortkqlowskj]wxwtxtdaaopcyvp[xfsnsdrlopdotuqx]sprrvphwennltlddiw
+lguyxqxdnirprljpkec[gevtjwbiofgesdwil]phnydixjjjcprpxlpj
+mgjnnftohavesepu[slwhvezajhvdukghl]hdhtlheqzqqrsqmfqyz
+iapqmjgrjnecxylopbo[pnbvgmbhbcmcnpsf]opurzpqoyxdxfkud
+efuoofbuyjoaqjd[achnmlslfvovmgt]xcuyvikslsewgqlx[gjxolnhgqhhglojjqhy]iarxidejlgphqwaei
+uxpcurtzqgpgtzkvp[mibqtgwackcedfri]otnnsgolldyzdpbew[tmgiijgjuvjykwahml]xxgjgzmnicxmywdubrb[hwhcgbzhuoankdubft]rxqzywfyuliatahn
+uhmufcxuptehmuf[sygthxldinztzudvs]bdxukzqaxeavvrbqmuz[wovugtpgwisttusjlet]tpfbcndafwhdnolv
+kwknefvhmzbtjezkh[zcvncbptzekirhqo]qvgnyfkmrnxlgxzjjxl[twxzjkybjlrpurfmufa]lclhwuylibekjjxc
+mspxottklkidvlomd[rhiachlbqgpdhfnxyc]ekkxgijnueonlkpfkm[dnwcjiihmpjqtmb]dkknlqniolowydd[dyqofryhvgracxeuivp]pbsgttbtgksqqevytrb
+pjvdfpsdlampeztecfq[lpqshzeegwiouas]nwxqaoryigyvbby[iiddsczjoxentwv]weexunkmtaaufurjz[meywmosucyrxzlgxi]huqfmfpxdmcmqfk
+abbhujqyoaphnruaih[yidrkxgrxeoarph]fvryghhzqrobkbsck[dnokdwmkbktlfoihxl]ttptfiadsswiwsfbvf
+djwqivpbexyvdquh[qmmdydhjbmunyjixviv]nradabzesdavhasjbjs[lsabjblhocebvyhfee]hwbyvnzltgezasg
+maxofygcnygnwefsb[gdfccusdbseqsqfwva]cxdmwhnjitaazhjftn[kcratndpffdnbopd]wocybndplnotqgctr[ymceqbtulsezvftsi]eggtzhqojksdjapnv
+lzihlroqvmeohnun[wskcytlimfagjyd]tnehibbupupuhepqz[hschjdjtzbvavum]zstmglsltkovvckpmqr
+syzoikkgzplleoaz[ccpsffhupzpuhjcw]kaswkcoyhlrayhikme[qnjnztjupvbwyns]ggmkqikeziailzpuv[ugqgbpunztgvsxsp]mntxaumliefzkpnia
+dxnkgspqhyejogxstsk[jfgckouqypxttst]axtisjbtaviwafh
+baxazxlkzlyzvbdvtlc[yhegkwrrluxcnaahyl]nyegiipdjrnjobyjp[ulhbizabyukfvhmdg]hgmxctzxzewckasi[fuvwuolxkcfdkmtcngk]xvmvoydeiuaeawcz
+bkomgyefwkmwwpsayb[rozknmkljogphrqywyo]vlpasefojmrzbpox[epogjnrjrntbcnzha]okfkagkfyagcszueu[gjpfnuvnazbnqylfm]busunenasatqeieestf
+dwlbzijjdujfhotvj[swplsznswlgnaud]bgedlfxgjbwxekq
+ffjhdorivdezjdb[tqkfrzxthlxadqstmqe]ttmrscyvbrresartqnh[rfztsxgbedcdecgv]qxcsxdqhshsqtjtl
+zwosebsoogknldkh[mkcucbphbvnaqyxjope]aibznttouadentsy[xfucuvnlnchuawcapcq]jqherkgzqodpzydtgu
+xondkuknycfwyenkceu[ugjlxueqtcyhyhni]bbofydvkhtjgxxnyrc[gpnwoarvjltzyhhe]qebolgjnwnstokco
+cygilweroxmbmbmx[hopxissehjarmezawol]exywzaffjuhehvmbm
+nbndomwcaauiluzbg[qjxqxhccqsvtkwm]oazwbouchccdhtrbnbv[vetwfilwgnxxxrhxar]mrbcnwlpciwpizkxj
+xuabbxdwkutpsogcfea[tgetfqpgstsxrokcemk]cbftstsldgcqbxf[vwjejomptmifhdulc]ejeroshnazbwjjzofbe
diff --git a/adventofcode16/data/advent08.txt b/adventofcode16/data/advent08.txt
new file mode 100644 (file)
index 0000000..e6aa6a1
--- /dev/null
@@ -0,0 +1,193 @@
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 5
+rect 4x1
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=0 by 10
+rotate column x=5 by 2
+rotate column x=0 by 1
+rect 9x1
+rotate row y=2 by 5
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 5
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate column x=40 by 1
+rotate column x=27 by 1
+rotate column x=22 by 1
+rotate column x=17 by 1
+rotate column x=12 by 1
+rotate column x=7 by 1
+rotate column x=2 by 1
+rotate row y=2 by 5
+rotate row y=1 by 3
+rotate row y=0 by 5
+rect 1x3
+rotate row y=2 by 10
+rotate row y=1 by 7
+rotate row y=0 by 2
+rotate column x=3 by 2
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 5
+rotate row y=1 by 3
+rotate row y=0 by 3
+rect 1x3
+rotate column x=45 by 1
+rotate row y=2 by 7
+rotate row y=1 by 10
+rotate row y=0 by 2
+rotate column x=3 by 1
+rotate column x=2 by 2
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 13
+rotate row y=0 by 5
+rotate column x=3 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=3 by 10
+rotate row y=2 by 10
+rotate row y=0 by 5
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=3 by 8
+rotate row y=0 by 5
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=3 by 17
+rotate row y=2 by 20
+rotate row y=0 by 15
+rotate column x=13 by 1
+rotate column x=12 by 3
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 2
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 2
+rotate column x=0 by 1
+rect 14x1
+rotate row y=1 by 47
+rotate column x=9 by 1
+rotate column x=4 by 1
+rotate row y=3 by 3
+rotate row y=2 by 10
+rotate row y=1 by 8
+rotate row y=0 by 5
+rotate column x=2 by 2
+rotate column x=0 by 2
+rect 3x2
+rotate row y=3 by 12
+rotate row y=2 by 10
+rotate row y=0 by 10
+rotate column x=8 by 1
+rotate column x=7 by 3
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate row y=0 by 20
+rotate column x=46 by 1
+rotate row y=4 by 17
+rotate row y=3 by 10
+rotate row y=2 by 10
+rotate row y=1 by 5
+rotate column x=8 by 1
+rotate column x=7 by 1
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 2
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate column x=32 by 4
+rotate row y=4 by 33
+rotate row y=3 by 5
+rotate row y=2 by 15
+rotate row y=0 by 15
+rotate column x=13 by 1
+rotate column x=12 by 3
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 2
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 14x1
+rotate column x=39 by 3
+rotate column x=35 by 4
+rotate column x=20 by 4
+rotate column x=19 by 3
+rotate column x=10 by 4
+rotate column x=9 by 3
+rotate column x=8 by 3
+rotate column x=5 by 4
+rotate column x=4 by 3
+rotate row y=5 by 5
+rotate row y=4 by 5
+rotate row y=3 by 33
+rotate row y=1 by 30
+rotate column x=48 by 1
+rotate column x=47 by 5
+rotate column x=46 by 5
+rotate column x=45 by 1
+rotate column x=43 by 1
+rotate column x=38 by 3
+rotate column x=37 by 3
+rotate column x=36 by 5
+rotate column x=35 by 1
+rotate column x=33 by 1
+rotate column x=32 by 5
+rotate column x=31 by 5
+rotate column x=30 by 1
+rotate column x=23 by 4
+rotate column x=22 by 3
+rotate column x=21 by 3
+rotate column x=20 by 1
+rotate column x=12 by 2
+rotate column x=11 by 2
+rotate column x=3 by 5
+rotate column x=2 by 5
+rotate column x=1 by 3
+rotate column x=0 by 4
diff --git a/adventofcode16/data/advent09.txt b/adventofcode16/data/advent09.txt
new file mode 100644 (file)
index 0000000..3ccde78
--- /dev/null
@@ -0,0 +1 @@
+ORNXNQJQ(151x7)(5x9)OFIXU(27x3)(21x9)VDCYQELDJQUAFZUHFZVSU(34x15)(12x10)SEDIUUVFPEKY(3x9)NHR(1x11)I(15x6)(9x13)CMNDUYGYR(40x6)(4x7)RMNG(25x8)XPDSEYNCWFQFAKUMITWMBLMIK(7x11)(1x10)N(109x1)(101x15)(28x15)DYKYFCKDLFYAIHXSOAZKTPCPBUTX(18x13)SOZMWOSIQHVNMRZYYM(1x4)W(11x2)AJPKYMFRDJZ(11x11)SYIQBGHBNJL(26x9)(20x7)XLNTFHRYHLOYBBGMRPDH(269x4)(2x9)ZG(79x7)(24x3)UBTEBZLPYEDFINUQEQZUSXWY(3x5)IUH(15x10)LDDUEEJAWVGNRYA(3x5)FAO(6x3)ORDEIO(47x2)(1x10)J(2x13)DW(1x8)V(19x14)IJAAZPPGBZPFERJGOYI(103x9)(60x11)GKYOEUBZWAFDXEGWMPXZEOAQCUFCTJCXROPMNEFMJUWGBOUZRAXKRNHTBXHM(15x15)BTYXPHOQZXSBUVT(9x8)JQLNIDKMH(9x5)(4x4)BQRL(4207x15)(1464x12)(305x10)(159x14)(71x12)(24x14)(9x1)UJXIVHSUD(4x15)MAWK(26x15)(19x15)YFYDUJPUZQCKGVPOXKD(2x1)HN(2x6)GH(20x14)INJNODCLPWICQFIERROI(3x11)JUA(31x14)IUDVEHRATPGIEGELRDOZMBKZQFONCBD(130x14)(28x15)(22x7)(5x11)PHVKR(5x10)KVTDO(88x12)(8x12)POLKYDEX(27x8)(9x14)APMRPIHKQ(6x11)QTLLQU(1x4)R(29x3)(4x8)WBRL(2x15)JU(1x6)Y(1x2)U(1143x9)(364x14)(262x7)(6x9)EEJMXK(100x12)(5x1)RXXSO(5x2)VTESR(6x2)SXXSZL(49x1)OFIFQJKSCOXPXTHVWCUJVQMDBQELBLDYRKIGKHOEWRFNXNRLF(9x1)XRUFFMDVM(29x5)(3x8)VPW(6x3)WWFWRC(5x7)XMJEJ(46x9)ZBWGRECVBOPHVFQYBPOBHTPOMTYQGVZKQMKYEHCJYSNRQY(50x1)(10x5)SFPYPPQKDO(27x10)DNMTTNUGOQNAQLRBKDLNRVGRMLJ(23x12)(10x7)LCQWCIMTSV(1x12)X(15x9)JMJMKCIELUBETER(38x7)KWZVVWPBHKSBWMQWBJKCRHLIEHZSQBRAEOBRHE(130x13)(123x7)(75x10)(9x2)NUSXXITCS(11x2)JWHCFBJNEYD(10x1)QJNBNHNNDF(5x5)RWBYJ(11x10)GRRSDLTEZAW(35x9)EYHPPDLIWUITRPLKHXFBCUIQZZMYCDKWPNX(326x11)(130x1)(76x9)(9x10)TBCYBWJLT(4x8)HTQB(35x8)FUCOLJQAFSWAYTACMFRACVWDLZYRGSUMZAY(5x15)ZWHCN(17x14)CRUBDKGWUQCGGAIOS(10x7)(4x12)RWFL(3x9)TFR(27x13)(1x7)R(2x14)VY(8x2)DZMFRMGO(94x11)(61x15)(1x14)O(25x14)IKECWOPRWQBVRNEDQXWFMVBOI(15x10)QVTWMBNCISLOBJR(20x1)FIVILFBNIPNRXAWXGAMJ(32x8)LNPRYYKSLCXOEXFWZKAXERCQKDACFNYA(10x1)(4x14)WRAN(292x2)(168x7)(10x8)HQSTVLQCNK(89x4)(9x11)XCBGNGENA(22x5)BLUEARYFSAVBWTDGVHYWZP(21x12)KGRSTMCVPYJXIJWXVXREW(12x5)NKTUQMXCLFNL(17x10)UPUPBQDSHOXKHLGCR(10x12)ALIFHIZXQV(10x1)KEFBFHAOCG(100x2)(9x4)(4x9)MKGZ(80x5)(20x3)DQCKBWWUZDJICWUESBKY(14x9)EFXIDIWRKZTVUM(6x15)JRDKSE(2x14)AA(9x9)MJFTTZMTW(5x3)VLDNV(411x4)(397x1)(390x8)(46x4)(18x7)BLBFCJNGQWPSJGPOVU(16x7)(10x2)FFZWESCTXC(6x3)EUNIDH(56x14)(28x5)(2x8)CJ(2x1)EA(9x9)FLKGEMFED(10x9)OLOMVPKTRZ(1x5)R(202x5)(88x9)(6x3)VRZHGK(20x12)KKZGPZHKVMLDUKNRPDLL(7x2)CBDBTRO(3x15)XPR(23x3)EHEWCFLEUPCSTSISPKGXIMK(32x5)(16x12)KENYBOSVRILLLTVM(3x14)DYH(19x4)(7x8)FGHRXWB(1x15)E(39x8)(9x11)XRLWASPXI(17x10)RNFIHAQMBBELSLNCT(49x1)(36x4)(18x2)QKRMYMDFPSVDXUXXCH(7x3)SBFHWUF(2x6)BD(2x6)HN(1047x3)(450x2)(10x4)YQQDOELWCI(48x15)(25x7)(8x5)KUKZDUYU(7x6)(2x1)KQ(1x4)K(6x3)INDERJ(284x5)(92x7)(86x4)(13x1)PSVECPHBPYEPJ(3x15)JEY(35x8)RCTZOHPJAICRPRVAYZZLUKRZPOOPFCBCPAQ(4x9)TETC(2x11)ZV(179x5)(95x6)(8x9)HUGVMXOT(9x10)MFDYGPUWF(12x2)PSBNZPCWSANA(6x1)GICWEI(32x9)JCBCGJIMZTQUSVQDRHWMSYJYUHJIVYIV(71x13)(15x3)SXTGVVIWXDWZTZO(9x2)RASQPEQUN(7x10)TPHSDTV(7x15)EPAHSDZ(5x6)BIOZT(7x4)KYMJLYA(69x11)(63x5)(3x9)XSS(37x9)HTZKRPESNZRIWPGWAPHBOIOWAWFHWMIXWYQQC(7x6)(2x1)FA(273x3)(245x12)(39x9)(8x13)WCKBPVRZ(18x10)(11x10)VHBAIPPIWXD(2x3)XD(1x11)Q(6x15)WCPPQC(167x1)(23x15)DYHQGULKPISILTRIXNEJZAV(65x12)(2x9)FZ(14x9)WWCTYVLVAOZDAG(15x11)CZYGTNAELLIRKYW(10x6)IEXFBJJCLQ(42x4)(9x14)XRPJHVVME(6x8)XAVNCD(10x9)IBVGVWIFUD(11x7)(6x6)LSMIRR(14x4)LFACCTXVWLEDWE(287x5)(280x2)(273x1)(7x14)(1x15)U(109x12)(7x1)TPNMYVS(46x8)TWTINTRPDOQKPDPZNKXIVISRQTZODBXMSPPZKCQFAYCJCS(5x11)AKNKA(18x14)DKSKSQUAUTPZPNHIWP(4x7)DOMY(56x3)(6x6)JBJORX(7x11)IDJWUCZ(26x1)XMRHHVJEZBAIOCBKTLKEWRQHWR(46x3)(6x8)JDOJMU(5x6)ELYWH(1x1)M(1x13)Y(7x9)XRTOLWT(22x11)PXZRLOPHTRSXFEGYCCCKOZ(1x6)I(4x11)OPMW(2x11)ET(1244x13)(8x9)(3x8)ABP(1x13)B(188x1)(6x9)(1x5)H(161x8)(115x15)(15x6)(4x8)YQCB(1x1)L(73x9)(2x15)GX(25x4)NTANLQJGDHTCOIRAFZAKXQHVB(1x3)R(10x5)VDXVAGTAGQ(7x3)NKCTQVK(3x9)RRQ(1x15)C(31x15)(1x2)G(19x2)OAUAOISPSPTMKOGJEAV(4x1)DQTV(229x5)(2x4)EP(124x5)(117x6)(109x14)(16x14)UDUBGHIWRGGHYVJU(2x1)DG(7x14)XZCOKGR(4x15)XDVD(49x10)HIHUJRXURZHGHWJMFTGUQUBGCJVLZSGLDIANTUIKYZWXHMAZY(84x14)(6x15)IEUICQ(13x5)HXIRLHFWXDSIB(2x13)XU(39x4)(25x10)(11x14)MWHAQQMPPVR(1x13)R(2x9)UL(786x5)(38x10)(1x12)S(25x9)RRXFLAJRHOUZPDTBWKIZHUNGA(471x12)(54x8)(34x14)VJZSILTGZWMCZLOJSZHTQVVAZSPWHAKVFO(8x3)XCYTBHDX(221x9)(60x1)(1x2)M(17x13)PIRWGCEZQNSPPUBHK(23x10)YJEVBSPQYKPLPDOSCEHYSSA(78x12)(2x6)YY(21x5)TMWGVWVOZDOFGCFEZJRJR(32x5)ENWXNGFHIYQHCBWQEDTMBOWQKJIHAZHY(1x1)E(18x9)(2x1)OD(5x11)GGATR(32x11)(13x9)VZVAFSADAUIGI(8x2)JOUUXRCU(1x11)I(8x7)(3x8)PCV(75x3)(46x4)(28x9)PJXDTVYIRKASKJMXDIGAXSQPMPWK(6x11)SUYPHC(4x13)CBMV(8x7)QAUWLDLP(83x8)(19x7)DDNWFTSHJSTPWECIXWZ(6x5)EQWGSJ(1x5)O(20x6)(13x10)MNFVFUCESZDMF(9x15)(4x3)JZSU(7x12)(2x9)UZ(228x2)(220x15)(49x2)(1x10)C(5x9)TCPJZ(6x7)FJSPSS(4x14)FYQF(5x15)XBWKH(75x10)(5x15)KTHBO(12x5)LLZEFONZKCBI(28x5)RGMNFEEHBHZJKTMPVEPHIOJUXOMB(7x9)YWTZNCT(60x14)(3x10)DAN(15x6)BHOSLMFSEQKOGEX(1x4)D(17x11)SULIDVKKLXIWAJXRK(2x7)PX(4x1)TKPO(9x8)QFXUEZUGP(2331x2)(2323x8)(202x13)(10x13)(4x14)GFSR(178x4)(101x11)(21x9)(5x9)SWRRL(6x8)TYXYPJ(68x5)(4x10)QMJZ(19x15)APBTUGYPJQFQODZRNAC(5x13)YIVAO(14x14)QHWPZNQSRZJIEC(63x2)(32x10)(5x4)EVMQL(15x12)SAOYGPDXFSDOBTB(6x8)(1x5)C(7x13)MILUDKF(144x5)(3x8)PLQ(129x7)(27x3)(7x13)QLVZTAJ(9x4)JNLNRKPXA(4x13)EEXX(17x9)(11x9)SYQBWQASJPK(57x8)(29x8)(15x11)CFVXGJKXAAKNRRT(1x15)A(1x4)C(10x5)EFFLNXDEVJ(664x6)(357x6)(82x8)(7x12)LPCKKIX(55x10)(6x4)KXJNIR(2x4)IH(5x6)VIUMV(11x10)TCNXEQRMQJZ(4x7)DREZ(2x8)IV(119x7)(21x13)RHDEMDBNRPLOTSZRKZSHA(47x2)(22x2)ZADHZNUARPTFHKEXJKCWXY(7x6)OACRTYP(1x15)P(31x10)(5x4)VSWJT(7x1)IGAMFHI(4x3)GOCU(26x5)(19x13)(12x15)WGYBKVRPMWJT(15x7)IFUICWKGGCLHCOO(83x12)(62x8)(20x10)TJBGZCIWVKOROYITLBUA(7x11)UDSMGLK(6x3)FWPTWW(6x4)JECWEE(9x13)CUQMJOFWT(292x11)(68x14)(61x13)(28x10)ZRYXMSXXTLGDYHOVDRDVOCFJTCXJ(20x7)HZCFVXJATHXTNPHWFSIS(65x4)(11x6)BETMULBEIND(3x11)VLU(25x5)UYRFOHJXRRSJXEFEOPROCVNOA(3x4)GQJ(95x8)(81x11)(30x12)FXPGOAGXMVWAMAKJTQKJEUZNGCKDXU(10x5)YFDYGXCFTD(10x5)USWAFQFFSA(6x10)ZFVKMB(2x8)SF(16x8)MZPGUBATXFXXJOJS(17x4)AJTTIOULZONRGGMLK(448x2)(28x11)(22x2)(8x13)(3x1)TMQ(2x13)IP(5x6)AJJXN(290x1)(109x10)(5x12)CUMMS(7x7)UEWYDSN(59x12)(2x12)FP(26x3)LWFPYEPAANDDLIOJQBYCRRQYRT(1x2)O(7x10)RXDHAJH(14x6)(9x6)PQLSJTFAO(124x4)(56x12)(12x10)DOOJHOYDOTLM(10x7)VKUFQDGCPT(6x9)ONBPUY(5x5)CMPUW(5x13)WWWWM(16x9)TOPYYTZBFGFAXYBO(14x15)(8x10)FPVBQPNJ(1x15)O(18x1)UTQYAKMVOBJZDLTOVO(12x3)YHILDGGCGZXZ(20x7)(13x15)RVSYRCEYESCUC(73x10)(21x5)(15x4)EHQBVPUAJWTOZKA(22x12)FIWIHPWFDOJTMAXRCKCJZE(11x5)(5x15)PDHSQ(828x13)(1x8)P(161x8)(154x4)(11x3)DAFIIEMOBYZ(6x1)EGJWXU(107x7)(13x2)SRTDQRBOGITPI(6x2)VWSTKU(23x5)GJXMEBCGSIYQNMFLISIUFTB(1x2)D(36x8)GKPPJHVMOOTOCTUHRGVVQUKNHRCZNINYLJGB(6x11)EFSGDL(327x12)(6x2)QAAXCM(5x9)YVLGN(86x1)(10x1)SVFCLDTQEO(2x4)OA(17x15)OAEGSJHUTEFJXDOTD(7x7)HGXVBHJ(20x15)(2x6)XQ(8x5)KDXCQOFM(90x11)(14x15)(9x9)DTJSQPKYW(25x7)(12x11)SYLBSZEMQSQA(1x3)S(11x2)(5x13)KWHSE(4x7)MFSC(7x6)(1x12)F(110x2)(10x1)UIIOJNJJJI(88x8)(10x10)PQCUFWXHMC(15x12)OVVASAWDIIOZYIT(17x3)NLLLZIVNOIVEHGXDP(19x11)CDJEUHEPCUEYVLGYLTJ(311x11)(165x1)(16x7)MUMPDQFLGFEGIYLU(9x11)(3x11)FNP(1x14)U(60x4)(4x7)KDWX(4x1)LKMS(27x11)MIELWFKZJUSUYBARAGTJAZIBEDH(3x1)LDI(48x15)(10x15)DUUYAIZHKY(5x8)KEMNC(14x10)HZTAHRSCICOTIR(4x13)AUNU(45x2)FRDBNRZYFZLCAIEVZWSAIMLGBCDSBHXFPWRPYJRQHNWUZ(28x8)TCHELUEWWRHMIGBKEUCWBTIEVNCB(37x10)(30x11)(6x9)PLWKRH(2x3)PL(7x2)MAFSJHV(6697x8)(172x15)(164x10)(1x9)N(151x2)(7x2)MOYJQSA(24x4)BSZRAIBTDPFAAHQWOWDJJRCW(34x10)(2x15)QB(1x1)T(4x3)ALVX(6x7)SQFSKZ(2x11)JX(54x2)(47x14)(6x12)HOALAK(28x10)DGCVKLTWNKGAGRGSWPVEUGRDAGWA(2577x12)(88x14)(82x9)(48x2)(41x11)(4x5)KAVK(15x4)LCMPETDQZUWBRCL(6x9)CFZJGS(7x15)PGVNKAY(9x12)(4x4)NHID(827x3)(259x9)(153x12)(27x11)(21x4)PQNSUYEFBRAAVCJFJPPGZ(13x4)(7x10)NNSUBSG(70x11)LOGUFNQNLSWWQXBPQIWNJIEDRFUCRCUAVANHFGDEMQZRGSITBSBLZXVWJGXPPDZEXZQCEU(7x10)DTIEEXA(4x13)DDNZ(44x13)(37x14)(8x14)NIJOMVGP(17x1)MDXVVVWIZSXMSGJMC(4x4)ARFY(31x11)(10x14)RVZUREXEUI(1x7)M(3x5)LXC(170x5)(114x3)(83x3)(19x10)UUCHMGESOOTJCTEJVRM(3x5)ZCP(2x10)IU(25x6)TNLNLUTXNPNDWMXGVVGIPVWJL(4x12)JAAA(13x1)UFQFFPMZGZNNN(1x1)V(27x5)EDPBYCEAMMWAIPWUZODVDAWPWIJ(10x1)(4x10)VJHN(73x13)(66x12)(5x1)TAFQR(11x5)(6x8)ATBQTY(5x8)KZYJI(23x1)(17x3)VSDOKMWKSGRRIRXWF(297x5)(11x6)HTGQDOGJQSJ(49x13)(43x1)(8x5)ULVVUCJI(6x11)JAITVW(12x3)ISRQLAPACLXU(25x2)(19x7)(13x2)SRBHDIAPWUMER(51x9)(45x1)(8x9)ADOZRIJD(13x15)JXWDDHBYCJKMO(6x10)SKLMKL(129x8)(111x2)(5x10)ATJGD(22x6)OLATWNGTXFJMTWCJQAQDDA(19x1)WLYAFVAKQECTNXJRBVH(20x11)DDWDXGQEZBKJBDJBAKJB(14x5)TIZKGCXPPUBGSJ(5x14)SEHYY(1410x15)(148x5)(24x2)FHQUELWXQDUWLIBTXEPSQTJQ(111x3)(40x13)(6x7)ZAWWAD(2x15)GI(3x6)XJY(7x14)SCZWIKT(10x1)WMCTELCITD(15x12)(2x8)OD(3x3)IKM(12x2)(7x4)BEEDJSC(2x15)SZ(303x5)(89x2)(70x4)(3x7)ATQ(9x4)WSWYIUPAG(12x8)KDWAUNHURPWB(3x15)ESP(15x7)DANNZUDKDFXXSBO(7x12)VUNUHBI(1x8)M(180x9)(66x1)(20x12)MOUJOXCMCZUPVKVXPKUB(27x5)QHNMIHMVJVBBVCDGHPYOWRHTCLT(1x8)Q(22x13)ADGXYCQHWNAGCLWNPXBPIX(73x9)(1x11)J(27x14)ANTTYLYVSVWEAPXPGRRVWVINHFM(7x10)ZDBZWVE(3x12)ISL(5x4)YDXBZ(9x14)XBPBWAQTR(407x3)(186x1)(36x10)(1x2)W(23x13)DBNCARJKKIAWVQVKNOIPSJO(57x2)(6x9)VKZMPB(3x2)JIZ(22x2)AQWQZQOKXLPZSJTNBJKCXL(4x12)OAOJ(8x8)(2x10)PT(29x3)BKPFZBRCXVJUJJHVOIMJELFFHHBUR(26x5)WUACSRCIRADIQKCXKEESRJNWKU(10x9)RBSMRSUWMK(177x3)(1x10)Q(28x8)(5x5)PQQGD(6x13)LAGOEK(1x5)C(71x13)(16x12)IIAWONMLGHMCHWIH(19x11)KEYESARBBXHWWQWPQVC(1x11)A(9x12)LMADFIHXJ(6x5)MZVRQU(40x12)TOSAJVXJHKVWJKLTVBIUKKESOFCKFOPSXHYCMDXQ(8x15)XGHEISVJ(68x5)(62x3)(4x7)OOWZ(7x15)QNNVWUX(5x10)GSLOA(14x8)(1x8)B(3x3)HJL(3x11)EIK(450x6)(101x9)(30x8)(2x5)MM(17x8)GHTHOCTDDQAYBUVWP(59x8)(1x5)R(3x11)HYR(21x2)STLZXNENUFTGYWNQJHFUK(10x10)NGMEAWPFBI(28x3)LNDWFXKPRAOWKJHWZZIYLJLOOBKK(110x6)(14x2)SALGMMEIINEJOU(40x7)(4x13)AIMA(5x12)GSAFV(13x7)CSLJJRZIBBUMF(21x1)(15x9)THPSZDCPWASRUYR(2x5)EE(5x7)XDUPK(13x10)(7x13)SFWIYYQ(163x10)(26x15)(13x9)HQJQXZQCIHSAE(1x15)K(4x15)FMWB(9x12)SQVQTEWMD(41x3)(13x1)EEYHHJQCDSYRO(9x2)YCDDFHWTG(3x9)LGW(51x12)(7x14)OITBFQF(8x13)FZVMIWUM(9x8)XTZCNFOTE(4x15)KTHY(221x10)(213x14)(32x3)(26x3)GEUNPCYFYLTFFXOKWXFBDYLBMK(77x1)(41x14)(7x11)XBMCCZD(21x11)KFOJGBJCEHPTKBLUSTERX(10x4)IZWNLBDABA(8x3)IVDWYIMO(50x9)(6x5)(1x1)H(4x8)VDKE(2x5)QE(17x3)(11x7)KGYMJEMQVWS(9x4)EVWJYLBBQ(16x8)XZDDQZQPCOLVIYGD(3001x2)(724x14)(235x12)(227x11)(25x5)(1x10)N(3x4)QSO(5x3)XPKCV(24x8)(11x10)XXOIOGOKIOD(1x8)B(88x4)(1x12)I(10x6)CEIKKPKUJG(1x11)Y(6x8)QAYNKJ(41x7)BGKQCYZZGRQGCNXSGYHAXMWIJOPDKLMAQRKGFRBML(66x9)(14x12)YTKTEIISOWYZWB(3x13)UDK(12x2)PXDYSSCHAFSE(2x2)DA(6x1)UZSORT(309x1)(107x1)(81x11)(23x4)UHLCPASWMUWBQPYJSUHUFEO(5x1)NTMAV(26x7)JDNTOBRNEUELJIISZGKNRYSBRE(4x10)FVKZ(13x8)SBNXXTKLMDHII(138x4)(62x12)(55x12)OMRRSQWFPEAXAXHFHHQBWGCESBLWZBVYEQQKYRGILBNJJCAOXFHDIXU(19x13)(4x5)CVBF(5x9)EBLEV(15x1)(9x13)BATHCHMGP(16x1)BGSXRPQUKQJYDIPV(44x3)(8x1)(3x1)EWQ(7x12)JJIVUYJ(12x7)XJSYYYTSZBHD(7x14)EDHTGLH(144x13)(130x4)(12x7)(6x14)CYDLYL(43x2)(4x10)DOTG(4x8)ELJI(6x6)QGMRSQ(1x4)K(2x9)GS(40x2)(11x10)CDHAMRCSTVC(8x11)WMZDTRTD(2x14)XS(11x4)IXUNDJVBLSO(2x3)CH(7x7)(2x5)NF(1015x9)(204x1)(20x10)GPKSBZZRRZGMFICXNMIX(141x9)(24x9)NXNCFLIWVVVQNVKDRUTQYNJB(3x8)AXD(33x6)MDGPOLEPZEUNBDWGBSAFRPEMTKUXIJDRA(33x11)(2x15)PY(5x1)XYUAI(9x14)UPOUZTFRQ(17x10)YAMBZLTZMBSRFZOUK(5x10)NXKJE(11x15)GNJTBTSXLTN(299x9)(29x1)(22x10)(5x13)FSAYZ(5x14)MWJOX(178x9)(79x14)(21x12)WXTCOEECSKHDITBOAAVSF(6x15)INXWKB(8x11)NTSEQSMQ(19x1)UTQUQGUDXSFROLQWKVZ(76x6)(3x2)QOL(10x15)UIGYPYAWRR(7x7)JEELSVH(13x12)RUBSHAXAWQGYF(12x12)PGQUXPKEKXRN(4x15)BQEB(8x4)(3x1)AVE(59x15)(11x11)QGBFDCZTADF(22x8)(7x7)RJEZNHA(4x11)MMJN(8x7)(3x7)GNT(174x1)(166x12)(17x2)ZDOBQSATWXMNNJDCV(17x13)(10x14)CATNORVTYK(95x10)(9x5)LROSBZBVM(29x2)ZQBDHDVQJGZTGKDBOSHXOCVXYOSKC(22x11)FXLGIAQRSIJQCGUQPFJXFM(3x8)HSE(3x11)JVV(11x2)(6x7)YCATPH(206x5)(133x6)(31x8)(8x5)YTYSRRBZ(4x13)UYBY(3x6)SJW(32x4)ZCNRDWQGEMLBOCMJMCAJJVJPLIQXSTSG(52x3)(12x10)ENCLYDJSGEYW(13x15)EXRYDALLRZKCF(8x1)RIVKPAAB(8x14)GUSBQGHU(46x2)(1x5)P(34x8)(16x3)GDVLVDXNKOCDWQJI(6x15)YGGNZJ(98x6)(91x10)(11x5)RVKZVECGFPV(8x12)(3x7)URB(54x1)(11x12)JPMMFXPJPMQ(5x1)ZKRGP(19x13)ZJIYXFENCFNAFOEFUNL(1225x12)(534x15)(214x13)(64x15)(5x7)PZQBH(25x10)XSZONMJVANCJZOJPAAEJSRYGT(16x5)PQPCLAYGZUDSQKTZ(83x8)(40x6)ZKUMBQGMGPGEAKSJHFSIPNWEKXZEHBJUUSCVWYMY(10x5)CMXYJOWZZN(6x1)WPARZQ(4x14)FAYY(16x1)(1x11)E(3x12)MLF(25x11)(3x8)BRT(10x14)OGKXRSWWPD(4x1)VFBM(227x12)(150x2)(25x10)YFBSVADMLPNYAIXAPMBRZPTCO(8x14)PKGEMLYV(50x10)DKUPPNRQKKWAJIQCFKGQVRSXTUWPVNQZESPGLNQWMVMAOCORMP(9x6)HVKQYKZAH(26x10)RQQPTHCFQFHIBMEATIAVVKWDWG(57x9)(8x10)QVILTCPK(36x13)LUDTUSNBRJNJCTXOFFMWIMAMWBKXHMMENNSW(2x7)ZQ(62x5)(25x8)(5x15)GCZUZ(9x1)JPDRQMLTB(24x13)YTTGOHFCVHRRGLESEARVNFPQ(178x5)(42x2)(21x15)(8x5)RPZICSEL(3x4)YIL(8x13)(2x11)GF(84x11)(70x2)(7x5)MWWDPMK(7x11)TEYJOFJ(31x1)TWNBXEDRILLPRUGJDBIVBFYNVHGLUED(3x8)VDU(3x9)YYV(7x4)(1x12)L(21x1)(1x4)M(1x8)J(4x3)XJGN(491x9)(148x8)(36x3)(2x9)MG(13x11)EDWPZURXZWLML(4x1)VRBX(31x11)(14x8)KBLQBMRGRGKHCT(5x14)PRDLH(3x8)CQB(32x15)(10x15)RLWBNSAEHH(3x3)HPB(2x2)PA(15x2)TKPIZXDBJJMAZDR(133x8)(1x6)B(83x8)(13x10)WNSKNXUSTCDKE(4x8)NMAW(6x6)EJRNHD(4x14)MLJN(27x5)ZQBFSJWECOPVETZPGXQJPPDQZEL(22x1)(16x1)ZSEPLZISVDFRGRJB(4x13)YRXG(39x2)(33x7)(16x9)HMRXYWRBVITBVWTG(6x2)LCYRSW(123x13)(31x12)WVTWWQZUYGBJOSPKLUQTAGWXXURUDLI(34x10)(7x5)ZTTMEQS(2x8)YX(9x13)ROIYTCKSX(28x13)(3x9)WPV(13x14)PQHWCFNXKFFOH(3x15)EUZ(14x7)(8x15)UHHVOLEJ(914x15)(782x12)(448x5)(118x6)(26x12)(4x12)BLTT(10x2)REYZXYJJFQ(39x8)(8x6)XEWKRGZT(3x8)ECB(5x9)GOBWQ(3x2)KKM(34x7)(18x11)QSQRCJXLCKUYJBPSWG(4x9)XOSJ(34x5)CIABSNSBNQQKAARJOOETKSXJIPOFQOMAPK(24x13)(3x7)ADL(10x3)RVSLAIXAJJ(67x7)(52x9)(3x2)AJH(3x6)OGK(4x9)SQFL(1x1)T(14x14)BQZZXEWSTOKEUA(3x13)HBM(171x14)(25x9)YKLMFOEYQHSODISORNEKDIGVY(12x6)(6x13)OFJBKW(53x7)(21x11)GINJQDIXMAWRHIHJLXFIP(19x8)SVTFKYTLPWYEWWFIUPB(16x12)(2x1)PB(4x8)TMWZ(33x15)(5x3)QBMUH(10x5)UHNESLDFMY(2x4)WW(9x2)(4x7)QTKW(94x10)(47x10)UUVWDQXOXQUFEROVLOZRXIHEPHTWRPSGHLNSYGNIVHEDQGV(34x3)(21x4)(7x9)IMCZEIB(4x2)TNMA(2x9)DM(192x6)(2x7)ZF(2x3)VU(6x13)DODXJG(158x15)(1x4)K(42x12)(2x8)RM(4x6)YMIM(5x2)BXKIG(10x1)ZWQMIAOBEY(78x8)(7x1)XHAETJV(28x1)QPKULGVENLMJWWEHOROJEESLKYTA(3x5)XMZ(18x1)FZBLVDOKGEZKOBICEO(13x9)MWICPPUEWVWKH(7x10)KVNGSWM(116x10)(26x3)(20x8)(8x12)SSVBYWJX(1x9)H(77x14)(12x3)OWHWKICESREK(1x11)D(46x3)(11x5)(5x15)ORJRA(1x13)K(16x3)XRJXBYVIUITRPPYRRNHU
diff --git a/adventofcode16/data/advent10-test.txt b/adventofcode16/data/advent10-test.txt
new file mode 100644 (file)
index 0000000..e9ad2b4
--- /dev/null
@@ -0,0 +1,6 @@
+value 5 goes to bot 2
+bot 2 gives low to bot 1 and high to bot 0
+value 3 goes to bot 1
+bot 1 gives low to output 1 and high to bot 0
+bot 0 gives low to output 2 and high to output 0
+value 2 goes to bot 2
diff --git a/adventofcode16/data/advent10.txt b/adventofcode16/data/advent10.txt
new file mode 100644 (file)
index 0000000..bcede34
--- /dev/null
@@ -0,0 +1,231 @@
+bot 123 gives low to bot 191 and high to bot 162
+bot 191 gives low to output 9 and high to bot 192
+bot 182 gives low to bot 175 and high to bot 196
+bot 113 gives low to bot 172 and high to bot 94
+bot 78 gives low to bot 37 and high to bot 25
+bot 187 gives low to bot 125 and high to bot 45
+bot 71 gives low to bot 108 and high to bot 61
+bot 154 gives low to bot 2 and high to bot 64
+bot 142 gives low to bot 110 and high to bot 163
+bot 109 gives low to output 0 and high to bot 43
+bot 198 gives low to bot 101 and high to bot 52
+bot 138 gives low to bot 9 and high to bot 47
+value 5 goes to bot 189
+bot 179 gives low to bot 176 and high to bot 14
+bot 115 gives low to bot 82 and high to bot 181
+bot 101 gives low to bot 90 and high to bot 5
+bot 9 gives low to output 5 and high to bot 149
+bot 181 gives low to bot 0 and high to bot 27
+bot 119 gives low to bot 207 and high to bot 65
+bot 202 gives low to bot 69 and high to bot 154
+bot 100 gives low to bot 206 and high to bot 169
+bot 72 gives low to bot 205 and high to bot 12
+bot 146 gives low to bot 8 and high to bot 106
+bot 58 gives low to bot 180 and high to bot 123
+value 37 goes to bot 1
+value 61 goes to bot 144
+bot 205 gives low to bot 169 and high to bot 3
+bot 91 gives low to bot 76 and high to bot 84
+bot 93 gives low to bot 122 and high to bot 100
+bot 76 gives low to bot 147 and high to bot 89
+bot 102 gives low to bot 11 and high to bot 23
+bot 43 gives low to output 11 and high to output 12
+bot 128 gives low to bot 15 and high to bot 85
+bot 137 gives low to bot 112 and high to bot 2
+bot 88 gives low to bot 103 and high to bot 55
+bot 162 gives low to bot 192 and high to bot 141
+bot 183 gives low to bot 49 and high to bot 81
+bot 127 gives low to bot 113 and high to bot 207
+value 11 goes to bot 165
+bot 28 gives low to bot 62 and high to bot 42
+bot 95 gives low to bot 42 and high to bot 32
+bot 50 gives low to bot 160 and high to bot 194
+bot 68 gives low to bot 133 and high to bot 142
+bot 20 gives low to bot 208 and high to bot 203
+bot 178 gives low to bot 182 and high to bot 54
+bot 120 gives low to bot 102 and high to bot 99
+bot 131 gives low to bot 67 and high to bot 83
+bot 21 gives low to bot 111 and high to bot 69
+bot 27 gives low to bot 46 and high to bot 193
+bot 98 gives low to bot 63 and high to bot 22
+value 13 goes to bot 7
+bot 121 gives low to bot 155 and high to bot 146
+bot 41 gives low to bot 153 and high to bot 53
+bot 75 gives low to bot 100 and high to bot 205
+value 43 goes to bot 4
+bot 206 gives low to bot 151 and high to bot 77
+bot 0 gives low to bot 95 and high to bot 46
+bot 208 gives low to output 14 and high to bot 126
+bot 40 gives low to bot 187 and high to bot 184
+bot 184 gives low to bot 45 and high to bot 124
+bot 60 gives low to bot 188 and high to bot 202
+value 67 goes to bot 198
+bot 145 gives low to bot 22 and high to bot 108
+bot 197 gives low to bot 195 and high to bot 190
+bot 203 gives low to bot 126 and high to bot 51
+bot 87 gives low to bot 51 and high to bot 179
+bot 64 gives low to bot 128 and high to bot 85
+bot 1 gives low to bot 198 and high to bot 173
+bot 29 gives low to bot 71 and high to bot 168
+bot 47 gives low to bot 149 and high to bot 113
+bot 165 gives low to bot 80 and high to bot 135
+bot 112 gives low to bot 162 and high to bot 174
+bot 149 gives low to output 1 and high to bot 172
+value 41 goes to bot 80
+bot 5 gives low to bot 136 and high to bot 62
+bot 143 gives low to bot 97 and high to bot 41
+bot 86 gives low to bot 145 and high to bot 71
+value 59 goes to bot 147
+bot 57 gives low to bot 30 and high to bot 188
+bot 36 gives low to bot 150 and high to bot 30
+bot 135 gives low to bot 44 and high to bot 117
+bot 134 gives low to bot 16 and high to bot 35
+bot 167 gives low to bot 28 and high to bot 95
+bot 22 gives low to bot 127 and high to bot 119
+bot 26 gives low to bot 81 and high to bot 16
+bot 33 gives low to bot 6 and high to bot 78
+bot 171 gives low to bot 186 and high to bot 17
+bot 16 gives low to bot 96 and high to bot 33
+bot 118 gives low to bot 117 and high to bot 56
+bot 199 gives low to bot 98 and high to bot 145
+bot 188 gives low to bot 21 and high to bot 202
+value 29 goes to bot 164
+bot 169 gives low to bot 77 and high to bot 140
+bot 96 gives low to bot 181 and high to bot 6
+value 71 goes to bot 201
+bot 194 gives low to bot 87 and high to bot 150
+bot 160 gives low to bot 203 and high to bot 87
+bot 15 gives low to bot 158 and high to bot 105
+bot 42 gives low to bot 166 and high to bot 39
+bot 133 gives low to bot 54 and high to bot 110
+value 47 goes to bot 13
+bot 31 gives low to output 8 and high to bot 9
+bot 159 gives low to bot 74 and high to bot 155
+bot 157 gives low to bot 12 and high to bot 187
+bot 176 gives low to bot 139 and high to bot 58
+bot 35 gives low to bot 33 and high to bot 78
+bot 90 gives low to bot 148 and high to bot 136
+bot 122 gives low to bot 70 and high to bot 206
+bot 114 gives low to bot 72 and high to bot 157
+bot 55 gives low to bot 40 and high to bot 184
+bot 37 gives low to bot 193 and high to bot 25
+value 31 goes to bot 13
+bot 107 gives low to bot 99 and high to bot 93
+bot 14 gives low to bot 58 and high to bot 38
+bot 77 gives low to bot 86 and high to bot 29
+bot 116 gives low to bot 79 and high to bot 170
+bot 23 gives low to bot 132 and high to bot 70
+bot 148 gives low to bot 144 and high to bot 120
+bot 195 gives low to bot 170 and high to bot 185
+bot 185 gives low to bot 138 and high to bot 63
+bot 62 gives low to bot 107 and high to bot 166
+bot 174 gives low to bot 141 and high to bot 128
+bot 7 gives low to bot 91 and high to bot 11
+bot 3 gives low to bot 140 and high to bot 34
+bot 12 gives low to bot 3 and high to bot 125
+value 7 goes to bot 148
+bot 70 gives low to bot 161 and high to bot 151
+bot 89 gives low to bot 116 and high to bot 195
+bot 108 gives low to bot 119 and high to bot 204
+bot 201 gives low to bot 1 and high to bot 104
+bot 18 gives low to output 15 and high to bot 208
+bot 66 gives low to bot 177 and high to bot 130
+bot 189 gives low to bot 165 and high to bot 177
+bot 48 gives low to output 13 and high to bot 18
+bot 186 gives low to bot 189 and high to bot 66
+bot 82 gives low to bot 167 and high to bot 0
+bot 92 gives low to bot 201 and high to bot 49
+bot 144 gives low to bot 7 and high to bot 102
+bot 97 gives low to bot 146 and high to bot 153
+bot 104 gives low to bot 173 and high to bot 82
+bot 74 gives low to bot 83 and high to bot 50
+bot 49 gives low to bot 104 and high to bot 115
+bot 172 gives low to output 20 and high to bot 48
+bot 163 gives low to bot 41 and high to bot 53
+bot 117 gives low to bot 26 and high to bot 134
+bot 168 gives low to bot 61 and high to bot 182
+bot 65 gives low to bot 131 and high to bot 74
+bot 180 gives low to output 6 and high to bot 191
+bot 126 gives low to output 19 and high to bot 19
+value 19 goes to bot 186
+bot 166 gives low to bot 93 and high to bot 75
+bot 193 gives low to bot 59 and high to bot 88
+bot 81 gives low to bot 115 and high to bot 96
+bot 207 gives low to bot 94 and high to bot 131
+bot 130 gives low to bot 118 and high to bot 56
+bot 153 gives low to bot 106 and high to bot 152
+value 17 goes to bot 92
+bot 110 gives low to bot 143 and high to bot 163
+bot 192 gives low to output 7 and high to bot 129
+bot 156 gives low to bot 10 and high to bot 68
+bot 83 gives low to bot 20 and high to bot 160
+bot 2 gives low to bot 174 and high to bot 64
+value 23 goes to bot 91
+bot 10 gives low to bot 178 and high to bot 133
+bot 103 gives low to bot 157 and high to bot 40
+bot 61 gives low to bot 204 and high to bot 175
+bot 63 gives low to bot 47 and high to bot 127
+bot 105 gives low to bot 200 and high to bot 24
+bot 79 gives low to output 10 and high to bot 31
+bot 73 gives low to bot 168 and high to bot 178
+bot 19 gives low to output 2 and high to bot 139
+bot 125 gives low to bot 34 and high to bot 156
+bot 56 gives low to bot 134 and high to bot 35
+bot 44 gives low to bot 183 and high to bot 26
+bot 4 gives low to output 3 and high to bot 79
+bot 155 gives low to bot 50 and high to bot 8
+value 73 goes to bot 101
+bot 38 gives low to bot 123 and high to bot 112
+bot 151 gives low to bot 199 and high to bot 86
+bot 17 gives low to bot 66 and high to bot 130
+bot 13 gives low to bot 171 and high to bot 17
+bot 190 gives low to bot 185 and high to bot 98
+bot 161 gives low to bot 190 and high to bot 199
+bot 139 gives low to output 16 and high to bot 180
+bot 99 gives low to bot 23 and high to bot 122
+bot 53 gives low to bot 152 and high to bot 60
+bot 94 gives low to bot 48 and high to bot 67
+bot 132 gives low to bot 197 and high to bot 161
+bot 150 gives low to bot 179 and high to bot 209
+bot 173 gives low to bot 52 and high to bot 167
+bot 45 gives low to bot 156 and high to bot 124
+bot 30 gives low to bot 209 and high to bot 21
+bot 67 gives low to bot 18 and high to bot 20
+bot 84 gives low to bot 89 and high to bot 197
+bot 8 gives low to bot 194 and high to bot 36
+bot 59 gives low to bot 114 and high to bot 103
+bot 209 gives low to bot 14 and high to bot 111
+value 53 goes to bot 76
+bot 69 gives low to bot 137 and high to bot 154
+bot 46 gives low to bot 32 and high to bot 59
+bot 111 gives low to bot 38 and high to bot 137
+bot 196 gives low to bot 121 and high to bot 97
+bot 52 gives low to bot 5 and high to bot 28
+bot 11 gives low to bot 84 and high to bot 132
+bot 204 gives low to bot 65 and high to bot 159
+bot 164 gives low to bot 92 and high to bot 183
+bot 24 gives low to bot 109 and high to bot 43
+value 2 goes to bot 171
+bot 51 gives low to bot 19 and high to bot 176
+bot 136 gives low to bot 120 and high to bot 107
+bot 147 gives low to bot 4 and high to bot 116
+bot 25 gives low to bot 88 and high to bot 55
+bot 129 gives low to output 18 and high to bot 158
+bot 152 gives low to bot 57 and high to bot 60
+bot 39 gives low to bot 75 and high to bot 72
+bot 124 gives low to bot 68 and high to bot 142
+bot 141 gives low to bot 129 and high to bot 15
+bot 85 gives low to bot 105 and high to bot 24
+value 3 goes to bot 90
+bot 80 gives low to bot 164 and high to bot 44
+bot 54 gives low to bot 196 and high to bot 143
+bot 34 gives low to bot 73 and high to bot 10
+bot 175 gives low to bot 159 and high to bot 121
+bot 32 gives low to bot 39 and high to bot 114
+bot 140 gives low to bot 29 and high to bot 73
+bot 200 gives low to output 17 and high to bot 109
+bot 106 gives low to bot 36 and high to bot 57
+bot 177 gives low to bot 135 and high to bot 118
+bot 170 gives low to bot 31 and high to bot 138
+bot 158 gives low to output 4 and high to bot 200
+bot 6 gives low to bot 27 and high to bot 37
diff --git a/adventofcode16/data/advent12.txt b/adventofcode16/data/advent12.txt
new file mode 100644 (file)
index 0000000..538e9ea
--- /dev/null
@@ -0,0 +1,23 @@
+cpy 1 a
+cpy 1 b
+cpy 26 d
+jnz c 2
+jnz 1 5
+cpy 7 c
+inc d
+dec c
+jnz c -2
+cpy a c
+inc a
+dec b
+jnz b -2
+cpy c b
+dec d
+jnz d -6
+cpy 18 c
+cpy 11 d
+inc a
+dec d
+jnz d -2
+dec c
+jnz c -5
diff --git a/adventofcode16/data/advent15.test.txt b/adventofcode16/data/advent15.test.txt
new file mode 100644 (file)
index 0000000..3683605
--- /dev/null
@@ -0,0 +1,3 @@
+Disc #1 has 5 positions; at time=0, it is at position 4.
+Disc #2 has 2 positions; at time=0, it is at position 1.
+
diff --git a/adventofcode16/data/advent15.txt b/adventofcode16/data/advent15.txt
new file mode 100644 (file)
index 0000000..d2463d1
--- /dev/null
@@ -0,0 +1,6 @@
+Disc #1 has 5 positions; at time=0, it is at position 2.
+Disc #2 has 13 positions; at time=0, it is at position 7.
+Disc #3 has 17 positions; at time=0, it is at position 10.
+Disc #4 has 3 positions; at time=0, it is at position 2.
+Disc #5 has 19 positions; at time=0, it is at position 9.
+Disc #6 has 7 positions; at time=0, it is at position 0.
diff --git a/adventofcode16/data/advent20.txt b/adventofcode16/data/advent20.txt
new file mode 100644 (file)
index 0000000..222a0d9
--- /dev/null
@@ -0,0 +1,1029 @@
+1397985562-1399927095
+3833336583-3842601761
+155087348-169525214
+980790001-1002844256
+1977065361-1995466542
+36411396-50881439
+3640866817-3644930814
+2920060305-2932561292
+2865550534-2890593328
+3904139550-3908601694
+732092457-735186747
+1787486182-1806545011
+1491600386-1521258835
+2566773511-2568507598
+2201927929-2217336001
+948934267-952537088
+2146567862-2152339711
+3301828099-3306223909
+476027067-495966189
+2724939184-2726302873
+2270442513-2292973307
+1889038911-1895488302
+1578483230-1586330750
+2640456298-2651236024
+4254290660-4256486512
+1399927096-1421446962
+3253590561-3255525299
+4165315034-4173427102
+2875463797-2888803426
+3656533491-3659451752
+1995466544-2025204494
+3947779886-3987268039
+1521258837-1538635254
+735486056-744123494
+230221149-237996554
+3652971511-3653104884
+3019667516-3024190047
+969642901-977292032
+3645248112-3645595401
+3107902888-3148345903
+3202431537-3216963208
+1220746925-1223070151
+3267241325-3270573499
+903635659-931632639
+2847235008-2856948110
+4224654922-4236958325
+856464812-859836714
+1804748836-1825290046
+4082899236-4091369419
+953634177-954158487
+185823994-190243500
+1964052811-1976412955
+2420916052-2424566745
+953985134-954947310
+2584348542-2614406629
+2191157950-2198152569
+792721019-802271235
+3791161572-3800845341
+1864843815-1865425121
+1974124152-1989195256
+7825290-22939478
+440787397-441318113
+43830518-44800277
+3060173435-3065634268
+3165692093-3169381847
+1833191664-1858547431
+1931833201-1935239219
+57759373-67515020
+4113876528-4114024438
+1942285042-1951328312
+1604942683-1619936021
+853121890-865841853
+1837742103-1838104083
+3653104885-3680835942
+461163769-461467242
+3154277391-3159331043
+1689521647-1696389379
+4132416435-4154260806
+3575213588-3600527150
+962221692-989154668
+1935239220-1964052809
+853763614-856527667
+1529882226-1553729207
+2908870325-2931754108
+2317225465-2326207645
+550660010-557063544
+2362374340-2370047564
+3154439917-3169895876
+2971931902-2973888167
+3915276202-3919826635
+3443104535-3459421692
+2452320784-2463651682
+2645465344-2652262587
+623576471-624671363
+251678316-253256260
+3892899041-3898838343
+464002012-476960875
+3778510328-3794259788
+1032494594-1042075604
+1726869059-1729493515
+3050865580-3058403387
+4096451268-4105743850
+1794978532-1818366498
+1687963887-1693429657
+1919840326-1931792580
+3890085195-3896657673
+687727514-697989805
+2130251157-2132529361
+3709755147-3710261877
+2103854130-2136933959
+1240822471-1247567713
+2490928812-2517604025
+2792885084-2793563605
+4033319760-4037319553
+643767762-679821627
+2244191155-2263679816
+783204448-826857019
+874202754-876456673
+944792902-949779600
+1014490072-1020320091
+3709667893-3710060580
+3034067373-3060173434
+2380617387-2398492444
+3913418161-3925664598
+1327421559-1355573458
+2029296660-2060654925
+1015438314-1024776747
+758467105-766508249
+3196737715-3203535886
+4113219652-4113918216
+1900161068-1903498607
+737196603-742913680
+2762651281-2782581391
+1241724970-1273412553
+2234377553-2234408980
+3485475801-3485850742
+2823889184-2825719103
+546429220-552909166
+3889312069-3891497364
+1402469948-1411853934
+1612881279-1613899725
+609769932-611526589
+2821381184-2837715581
+2793443367-2793757783
+3865830130-3882113243
+2302840856-2330280758
+1587820493-1589487382
+1925168590-1930014298
+139238032-141721873
+3159767763-3165446614
+3124692923-3128639222
+2270740594-2281991663
+1338789977-1355677780
+1748641567-1751344173
+1416549076-1421417040
+4096185893-4097103352
+2627343873-2650750532
+3948622110-3962424399
+3734105837-3770337993
+557813236-573792261
+551603476-555886358
+1030836305-1032494592
+1839182718-1840151300
+833662859-842106273
+1375985004-1393778055
+1219332117-1221436570
+191846359-198587644
+984829875-987740125
+3262588159-3269982376
+4113255424-4114203177
+3754035901-3768277382
+182356017-189508231
+4235072872-4237128944
+2423845665-2424035634
+2247134633-2249391253
+1857070653-1864762228
+2960971255-2986516950
+3609807449-3629876533
+4232009521-4238664410
+2517604027-2532315540
+2284458125-2290950480
+1864762230-1865525184
+1534410012-1552842249
+1413197933-1418525745
+943004746-952141611
+3692615771-3699711756
+1641152229-1667111341
+3747007580-3765218619
+2379349853-2380702573
+2147254282-2171495074
+1839659452-1840812997
+3895746954-3895831312
+1969771475-1979046124
+3083853152-3107315352
+3503489045-3537546786
+2926162506-2931745365
+1533535067-1553811000
+4201206086-4201731554
+3151335418-3163702483
+3589540929-3593463200
+1469107231-1474901685
+1696389381-1748641566
+3910219915-3918863153
+3431523383-3432952214
+4219640842-4234037045
+2150930801-2173615229
+3364393582-3403187084
+3294593092-3301828098
+690072645-725395887
+1123029535-1135646014
+122125578-124303606
+4157086822-4157139009
+3561413702-3569934827
+3814389694-3815485217
+1931792582-1935186677
+3601713750-3623094300
+2322435284-2327697391
+1362099577-1366674586
+628898939-635522883
+3117359644-3135324932
+1119748429-1139457622
+3998554882-4014887284
+2837930003-2838092963
+2123885505-2126641084
+559576606-579617582
+2712491763-2723761235
+1391544337-1397769783
+3416595318-3422405875
+3403187085-3409221687
+1096346351-1099114997
+2703273295-2705328183
+4113785067-4113908859
+206706372-209083880
+3270160481-3271551430
+3285776930-3292794583
+461234099-461937747
+750957483-775003729
+4184090903-4204400455
+362276042-362676210
+4249953310-4250510076
+3477313433-3479866795
+3421127715-3428203812
+900263617-943004744
+835969757-836263940
+1368935057-1381717988
+149206242-166300349
+2154227228-2154605899
+1906507809-1919840325
+305745049-306370999
+1726861064-1728699678
+1357107426-1362288056
+799761595-801167452
+229374054-231369444
+1529834231-1535566821
+754999390-757160209
+1889190091-1897618002
+2138256423-2146567860
+2295710373-2336599718
+1019914990-1023404843
+969695821-980184547
+1443906340-1473362681
+833198360-836801840
+1598512205-1604942681
+3199387842-3210382637
+3895688557-3895758051
+1377900216-1382117658
+3504189983-3527083803
+3577792742-3598561740
+613575187-632091293
+2551456957-2551799726
+4058092124-4103653807
+3381308208-3381342063
+13984873-15227949
+1727002523-1727443872
+2357289728-2361812594
+3876054666-3879516291
+3278228783-3281894754
+1640252019-1649137061
+2372620720-2374166948
+4109383543-4110464683
+2069304258-2091857479
+4107063052-4115320079
+700724903-704038468
+2443015838-2445045788
+2487239190-2506741363
+2840932452-2854276703
+3023346911-3024737732
+855982891-864879970
+3794259789-3803801069
+500728802-502979928
+2043915271-2045977041
+2883286342-2889401600
+3645471325-3645615199
+2570503460-2572567939
+602978860-611682641
+3014237470-3019165777
+82763197-99917251
+3459591973-3480841023
+3726344670-3753436804
+778825357-781459133
+3501129290-3535003794
+2110603192-2124722020
+783458439-789801399
+3244733157-3257526606
+3107315354-3107902887
+3485245437-3487101327
+2981323037-2986657197
+4250870060-4262722661
+402547398-411983817
+1723037247-1732297154
+2168632715-2175630061
+35807058-48835050
+3967606126-3981776003
+1175337592-1177759663
+531093126-538642617
+3639437354-3641516465
+2313078075-2334991622
+2166324817-2172350995
+4271478996-4279496401
+4224492579-4228356386
+213570433-219586693
+3577738508-3578878626
+2004747361-2023251091
+638907979-651338734
+2042269899-2052960282
+3459421693-3470010193
+1255554697-1256876442
+547623253-554247422
+1091999863-1096115712
+3603876264-3620115458
+3743564125-3764787998
+1727097235-1727512693
+3360184134-3361837705
+2693328393-2699639043
+944625756-949285354
+2867948986-2885571238
+3815862045-3817192748
+85521215-90999860
+3492959364-3496450746
+2370047566-2373514273
+978064227-982934994
+3002922234-3034067371
+3702198906-3708772192
+1762248212-1777087215
+3200048313-3217284316
+310731268-314864040
+4256139187-4257030493
+4225267250-4242760473
+4236421277-4249953308
+456593320-464031864
+4173427103-4219640840
+3415471996-3417373524
+517786225-518353134
+2348225752-2349209975
+988767498-1002507583
+251787031-253294331
+2049843175-2053651832
+3272267359-3280700773
+1880334878-1897812119
+2180116083-2181662625
+1325501561-1332569991
+1977956589-1980243809
+1419475215-1429076341
+1571066989-1593324419
+1908591293-1926977363
+892862026-900263616
+2375708935-2420847226
+4252569311-4259706067
+611682642-636576980
+4069864506-4088316591
+3429899073-3443104533
+2881173909-2904242568
+838248538-839457347
+1040048945-1048427339
+2790325698-2817756908
+259065357-260284546
+4251177319-4254787503
+1727035024-1727220036
+1750189264-1751440819
+1182854783-1199103982
+1565110550-1598512204
+1870272544-1906507807
+2294404836-2313311754
+605934295-611508831
+3164119802-3167924307
+1833545461-1834287253
+2077509652-2090604632
+2880238444-2890262424
+1142031337-1148518669
+4005987455-4006591959
+1570054798-1576009746
+2071505543-2096650688
+3485106835-3485722365
+577813461-602978858
+2776866362-2786901141
+652895584-671838947
+3299449839-3300020065
+1623460193-1638054811
+3340666115-3353087971
+2160043893-2166478186
+1096507969-1101378526
+800088830-803013264
+13565145-17743483
+85024888-98806837
+3823224649-3827480049
+3931062541-3938277752
+1012892921-1030836304
+1565255853-1583189516
+1647708193-1660811906
+657010776-666847464
+1839278378-1840330117
+1008973854-1015912839
+1910283066-1913763928
+837557263-838411350
+1282815406-1288995029
+3980611-5584893
+3148345905-3165692092
+2742421263-2776592447
+229688447-231610502
+2743245719-2776866361
+3878098271-3883221309
+801316931-804135040
+1471664269-1473302685
+1667111343-1669791317
+1610947175-1617629889
+2003085048-2013051153
+3307457133-3360184133
+1195340209-1203343093
+2025204495-2028453665
+32923438-47156091
+3168696227-3170592073
+3235742576-3255614827
+2266729227-2280080556
+775349160-775813901
+1473362682-1482720843
+3572312385-3575213587
+528189743-538093910
+2448613175-2454994921
+2843283603-2855830818
+2890593329-2907911642
+153191907-164713586
+4043150608-4096451267
+605875663-610305444
+3021650-3111593
+2420847228-2420916051
+4105743852-4113419273
+2460397045-2462412256
+567585936-602788586
+1727082530-1727671255
+4033434900-4037286987
+4144511592-4162791978
+3075535768-3080851776
+1639907267-1641352662
+920282814-940069234
+3826936712-3829839713
+1916925688-1925357559
+1845213589-1860279111
+1854550234-1855331759
+3065495280-3066648567
+170353613-171186253
+3212824412-3220097963
+2853141261-2853700351
+3556640-3614471
+1976412956-1988224560
+3296627900-3297163117
+725395889-749479392
+2233996777-2234267091
+1757843247-1759325879
+4279435928-4280514617
+801130429-802441496
+3751681078-3760769957
+2347982977-2366662085
+4235682663-4235983270
+3496282296-3499776408
+3821333501-3824224274
+2723761236-2742421261
+2827790660-2835001032
+1935288812-1941728417
+1726855325-1728050569
+1726544710-1727430469
+3940016790-3941936080
+546101318-552097193
+4184013882-4199809831
+2425846522-2426458497
+3361306788-3362865310
+453108094-456181406
+860613212-892862024
+362299769-362572315
+17407637-23147236
+3504547466-3505717615
+985733821-987978530
+2735458050-2740276231
+270737999-279345075
+1787997707-1795677405
+3680835944-3709667892
+3818408771-3825605323
+16201770-24236234
+1158649495-1176112357
+952141612-961131855
+2690399120-2697050905
+2837757591-2838004534
+3487101328-3501129288
+3888980907-3889308041
+3139002312-3144216973
+1812389934-1832528171
+4062104130-4081249321
+4109985868-4116611691
+261499681-305729049
+414982559-415941657
+2837715582-2837939443
+1612314605-1613532579
+1847293843-1854555869
+2048771211-2052518908
+701565294-713634431
+208666820-210559343
+2827420738-2834300681
+4141218867-4154796647
+1970845509-1978651442
+1552842250-1565110548
+412226938-422230809
+596789633-599083332
+571536075-580257978
+4162791979-4165315032
+2578608882-2600367385
+2953753655-2967704893
+1620638998-1623460191
+3652181866-3653081107
+1226734954-1263413684
+208300600-209821102
+3019452277-3019912348
+1614701447-1620638997
+3941936081-3996282520
+3237157247-3249234449
+2348186235-2349807460
+3562813382-3565898388
+3710261879-3738818624
+2629772693-2635508362
+2443958025-2447376004
+399974274-423562472
+1778846705-1790086524
+2234646109-2266729225
+1668227842-1689521646
+3549361830-3564965209
+1286877599-1288249900
+2117171419-2125943104
+3620689032-3652181864
+3299261942-3299688775
+1490791491-1514099208
+3817192749-3833336581
+3410915712-3429899072
+541342032-546429219
+918411171-924314929
+2182745019-2185607312
+2212606518-2214621946
+1779983196-1804748835
+1936162035-1950945741
+3704618658-3705051939
+1764680564-1778846703
+2698697285-2709059938
+1326793529-1329535111
+3702328552-3704015912
+2008848662-2015608293
+1231732813-1247626190
+1750754899-1752420348
+1093229127-1099058712
+4234037046-4236997947
+3493552026-3497919102
+3235053958-3252106974
+4018470466-4036608102
+701727470-719544055
+574115703-596179511
+3202587506-3210265222
+698102469-706160479
+1832528173-1833853020
+441673267-452453492
+2911169435-2921998083
+2229856423-2234646108
+2196901664-2204841238
+1675352425-1691381949
+4250455374-4250513503
+3237515102-3260318492
+171161905-175877664
+2581539215-2596898898
+4004311193-4012385537
+1324083574-1324546090
+4096883078-4097164771
+780817620-784569858
+208242283-211110211
+1330525084-1336070077
+4008229513-4009226682
+834427868-838848257
+348999024-350410733
+467200453-500728800
+4121379695-4138903168
+2949401565-2976409803
+3917170902-3926057375
+3071781061-3074945017
+3299433864-3300019479
+3894069601-3909653487
+3741129648-3770933677
+1337537272-1347157874
+216818049-245842326
+1626689836-1641152228
+1112292760-1131928222
+1651219196-1654305795
+506374440-513152599
+430626871-453108093
+3297525469-3306042698
+3256944-3556639
+2937659849-2949401563
+3915476081-3917349752
+170273133-170386354
+3896834322-3906255111
+2911101673-2912870470
+2383625542-2388030504
+2202988069-2215864531
+3931566185-3938787313
+3893325063-3903409791
+1677593295-1694860962
+1726429432-1726959531
+550814749-553019695
+328183437-332828273
+2463651684-2490928811
+2532315541-2561777512
+902393943-906380753
+3255012511-3262588157
+464031865-471880579
+987894291-990856994
+2994108099-3016224261
+1464668452-1468573067
+3817599599-3819192240
+4281205900-4284988083
+1610485824-1614835930
+2922504894-2943149643
+1366674588-1391544336
+2716673569-2724196148
+2136933960-2141630673
+952929934-954132488
+102430362-103410808
+1097408788-1102041819
+1411884657-1413275434
+1569519099-1595018443
+3314630119-3351858696
+1159063633-1161383669
+1306210365-1310168207
+65606761-70210379
+969367195-1005028750
+305729050-305810398
+2964351925-2968998528
+2586831864-2598752947
+2717800067-2732550815
+1357733985-1357970980
+3142078167-3146050939
+836110255-836394578
+2855830819-2865550532
+1854118661-1854889002
+3275779087-3291457029
+481061771-497879373
+2572567941-2573814074
+3653825904-3656453968
+1752420350-1764680563
+3381301699-3381332932
+1499205864-1508841960
+2568948534-2571512127
+124303608-171161904
+834540652-842353886
+3296634137-3297348568
+756487393-757398433
+2920277931-2929967348
+775003730-775425950
+4006843235-4009222380
+4173461462-4180792939
+2573814075-2627343871
+3379943605-3385769428
+3613135813-3622915872
+456181408-463675190
+1679128363-1689145745
+1771462652-1775663407
+3896043704-3896601721
+3668521412-3670169542
+3189676166-3211906595
+4178058206-4197742264
+649282356-651528503
+4118830219-4151607552
+3403081369-3405163204
+1295416035-1327421558
+3535003795-3540392660
+2521028658-2521094946
+3378794770-3384471028
+3876141848-3885724936
+3415436447-3434089766
+3236961463-3242080308
+1289735149-1320942247
+20583890-31053879
+2039793197-2062178184
+3361173897-3362649522
+476445996-491796622
+2305715287-2337252117
+1407865145-1413213862
+100343325-122125577
+4259473250-4260027959
+1539624652-1558856769
+3388893007-3406562225
+3815438953-3819219050
+88644450-100343323
+2838092965-2853295826
+2298582785-2308283977
+1911552487-1924425897
+3486137486-3495337804
+3087487707-3105123828
+2449249575-2459990446
+1114195378-1147840884
+3084130783-3090098247
+280604127-291812349
+251655795-252002640
+2065738411-2068050329
+3540392662-3561413701
+4108709270-4110339849
+185357325-191846357
+2988550972-3002922233
+2008583503-2009174592
+367514957-375053863
+3738337-5109287
+2068050330-2103854128
+2185761689-2201113375
+502979929-541342030
+437711847-441825502
+763342493-770307022
+3891568242-3896055908
+2771403009-2783873057
+857296477-865365400
+2372996602-2415318753
+209779549-212434153
+3904992626-3910219913
+2976409804-2983591595
+3614472-4019606
+3429649651-3432451145
+2312224052-2330392688
+3889124925-3889312068
+3368044346-3369236254
+2485542419-2506962662
+3703774963-3704692844
+249324444-259065356
+3038718563-3063082755
+2348008128-2348750596
+4027659985-4040018381
+4020167637-4028011463
+631597603-638907977
+156806924-163856510
+465625162-475575707
+1653345924-1655794173
+644029368-673749955
+1342645425-1348056082
+754961620-757509941
+2185607313-2229856421
+2430693014-2452320783
+2423618253-2423991135
+2578007008-2593849390
+251455290-252167220
+2141431440-2145256393
+461551382-490688234
+1280627802-1282187341
+2447416346-2448485092
+801034819-803950109
+3803801071-3817168598
+2791159575-2797552524
+2444538618-2447695611
+3656900217-3658497760
+362424586-362913246
+2315692184-2318703938
+2658294991-2705851874
+758225777-762221309
+3220097965-3253590560
+3918863154-3937848140
+3842601762-3867989792
+1362989964-1365638761
+2669543622-2698580716
+204441701-216667513
+3337068522-3351226708
+2910214082-2911637865
+2887286425-2894235722
+2556506098-2564781736
+3660974732-3670236178
+3738818625-3765658510
+3926612436-3931754899
+849660339-860613211
+3878152839-3882588354
+1198564716-1203493708
+90563967-91509385
+4113419274-4118830217
+2421569872-2430693012
+1380512818-1382191639
+2171495075-2182745017
+2346496816-2347982976
+2773187116-2776527627
+3264380514-3275779086
+2795335811-2807483836
+1255625643-1259049524
+3039851327-3062062714
+3477125643-3485106833
+368161721-385647773
+557063546-567450813
+2662245837-2698867380
+409471723-415008368
+2692399192-2709671522
+3289361982-3294593090
+2444382077-2446243156
+995864334-1008973852
+1485359185-1511483438
+3170296689-3173219013
+651528504-684359142
+2799805080-2819283989
+2745894337-2761860632
+4021069786-4034189388
+2423235028-2423776100
+1161581883-1172788321
+575303235-584246627
+1323324671-1324380624
+423562473-430626869
+3173219015-3207487851
+256367467-256655264
+2729359684-2736808477
+2979779055-2988550970
+1482720845-1491600385
+1057830454-1067468142
+107593407-117739880
+251911362-252150667
+3569934829-3575123572
+2241251261-2263701349
+2726382705-2727247227
+4037319554-4043150606
+3718405500-3739070428
+2364203325-2366532950
+836023031-836878401
+961131857-995864333
+3961933297-3977917454
+3180447251-3212824411
+3124189059-3126106003
+793312386-802938899
+3873230388-3877536365
+2841402828-2852690950
+2931754109-2946377103
+4097161122-4098833023
+2953494240-2963922968
+1016080923-1023809512
+2305965588-2325470268
+1726429959-1728139098
+1725984972-1746517984
+2280080557-2294404834
+1453817212-1468119920
+3343366097-3354792825
+2726120736-2727168410
+1726047629-1726491275
+2425599810-2428632507
+1127809348-1136655248
+784569859-830872706
+3362865312-3399674855
+467374870-490345878
+2028166733-2029296658
+3793434985-3799550158
+4113324238-4114378130
+2768224805-2776292356
+3076910664-3083853151
+3795367294-3799559727
+983334314-985924731
+2566325429-2567644886
+2079828370-2095628301
+1355677782-1357107425
+3139807-3256943
+2297016509-2339606996
+3937987517-3940016788
+3111594-3180044
+3408799234-3410915710
+2736163676-2737085107
+2927299659-2930923781
+2828368238-2835482134
+2924361649-2933817173
+3278336262-3282205864
+209200196-211114889
+1089312986-1101840140
+2426098602-2426594407
+3761524602-3771101074
+4038400571-4039718550
+4278817904-4281979539
+1971790010-1982080495
+2482451447-2482859303
+696142504-708558552
+832751897-838668629
+522885199-537712867
+3854296653-3860724814
+4250257176-4250870059
+1098058891-1101871591
+2041494246-2044474847
+3379302636-3380200608
+2823631138-2825091086
+3114946479-3141035176
+2564781738-2570503459
+3066648569-3072839529
+2963998950-2966815574
+3996282522-4010140708
+2609189498-2612898027
+1398040334-1399196426
+2705851875-2712491761
+3303896197-3307457131
+3072710194-3078315569
+2650750533-2658294989
+125494120-152726161
+1799712687-1813651344
+4113647358-4114354821
+914689746-931400632
+2334991623-2346496814
+952020939-952231689
+3279484720-3279924084
+826369329-829381680
+306371001-356731744
+2545936899-2562194811
+755902693-769100113
+2423872436-2428440493
+1040252532-1043084518
+2531373947-2564360722
+3758158314-3765326552
+250882458-253102421
+2445299323-2451474922
+2845734926-2859990778
+2571586320-2571725933
+4010140709-4018470464
+1397769785-1398762710
+3812038748-3819957572
+2446738279-2447892957
+3600527152-3609409007
+260284548-271403358
+108405773-115248353
+1910315960-1918268562
+1323436354-1327278720
+2234068374-2234384404
+982370550-984890793
+362487749-363332785
+3703404287-3704710600
+511536791-531472470
+1204860806-1211356557
+1280824569-1283027536
+1864956505-1865664159
+1264539978-1280627800
+838668630-849660337
+1039302291-1048802154
+3820162182-3829891468
+252725400-258978812
+3811611218-3815532558
+5584894-20583889
+2571534738-2571657850
+383938370-391077230
+732225856-735643042
+2968582589-2972324720
+2379822184-2380941432
+775813903-782941501
+836283753-836553990
+2786901143-2790325697
+2907911644-2910586722
+3879031171-3883342655
+2446835992-2450584620
+3604970524-3620689031
+3656986634-3664253237
+108870276-116802953
+50881441-82763196
+830872708-834595234
+948787824-952327285
+3554278607-3558372901
+1411483095-1443906338
+1305613100-1306576996
+1171167570-1175215348
+145365808-166164576
+3344972328-3354937927
+178346121-180017093
+3487950867-3498067707
+3455826248-3468331688
+1357654405-1361499079
+2373804146-2375708934
+1682091088-1685006321
+2532666674-2554100432
+3872534964-3888980905
+684359144-690072644
+31053881-36411395
+749479393-750957481
+1233001829-1257233242
+1109953682-1114195377
+175877666-185357324
+1283027537-1289735147
+3374715947-3381800912
+1283434504-1286474690
+1402640030-1423128613
+1426046568-1440437597
+3021217411-3028438706
+3449839444-3455646128
+2192814747-2207353667
+1039244541-1044508076
+363332786-399974272
+620349463-624462815
+3118427268-3142548507
+1177759665-1219332116
+1223070153-1264539977
+2469319931-2491726485
+1101840141-1109953680
+1048427340-1089312984
+2577948853-2584544199
+43965520-47689181
+1833568506-1857070652
+356731745-362276040
+4262722663-4294967295
+2632338905-2641519671
+0-3021649
+1148518671-1158649494
+3562116150-3562242974
+567450814-585792807
+198587645-249324442
+3756871898-3778510326
+2815453754-2821381182
+3562113904-3562138636
+2567358294-2571273144
+2061605698-2065382934
+1865301101-1870272543
+2565458232-2569021972
+267026988-275785393
+2570888765-2571620263
+179248341-180073497
+267066134-277088479
+2060654926-2062597974
+2065382936-2066893485
+3298704119-3299564801
+2194534845-2218883408
diff --git a/adventofcode16/data/advent21.txt b/adventofcode16/data/advent21.txt
new file mode 100644 (file)
index 0000000..b445817
--- /dev/null
@@ -0,0 +1,100 @@
+rotate based on position of letter a
+swap letter g with letter d
+move position 1 to position 5
+reverse positions 6 through 7
+move position 5 to position 4
+rotate based on position of letter b
+reverse positions 6 through 7
+swap letter h with letter f
+swap letter e with letter c
+reverse positions 0 through 7
+swap position 6 with position 4
+rotate based on position of letter e
+move position 2 to position 7
+swap position 6 with position 4
+rotate based on position of letter e
+reverse positions 2 through 3
+rotate right 2 steps
+swap position 7 with position 1
+move position 1 to position 2
+move position 4 to position 7
+move position 5 to position 0
+swap letter e with letter f
+move position 4 to position 7
+reverse positions 1 through 7
+rotate based on position of letter g
+move position 7 to position 4
+rotate right 6 steps
+rotate based on position of letter g
+reverse positions 0 through 5
+reverse positions 0 through 7
+swap letter c with letter f
+swap letter h with letter f
+rotate right 7 steps
+rotate based on position of letter g
+rotate based on position of letter c
+swap position 1 with position 4
+move position 7 to position 3
+reverse positions 2 through 6
+move position 7 to position 0
+move position 7 to position 1
+move position 6 to position 7
+rotate right 5 steps
+reverse positions 0 through 6
+move position 1 to position 4
+rotate left 3 steps
+swap letter d with letter c
+move position 4 to position 5
+rotate based on position of letter f
+rotate right 1 step
+move position 7 to position 6
+swap position 6 with position 0
+move position 6 to position 2
+rotate right 1 step
+swap position 1 with position 6
+move position 2 to position 6
+swap position 2 with position 1
+reverse positions 1 through 7
+move position 4 to position 1
+move position 7 to position 0
+swap position 6 with position 7
+rotate left 1 step
+reverse positions 0 through 4
+rotate based on position of letter c
+rotate based on position of letter b
+move position 2 to position 1
+rotate right 0 steps
+swap letter b with letter d
+swap letter f with letter c
+swap letter d with letter a
+swap position 7 with position 6
+rotate right 0 steps
+swap position 0 with position 3
+swap position 2 with position 5
+swap letter h with letter f
+reverse positions 2 through 3
+rotate based on position of letter c
+rotate left 2 steps
+move position 0 to position 5
+swap position 2 with position 3
+rotate right 1 step
+rotate left 2 steps
+move position 0 to position 4
+rotate based on position of letter c
+rotate based on position of letter g
+swap position 3 with position 0
+rotate right 3 steps
+reverse positions 0 through 2
+move position 1 to position 2
+swap letter e with letter c
+rotate right 7 steps
+move position 0 to position 7
+rotate left 2 steps
+reverse positions 0 through 4
+swap letter e with letter b
+reverse positions 2 through 7
+rotate right 5 steps
+swap position 2 with position 4
+swap letter d with letter g
+reverse positions 3 through 4
+reverse positions 4 through 5
diff --git a/adventofcode16/data/advent22.txt b/adventofcode16/data/advent22.txt
new file mode 100644 (file)
index 0000000..8821df9
--- /dev/null
@@ -0,0 +1,1066 @@
+root@ebhq-gridcenter# df -h
+Filesystem              Size  Used  Avail  Use%
+/dev/grid/node-x0-y0     88T   66T    22T   75%
+/dev/grid/node-x0-y1     85T   65T    20T   76%
+/dev/grid/node-x0-y2     88T   67T    21T   76%
+/dev/grid/node-x0-y3     92T   68T    24T   73%
+/dev/grid/node-x0-y4     87T   64T    23T   73%
+/dev/grid/node-x0-y5     90T   64T    26T   71%
+/dev/grid/node-x0-y6     85T   64T    21T   75%
+/dev/grid/node-x0-y7     93T   66T    27T   70%
+/dev/grid/node-x0-y8     90T   69T    21T   76%
+/dev/grid/node-x0-y9     88T   69T    19T   78%
+/dev/grid/node-x0-y10    90T   69T    21T   76%
+/dev/grid/node-x0-y11    90T   65T    25T   72%
+/dev/grid/node-x0-y12    86T   73T    13T   84%
+/dev/grid/node-x0-y13    92T   67T    25T   72%
+/dev/grid/node-x0-y14    90T   70T    20T   77%
+/dev/grid/node-x0-y15    90T   66T    24T   73%
+/dev/grid/node-x0-y16    86T   66T    20T   76%
+/dev/grid/node-x0-y17    87T   67T    20T   77%
+/dev/grid/node-x0-y18    85T   64T    21T   75%
+/dev/grid/node-x0-y19    91T   67T    24T   73%
+/dev/grid/node-x0-y20    93T   73T    20T   78%
+/dev/grid/node-x0-y21    91T   72T    19T   79%
+/dev/grid/node-x0-y22    86T   64T    22T   74%
+/dev/grid/node-x0-y23    85T   73T    12T   85%
+/dev/grid/node-x0-y24    93T   65T    28T   69%
+/dev/grid/node-x0-y25    89T   67T    22T   75%
+/dev/grid/node-x0-y26    94T   64T    30T   68%
+/dev/grid/node-x0-y27    85T   69T    16T   81%
+/dev/grid/node-x1-y0     85T   68T    17T   80%
+/dev/grid/node-x1-y1     93T   69T    24T   74%
+/dev/grid/node-x1-y2     85T   68T    17T   80%
+/dev/grid/node-x1-y3     89T   69T    20T   77%
+/dev/grid/node-x1-y4     92T   70T    22T   76%
+/dev/grid/node-x1-y5     92T   65T    27T   70%
+/dev/grid/node-x1-y6     87T   69T    18T   79%
+/dev/grid/node-x1-y7     93T   65T    28T   69%
+/dev/grid/node-x1-y8     85T   69T    16T   81%
+/dev/grid/node-x1-y9     88T   64T    24T   72%
+/dev/grid/node-x1-y10    88T   65T    23T   73%
+/dev/grid/node-x1-y11    85T   66T    19T   77%
+/dev/grid/node-x1-y12    85T   69T    16T   81%
+/dev/grid/node-x1-y13    90T   73T    17T   81%
+/dev/grid/node-x1-y14    93T   68T    25T   73%
+/dev/grid/node-x1-y15    94T   68T    26T   72%
+/dev/grid/node-x1-y16    85T   67T    18T   78%
+/dev/grid/node-x1-y17    87T   71T    16T   81%
+/dev/grid/node-x1-y18    90T   73T    17T   81%
+/dev/grid/node-x1-y19    86T   66T    20T   76%
+/dev/grid/node-x1-y20    89T   71T    18T   79%
+/dev/grid/node-x1-y21    94T   69T    25T   73%
+/dev/grid/node-x1-y22    90T   70T    20T   77%
+/dev/grid/node-x1-y23    92T   70T    22T   76%
+/dev/grid/node-x1-y24    91T   70T    21T   76%
+/dev/grid/node-x1-y25    94T   70T    24T   74%
+/dev/grid/node-x1-y26    90T   64T    26T   71%
+/dev/grid/node-x1-y27    92T   73T    19T   79%
+/dev/grid/node-x2-y0     88T   72T    16T   81%
+/dev/grid/node-x2-y1     88T   70T    18T   79%
+/dev/grid/node-x2-y2     89T   68T    21T   76%
+/dev/grid/node-x2-y3     89T   72T    17T   80%
+/dev/grid/node-x2-y4     93T   66T    27T   70%
+/dev/grid/node-x2-y5     92T   65T    27T   70%
+/dev/grid/node-x2-y6     91T   66T    25T   72%
+/dev/grid/node-x2-y7     86T   70T    16T   81%
+/dev/grid/node-x2-y8     94T   66T    28T   70%
+/dev/grid/node-x2-y9     88T   71T    17T   80%
+/dev/grid/node-x2-y10    90T   64T    26T   71%
+/dev/grid/node-x2-y11    88T   68T    20T   77%
+/dev/grid/node-x2-y12    86T   70T    16T   81%
+/dev/grid/node-x2-y13    90T   68T    22T   75%
+/dev/grid/node-x2-y14    85T   70T    15T   82%
+/dev/grid/node-x2-y15    93T   70T    23T   75%
+/dev/grid/node-x2-y16    87T   73T    14T   83%
+/dev/grid/node-x2-y17    92T   66T    26T   71%
+/dev/grid/node-x2-y18    88T   70T    18T   79%
+/dev/grid/node-x2-y19    89T   69T    20T   77%
+/dev/grid/node-x2-y20    92T   64T    28T   69%
+/dev/grid/node-x2-y21    85T   67T    18T   78%
+/dev/grid/node-x2-y22    89T   70T    19T   78%
+/dev/grid/node-x2-y23    94T   70T    24T   74%
+/dev/grid/node-x2-y24    87T   72T    15T   82%
+/dev/grid/node-x2-y25    91T   73T    18T   80%
+/dev/grid/node-x2-y26    91T   65T    26T   71%
+/dev/grid/node-x2-y27    90T   70T    20T   77%
+/dev/grid/node-x3-y0     92T   72T    20T   78%
+/dev/grid/node-x3-y1     91T   71T    20T   78%
+/dev/grid/node-x3-y2     93T   71T    22T   76%
+/dev/grid/node-x3-y3     89T   72T    17T   80%
+/dev/grid/node-x3-y4     88T   68T    20T   77%
+/dev/grid/node-x3-y5     92T   73T    19T   79%
+/dev/grid/node-x3-y6     86T   64T    22T   74%
+/dev/grid/node-x3-y7     86T   67T    19T   77%
+/dev/grid/node-x3-y8     85T   73T    12T   85%
+/dev/grid/node-x3-y9     86T   72T    14T   83%
+/dev/grid/node-x3-y10    88T   67T    21T   76%
+/dev/grid/node-x3-y11    94T   67T    27T   71%
+/dev/grid/node-x3-y12    91T   66T    25T   72%
+/dev/grid/node-x3-y13    85T   67T    18T   78%
+/dev/grid/node-x3-y14    94T   68T    26T   72%
+/dev/grid/node-x3-y15    94T   73T    21T   77%
+/dev/grid/node-x3-y16    92T   71T    21T   77%
+/dev/grid/node-x3-y17    92T   73T    19T   79%
+/dev/grid/node-x3-y18    86T   66T    20T   76%
+/dev/grid/node-x3-y19    88T   69T    19T   78%
+/dev/grid/node-x3-y20    90T   73T    17T   81%
+/dev/grid/node-x3-y21    87T   71T    16T   81%
+/dev/grid/node-x3-y22    92T   72T    20T   78%
+/dev/grid/node-x3-y23    87T   71T    16T   81%
+/dev/grid/node-x3-y24    93T   66T    27T   70%
+/dev/grid/node-x3-y25    94T   65T    29T   69%
+/dev/grid/node-x3-y26    91T   67T    24T   73%
+/dev/grid/node-x3-y27    88T   69T    19T   78%
+/dev/grid/node-x4-y0     93T   68T    25T   73%
+/dev/grid/node-x4-y1     93T   67T    26T   72%
+/dev/grid/node-x4-y2     85T   67T    18T   78%
+/dev/grid/node-x4-y3     89T   65T    24T   73%
+/dev/grid/node-x4-y4     85T   73T    12T   85%
+/dev/grid/node-x4-y5     86T   72T    14T   83%
+/dev/grid/node-x4-y6     86T   66T    20T   76%
+/dev/grid/node-x4-y7     89T   66T    23T   74%
+/dev/grid/node-x4-y8     94T   73T    21T   77%
+/dev/grid/node-x4-y9     89T   72T    17T   80%
+/dev/grid/node-x4-y10    86T   66T    20T   76%
+/dev/grid/node-x4-y11    92T   70T    22T   76%
+/dev/grid/node-x4-y12    93T   69T    24T   74%
+/dev/grid/node-x4-y13    85T   68T    17T   80%
+/dev/grid/node-x4-y14    93T   73T    20T   78%
+/dev/grid/node-x4-y15    87T   67T    20T   77%
+/dev/grid/node-x4-y16    86T   66T    20T   76%
+/dev/grid/node-x4-y17    90T   70T    20T   77%
+/dev/grid/node-x4-y18    92T   69T    23T   75%
+/dev/grid/node-x4-y19    93T   71T    22T   76%
+/dev/grid/node-x4-y20    94T   66T    28T   70%
+/dev/grid/node-x4-y21    88T   73T    15T   82%
+/dev/grid/node-x4-y22    93T   71T    22T   76%
+/dev/grid/node-x4-y23    87T   68T    19T   78%
+/dev/grid/node-x4-y24    89T   70T    19T   78%
+/dev/grid/node-x4-y25    87T   69T    18T   79%
+/dev/grid/node-x4-y26    87T   69T    18T   79%
+/dev/grid/node-x4-y27    89T   71T    18T   79%
+/dev/grid/node-x5-y0     88T   66T    22T   75%
+/dev/grid/node-x5-y1     91T   70T    21T   76%
+/dev/grid/node-x5-y2     91T   71T    20T   78%
+/dev/grid/node-x5-y3     90T   68T    22T   75%
+/dev/grid/node-x5-y4     85T   72T    13T   84%
+/dev/grid/node-x5-y5     89T   64T    25T   71%
+/dev/grid/node-x5-y6     90T   71T    19T   78%
+/dev/grid/node-x5-y7     91T   64T    27T   70%
+/dev/grid/node-x5-y8     87T   71T    16T   81%
+/dev/grid/node-x5-y9     89T   72T    17T   80%
+/dev/grid/node-x5-y10    86T   68T    18T   79%
+/dev/grid/node-x5-y11    91T   66T    25T   72%
+/dev/grid/node-x5-y12    89T   69T    20T   77%
+/dev/grid/node-x5-y13    85T   72T    13T   84%
+/dev/grid/node-x5-y14    92T   69T    23T   75%
+/dev/grid/node-x5-y15    88T   68T    20T   77%
+/dev/grid/node-x5-y16    92T   72T    20T   78%
+/dev/grid/node-x5-y17    93T   70T    23T   75%
+/dev/grid/node-x5-y18    87T   65T    22T   74%
+/dev/grid/node-x5-y19    86T   64T    22T   74%
+/dev/grid/node-x5-y20    89T   68T    21T   76%
+/dev/grid/node-x5-y21    89T   68T    21T   76%
+/dev/grid/node-x5-y22    89T   71T    18T   79%
+/dev/grid/node-x5-y23    91T   67T    24T   73%
+/dev/grid/node-x5-y24    88T   64T    24T   72%
+/dev/grid/node-x5-y25    92T   73T    19T   79%
+/dev/grid/node-x5-y26    94T   64T    30T   68%
+/dev/grid/node-x5-y27    88T   73T    15T   82%
+/dev/grid/node-x6-y0     88T   64T    24T   72%
+/dev/grid/node-x6-y1     87T   71T    16T   81%
+/dev/grid/node-x6-y2     93T   65T    28T   69%
+/dev/grid/node-x6-y3     90T   71T    19T   78%
+/dev/grid/node-x6-y4     85T   68T    17T   80%
+/dev/grid/node-x6-y5     93T   70T    23T   75%
+/dev/grid/node-x6-y6     91T   70T    21T   76%
+/dev/grid/node-x6-y7     89T   65T    24T   73%
+/dev/grid/node-x6-y8     91T   65T    26T   71%
+/dev/grid/node-x6-y9     92T   65T    27T   70%
+/dev/grid/node-x6-y10    94T   73T    21T   77%
+/dev/grid/node-x6-y11    86T   71T    15T   82%
+/dev/grid/node-x6-y12    87T   68T    19T   78%
+/dev/grid/node-x6-y13    93T   68T    25T   73%
+/dev/grid/node-x6-y14    87T   68T    19T   78%
+/dev/grid/node-x6-y15    85T   71T    14T   83%
+/dev/grid/node-x6-y16    85T   70T    15T   82%
+/dev/grid/node-x6-y17    85T   66T    19T   77%
+/dev/grid/node-x6-y18    90T   66T    24T   73%
+/dev/grid/node-x6-y19    85T   73T    12T   85%
+/dev/grid/node-x6-y20    92T   73T    19T   79%
+/dev/grid/node-x6-y21    90T   68T    22T   75%
+/dev/grid/node-x6-y22    85T   68T    17T   80%
+/dev/grid/node-x6-y23    85T   67T    18T   78%
+/dev/grid/node-x6-y24    87T   65T    22T   74%
+/dev/grid/node-x6-y25    85T   68T    17T   80%
+/dev/grid/node-x6-y26    88T   70T    18T   79%
+/dev/grid/node-x6-y27    86T   65T    21T   75%
+/dev/grid/node-x7-y0     89T   66T    23T   74%
+/dev/grid/node-x7-y1     92T   67T    25T   72%
+/dev/grid/node-x7-y2     94T   69T    25T   73%
+/dev/grid/node-x7-y3     86T   72T    14T   83%
+/dev/grid/node-x7-y4     90T   68T    22T   75%
+/dev/grid/node-x7-y5     87T   72T    15T   82%
+/dev/grid/node-x7-y6     92T   71T    21T   77%
+/dev/grid/node-x7-y7     90T   71T    19T   78%
+/dev/grid/node-x7-y8     92T   70T    22T   76%
+/dev/grid/node-x7-y9     85T   73T    12T   85%
+/dev/grid/node-x7-y10    92T   68T    24T   73%
+/dev/grid/node-x7-y11    94T   69T    25T   73%
+/dev/grid/node-x7-y12    88T   71T    17T   80%
+/dev/grid/node-x7-y13    87T   73T    14T   83%
+/dev/grid/node-x7-y14    92T   70T    22T   76%
+/dev/grid/node-x7-y15    87T   68T    19T   78%
+/dev/grid/node-x7-y16    85T   65T    20T   76%
+/dev/grid/node-x7-y17    93T   64T    29T   68%
+/dev/grid/node-x7-y18    91T   67T    24T   73%
+/dev/grid/node-x7-y19    87T   66T    21T   75%
+/dev/grid/node-x7-y20    94T   72T    22T   76%
+/dev/grid/node-x7-y21    85T   72T    13T   84%
+/dev/grid/node-x7-y22    88T   73T    15T   82%
+/dev/grid/node-x7-y23    91T   66T    25T   72%
+/dev/grid/node-x7-y24    94T   70T    24T   74%
+/dev/grid/node-x7-y25    85T   65T    20T   76%
+/dev/grid/node-x7-y26    88T   64T    24T   72%
+/dev/grid/node-x7-y27    93T   69T    24T   74%
+/dev/grid/node-x8-y0     92T   65T    27T   70%
+/dev/grid/node-x8-y1     89T   69T    20T   77%
+/dev/grid/node-x8-y2     93T   64T    29T   68%
+/dev/grid/node-x8-y3     85T   65T    20T   76%
+/dev/grid/node-x8-y4     91T   69T    22T   75%
+/dev/grid/node-x8-y5     85T   70T    15T   82%
+/dev/grid/node-x8-y6     86T   64T    22T   74%
+/dev/grid/node-x8-y7     94T   67T    27T   71%
+/dev/grid/node-x8-y8     88T   68T    20T   77%
+/dev/grid/node-x8-y9     94T   69T    25T   73%
+/dev/grid/node-x8-y10    91T   73T    18T   80%
+/dev/grid/node-x8-y11    89T   73T    16T   82%
+/dev/grid/node-x8-y12    87T   68T    19T   78%
+/dev/grid/node-x8-y13    89T   70T    19T   78%
+/dev/grid/node-x8-y14    86T   67T    19T   77%
+/dev/grid/node-x8-y15    90T   68T    22T   75%
+/dev/grid/node-x8-y16    92T   72T    20T   78%
+/dev/grid/node-x8-y17    89T   68T    21T   76%
+/dev/grid/node-x8-y18    89T   67T    22T   75%
+/dev/grid/node-x8-y19    85T   68T    17T   80%
+/dev/grid/node-x8-y20    88T   64T    24T   72%
+/dev/grid/node-x8-y21    90T   72T    18T   80%
+/dev/grid/node-x8-y22    93T   73T    20T   78%
+/dev/grid/node-x8-y23    92T   68T    24T   73%
+/dev/grid/node-x8-y24    92T   66T    26T   71%
+/dev/grid/node-x8-y25    93T   70T    23T   75%
+/dev/grid/node-x8-y26    92T   64T    28T   69%
+/dev/grid/node-x8-y27    85T   64T    21T   75%
+/dev/grid/node-x9-y0     94T   71T    23T   75%
+/dev/grid/node-x9-y1     91T   71T    20T   78%
+/dev/grid/node-x9-y2     93T   66T    27T   70%
+/dev/grid/node-x9-y3     86T   73T    13T   84%
+/dev/grid/node-x9-y4     90T   69T    21T   76%
+/dev/grid/node-x9-y5     85T   70T    15T   82%
+/dev/grid/node-x9-y6     88T   67T    21T   76%
+/dev/grid/node-x9-y7     90T   64T    26T   71%
+/dev/grid/node-x9-y8     93T   66T    27T   70%
+/dev/grid/node-x9-y9     90T   73T    17T   81%
+/dev/grid/node-x9-y10    90T   73T    17T   81%
+/dev/grid/node-x9-y11    89T   69T    20T   77%
+/dev/grid/node-x9-y12    89T   69T    20T   77%
+/dev/grid/node-x9-y13    93T   68T    25T   73%
+/dev/grid/node-x9-y14    94T   64T    30T   68%
+/dev/grid/node-x9-y15    94T   66T    28T   70%
+/dev/grid/node-x9-y16    89T   71T    18T   79%
+/dev/grid/node-x9-y17    89T   69T    20T   77%
+/dev/grid/node-x9-y18    86T   65T    21T   75%
+/dev/grid/node-x9-y19    88T   71T    17T   80%
+/dev/grid/node-x9-y20    90T   72T    18T   80%
+/dev/grid/node-x9-y21    91T   71T    20T   78%
+/dev/grid/node-x9-y22    88T   66T    22T   75%
+/dev/grid/node-x9-y23    93T   69T    24T   74%
+/dev/grid/node-x9-y24   502T  496T     6T   98%
+/dev/grid/node-x9-y25    89T   73T    16T   82%
+/dev/grid/node-x9-y26    92T   71T    21T   77%
+/dev/grid/node-x9-y27    94T   70T    24T   74%
+/dev/grid/node-x10-y0    85T   73T    12T   85%
+/dev/grid/node-x10-y1    92T   64T    28T   69%
+/dev/grid/node-x10-y2    92T   64T    28T   69%
+/dev/grid/node-x10-y3    92T   71T    21T   77%
+/dev/grid/node-x10-y4    89T   71T    18T   79%
+/dev/grid/node-x10-y5    87T   72T    15T   82%
+/dev/grid/node-x10-y6    93T   68T    25T   73%
+/dev/grid/node-x10-y7    93T   65T    28T   69%
+/dev/grid/node-x10-y8    87T   67T    20T   77%
+/dev/grid/node-x10-y9    90T   64T    26T   71%
+/dev/grid/node-x10-y10   91T   70T    21T   76%
+/dev/grid/node-x10-y11   86T   66T    20T   76%
+/dev/grid/node-x10-y12   90T   71T    19T   78%
+/dev/grid/node-x10-y13   86T   65T    21T   75%
+/dev/grid/node-x10-y14   93T   69T    24T   74%
+/dev/grid/node-x10-y15   87T   64T    23T   73%
+/dev/grid/node-x10-y16   85T   68T    17T   80%
+/dev/grid/node-x10-y17   89T   65T    24T   73%
+/dev/grid/node-x10-y18   94T   73T    21T   77%
+/dev/grid/node-x10-y19   94T   73T    21T   77%
+/dev/grid/node-x10-y20   88T   68T    20T   77%
+/dev/grid/node-x10-y21   93T   73T    20T   78%
+/dev/grid/node-x10-y22   87T   67T    20T   77%
+/dev/grid/node-x10-y23   90T   67T    23T   74%
+/dev/grid/node-x10-y24  510T  491T    19T   96%
+/dev/grid/node-x10-y25   90T   71T    19T   78%
+/dev/grid/node-x10-y26   94T   67T    27T   71%
+/dev/grid/node-x10-y27   93T   67T    26T   72%
+/dev/grid/node-x11-y0    91T   64T    27T   70%
+/dev/grid/node-x11-y1    91T   67T    24T   73%
+/dev/grid/node-x11-y2    86T   70T    16T   81%
+/dev/grid/node-x11-y3    87T   65T    22T   74%
+/dev/grid/node-x11-y4    86T   66T    20T   76%
+/dev/grid/node-x11-y5    85T   71T    14T   83%
+/dev/grid/node-x11-y6    91T   65T    26T   71%
+/dev/grid/node-x11-y7    86T   65T    21T   75%
+/dev/grid/node-x11-y8    91T   71T    20T   78%
+/dev/grid/node-x11-y9    94T   71T    23T   75%
+/dev/grid/node-x11-y10   89T   65T    24T   73%
+/dev/grid/node-x11-y11   94T   71T    23T   75%
+/dev/grid/node-x11-y12   88T   64T    24T   72%
+/dev/grid/node-x11-y13   85T   67T    18T   78%
+/dev/grid/node-x11-y14   87T   71T    16T   81%
+/dev/grid/node-x11-y15   90T   71T    19T   78%
+/dev/grid/node-x11-y16   87T   73T    14T   83%
+/dev/grid/node-x11-y17   89T   68T    21T   76%
+/dev/grid/node-x11-y18   94T   64T    30T   68%
+/dev/grid/node-x11-y19   92T   68T    24T   73%
+/dev/grid/node-x11-y20   86T   67T    19T   77%
+/dev/grid/node-x11-y21   91T   73T    18T   80%
+/dev/grid/node-x11-y22   91T   69T    22T   75%
+/dev/grid/node-x11-y23   88T   72T    16T   81%
+/dev/grid/node-x11-y24  509T  493T    16T   96%
+/dev/grid/node-x11-y25   93T   68T    25T   73%
+/dev/grid/node-x11-y26   86T   72T    14T   83%
+/dev/grid/node-x11-y27   86T   65T    21T   75%
+/dev/grid/node-x12-y0    93T   65T    28T   69%
+/dev/grid/node-x12-y1    93T   65T    28T   69%
+/dev/grid/node-x12-y2    86T   68T    18T   79%
+/dev/grid/node-x12-y3    92T   65T    27T   70%
+/dev/grid/node-x12-y4    87T   65T    22T   74%
+/dev/grid/node-x12-y5    93T   68T    25T   73%
+/dev/grid/node-x12-y6    90T   67T    23T   74%
+/dev/grid/node-x12-y7    93T   69T    24T   74%
+/dev/grid/node-x12-y8    88T   72T    16T   81%
+/dev/grid/node-x12-y9    90T   72T    18T   80%
+/dev/grid/node-x12-y10   89T   64T    25T   71%
+/dev/grid/node-x12-y11   85T   69T    16T   81%
+/dev/grid/node-x12-y12   90T   69T    21T   76%
+/dev/grid/node-x12-y13   94T   66T    28T   70%
+/dev/grid/node-x12-y14   89T   69T    20T   77%
+/dev/grid/node-x12-y15   92T   68T    24T   73%
+/dev/grid/node-x12-y16   90T   73T    17T   81%
+/dev/grid/node-x12-y17   85T   67T    18T   78%
+/dev/grid/node-x12-y18   90T   67T    23T   74%
+/dev/grid/node-x12-y19   94T   65T    29T   69%
+/dev/grid/node-x12-y20   89T   68T    21T   76%
+/dev/grid/node-x12-y21   88T   71T    17T   80%
+/dev/grid/node-x12-y22   87T   73T    14T   83%
+/dev/grid/node-x12-y23   94T   64T    30T   68%
+/dev/grid/node-x12-y24  505T  499T     6T   98%
+/dev/grid/node-x12-y25   86T   67T    19T   77%
+/dev/grid/node-x12-y26   94T   64T    30T   68%
+/dev/grid/node-x12-y27   92T   66T    26T   71%
+/dev/grid/node-x13-y0    89T   65T    24T   73%
+/dev/grid/node-x13-y1    92T   65T    27T   70%
+/dev/grid/node-x13-y2    92T   67T    25T   72%
+/dev/grid/node-x13-y3    91T   71T    20T   78%
+/dev/grid/node-x13-y4    87T   66T    21T   75%
+/dev/grid/node-x13-y5    92T   71T    21T   77%
+/dev/grid/node-x13-y6    92T   67T    25T   72%
+/dev/grid/node-x13-y7    90T   73T    17T   81%
+/dev/grid/node-x13-y8    91T   67T    24T   73%
+/dev/grid/node-x13-y9    90T   64T    26T   71%
+/dev/grid/node-x13-y10   85T   73T    12T   85%
+/dev/grid/node-x13-y11   91T   65T    26T   71%
+/dev/grid/node-x13-y12   94T   65T    29T   69%
+/dev/grid/node-x13-y13   94T   73T    21T   77%
+/dev/grid/node-x13-y14   91T   71T    20T   78%
+/dev/grid/node-x13-y15   85T   65T    20T   76%
+/dev/grid/node-x13-y16   88T   68T    20T   77%
+/dev/grid/node-x13-y17   94T   65T    29T   69%
+/dev/grid/node-x13-y18   92T   70T    22T   76%
+/dev/grid/node-x13-y19   86T   72T    14T   83%
+/dev/grid/node-x13-y20   88T   71T    17T   80%
+/dev/grid/node-x13-y21   94T   72T    22T   76%
+/dev/grid/node-x13-y22   92T   66T    26T   71%
+/dev/grid/node-x13-y23   90T   69T    21T   76%
+/dev/grid/node-x13-y24  510T  492T    18T   96%
+/dev/grid/node-x13-y25   94T   73T    21T   77%
+/dev/grid/node-x13-y26   87T   68T    19T   78%
+/dev/grid/node-x13-y27   93T   71T    22T   76%
+/dev/grid/node-x14-y0    87T   73T    14T   83%
+/dev/grid/node-x14-y1    86T   69T    17T   80%
+/dev/grid/node-x14-y2    91T   71T    20T   78%
+/dev/grid/node-x14-y3    88T   67T    21T   76%
+/dev/grid/node-x14-y4    88T   70T    18T   79%
+/dev/grid/node-x14-y5    92T   73T    19T   79%
+/dev/grid/node-x14-y6    88T   66T    22T   75%
+/dev/grid/node-x14-y7    85T   68T    17T   80%
+/dev/grid/node-x14-y8    87T   70T    17T   80%
+/dev/grid/node-x14-y9    88T   71T    17T   80%
+/dev/grid/node-x14-y10   89T   66T    23T   74%
+/dev/grid/node-x14-y11   90T   69T    21T   76%
+/dev/grid/node-x14-y12   89T   71T    18T   79%
+/dev/grid/node-x14-y13   89T   64T    25T   71%
+/dev/grid/node-x14-y14   91T   72T    19T   79%
+/dev/grid/node-x14-y15   94T   69T    25T   73%
+/dev/grid/node-x14-y16   86T   73T    13T   84%
+/dev/grid/node-x14-y17   88T   70T    18T   79%
+/dev/grid/node-x14-y18   91T   68T    23T   74%
+/dev/grid/node-x14-y19   91T   67T    24T   73%
+/dev/grid/node-x14-y20   85T   65T    20T   76%
+/dev/grid/node-x14-y21   85T   71T    14T   83%
+/dev/grid/node-x14-y22   90T   70T    20T   77%
+/dev/grid/node-x14-y23   85T   70T    15T   82%
+/dev/grid/node-x14-y24  504T  494T    10T   98%
+/dev/grid/node-x14-y25   94T   69T    25T   73%
+/dev/grid/node-x14-y26   92T   64T    28T   69%
+/dev/grid/node-x14-y27   86T   73T    13T   84%
+/dev/grid/node-x15-y0    88T   72T    16T   81%
+/dev/grid/node-x15-y1    91T   67T    24T   73%
+/dev/grid/node-x15-y2    90T   67T    23T   74%
+/dev/grid/node-x15-y3    90T   68T    22T   75%
+/dev/grid/node-x15-y4    92T   70T    22T   76%
+/dev/grid/node-x15-y5    89T   69T    20T   77%
+/dev/grid/node-x15-y6    89T   70T    19T   78%
+/dev/grid/node-x15-y7    93T   71T    22T   76%
+/dev/grid/node-x15-y8    86T   64T    22T   74%
+/dev/grid/node-x15-y9    91T   71T    20T   78%
+/dev/grid/node-x15-y10   94T   72T    22T   76%
+/dev/grid/node-x15-y11   91T   70T    21T   76%
+/dev/grid/node-x15-y12   93T   71T    22T   76%
+/dev/grid/node-x15-y13   94T   66T    28T   70%
+/dev/grid/node-x15-y14   93T   68T    25T   73%
+/dev/grid/node-x15-y15   85T   67T    18T   78%
+/dev/grid/node-x15-y16   88T   64T    24T   72%
+/dev/grid/node-x15-y17   94T   72T    22T   76%
+/dev/grid/node-x15-y18   93T   67T    26T   72%
+/dev/grid/node-x15-y19   89T   68T    21T   76%
+/dev/grid/node-x15-y20   93T   71T    22T   76%
+/dev/grid/node-x15-y21   90T   70T    20T   77%
+/dev/grid/node-x15-y22   86T   65T    21T   75%
+/dev/grid/node-x15-y23   90T   68T    22T   75%
+/dev/grid/node-x15-y24  506T  494T    12T   97%
+/dev/grid/node-x15-y25   91T   71T    20T   78%
+/dev/grid/node-x15-y26   86T   70T    16T   81%
+/dev/grid/node-x15-y27   87T   64T    23T   73%
+/dev/grid/node-x16-y0    93T   64T    29T   68%
+/dev/grid/node-x16-y1    91T   69T    22T   75%
+/dev/grid/node-x16-y2    89T   66T    23T   74%
+/dev/grid/node-x16-y3    89T   68T    21T   76%
+/dev/grid/node-x16-y4    91T   65T    26T   71%
+/dev/grid/node-x16-y5    85T   71T    14T   83%
+/dev/grid/node-x16-y6    93T   69T    24T   74%
+/dev/grid/node-x16-y7    87T   69T    18T   79%
+/dev/grid/node-x16-y8    85T   72T    13T   84%
+/dev/grid/node-x16-y9    92T   67T    25T   72%
+/dev/grid/node-x16-y10   92T   69T    23T   75%
+/dev/grid/node-x16-y11   93T   72T    21T   77%
+/dev/grid/node-x16-y12   92T   73T    19T   79%
+/dev/grid/node-x16-y13   88T   70T    18T   79%
+/dev/grid/node-x16-y14   91T   71T    20T   78%
+/dev/grid/node-x16-y15   88T   66T    22T   75%
+/dev/grid/node-x16-y16   88T   70T    18T   79%
+/dev/grid/node-x16-y17   88T   73T    15T   82%
+/dev/grid/node-x16-y18   92T   72T    20T   78%
+/dev/grid/node-x16-y19   90T   73T    17T   81%
+/dev/grid/node-x16-y20   94T   73T    21T   77%
+/dev/grid/node-x16-y21   86T   71T    15T   82%
+/dev/grid/node-x16-y22   88T   68T    20T   77%
+/dev/grid/node-x16-y23   88T   73T    15T   82%
+/dev/grid/node-x16-y24  506T  496T    10T   98%
+/dev/grid/node-x16-y25   85T   69T    16T   81%
+/dev/grid/node-x16-y26   90T   64T    26T   71%
+/dev/grid/node-x16-y27   92T   64T    28T   69%
+/dev/grid/node-x17-y0    88T   73T    15T   82%
+/dev/grid/node-x17-y1    87T   65T    22T   74%
+/dev/grid/node-x17-y2    90T   64T    26T   71%
+/dev/grid/node-x17-y3    93T   71T    22T   76%
+/dev/grid/node-x17-y4    90T   64T    26T   71%
+/dev/grid/node-x17-y5    87T   64T    23T   73%
+/dev/grid/node-x17-y6    86T   72T    14T   83%
+/dev/grid/node-x17-y7    90T   65T    25T   72%
+/dev/grid/node-x17-y8    85T   71T    14T   83%
+/dev/grid/node-x17-y9    93T   68T    25T   73%
+/dev/grid/node-x17-y10   87T   65T    22T   74%
+/dev/grid/node-x17-y11   87T   71T    16T   81%
+/dev/grid/node-x17-y12   90T   73T    17T   81%
+/dev/grid/node-x17-y13   92T   71T    21T   77%
+/dev/grid/node-x17-y14   91T   69T    22T   75%
+/dev/grid/node-x17-y15   88T   73T    15T   82%
+/dev/grid/node-x17-y16   88T   73T    15T   82%
+/dev/grid/node-x17-y17   88T   71T    17T   80%
+/dev/grid/node-x17-y18   87T   66T    21T   75%
+/dev/grid/node-x17-y19   89T   71T    18T   79%
+/dev/grid/node-x17-y20   91T   72T    19T   79%
+/dev/grid/node-x17-y21   93T   69T    24T   74%
+/dev/grid/node-x17-y22   85T   68T    17T   80%
+/dev/grid/node-x17-y23   93T   67T    26T   72%
+/dev/grid/node-x17-y24  505T  494T    11T   97%
+/dev/grid/node-x17-y25   88T   72T    16T   81%
+/dev/grid/node-x17-y26   93T   72T    21T   77%
+/dev/grid/node-x17-y27   85T   72T    13T   84%
+/dev/grid/node-x18-y0    92T   70T    22T   76%
+/dev/grid/node-x18-y1    89T   72T    17T   80%
+/dev/grid/node-x18-y2    85T   66T    19T   77%
+/dev/grid/node-x18-y3    90T   68T    22T   75%
+/dev/grid/node-x18-y4    92T   69T    23T   75%
+/dev/grid/node-x18-y5    91T   70T    21T   76%
+/dev/grid/node-x18-y6    87T   68T    19T   78%
+/dev/grid/node-x18-y7    93T   66T    27T   70%
+/dev/grid/node-x18-y8    87T   64T    23T   73%
+/dev/grid/node-x18-y9    89T   72T    17T   80%
+/dev/grid/node-x18-y10   86T   69T    17T   80%
+/dev/grid/node-x18-y11   90T   73T    17T   81%
+/dev/grid/node-x18-y12   92T   72T    20T   78%
+/dev/grid/node-x18-y13   90T   70T    20T   77%
+/dev/grid/node-x18-y14   87T   72T    15T   82%
+/dev/grid/node-x18-y15   89T   70T    19T   78%
+/dev/grid/node-x18-y16   90T   73T    17T   81%
+/dev/grid/node-x18-y17   92T   66T    26T   71%
+/dev/grid/node-x18-y18   87T   73T    14T   83%
+/dev/grid/node-x18-y19   90T   70T    20T   77%
+/dev/grid/node-x18-y20   94T   66T    28T   70%
+/dev/grid/node-x18-y21   88T   73T    15T   82%
+/dev/grid/node-x18-y22   87T   72T    15T   82%
+/dev/grid/node-x18-y23   85T   65T    20T   76%
+/dev/grid/node-x18-y24  504T  498T     6T   98%
+/dev/grid/node-x18-y25   89T   70T    19T   78%
+/dev/grid/node-x18-y26   86T   69T    17T   80%
+/dev/grid/node-x18-y27   94T   70T    24T   74%
+/dev/grid/node-x19-y0    89T   69T    20T   77%
+/dev/grid/node-x19-y1    90T   72T    18T   80%
+/dev/grid/node-x19-y2    91T   68T    23T   74%
+/dev/grid/node-x19-y3    85T   64T    21T   75%
+/dev/grid/node-x19-y4    92T   66T    26T   71%
+/dev/grid/node-x19-y5    89T   65T    24T   73%
+/dev/grid/node-x19-y6    85T   64T    21T   75%
+/dev/grid/node-x19-y7    87T   66T    21T   75%
+/dev/grid/node-x19-y8    90T   65T    25T   72%
+/dev/grid/node-x19-y9    86T   73T    13T   84%
+/dev/grid/node-x19-y10   91T   73T    18T   80%
+/dev/grid/node-x19-y11   91T   64T    27T   70%
+/dev/grid/node-x19-y12   91T   69T    22T   75%
+/dev/grid/node-x19-y13   93T   71T    22T   76%
+/dev/grid/node-x19-y14   88T   67T    21T   76%
+/dev/grid/node-x19-y15   85T   66T    19T   77%
+/dev/grid/node-x19-y16   92T   65T    27T   70%
+/dev/grid/node-x19-y17   85T   67T    18T   78%
+/dev/grid/node-x19-y18   86T   72T    14T   83%
+/dev/grid/node-x19-y19   90T   72T    18T   80%
+/dev/grid/node-x19-y20   87T   65T    22T   74%
+/dev/grid/node-x19-y21   93T   64T    29T   68%
+/dev/grid/node-x19-y22   91T   73T    18T   80%
+/dev/grid/node-x19-y23   93T   65T    28T   69%
+/dev/grid/node-x19-y24  510T  495T    15T   97%
+/dev/grid/node-x19-y25   86T   69T    17T   80%
+/dev/grid/node-x19-y26   94T   68T    26T   72%
+/dev/grid/node-x19-y27   86T   66T    20T   76%
+/dev/grid/node-x20-y0    91T   67T    24T   73%
+/dev/grid/node-x20-y1    92T   67T    25T   72%
+/dev/grid/node-x20-y2    88T   64T    24T   72%
+/dev/grid/node-x20-y3    93T   68T    25T   73%
+/dev/grid/node-x20-y4    88T   71T    17T   80%
+/dev/grid/node-x20-y5    94T   68T    26T   72%
+/dev/grid/node-x20-y6    85T   68T    17T   80%
+/dev/grid/node-x20-y7    89T   65T    24T   73%
+/dev/grid/node-x20-y8    85T   64T    21T   75%
+/dev/grid/node-x20-y9    91T   66T    25T   72%
+/dev/grid/node-x20-y10   94T   64T    30T   68%
+/dev/grid/node-x20-y11   87T   68T    19T   78%
+/dev/grid/node-x20-y12   90T   71T    19T   78%
+/dev/grid/node-x20-y13   90T   67T    23T   74%
+/dev/grid/node-x20-y14   91T   64T    27T   70%
+/dev/grid/node-x20-y15   85T   72T    13T   84%
+/dev/grid/node-x20-y16   87T   65T    22T   74%
+/dev/grid/node-x20-y17   89T   71T    18T   79%
+/dev/grid/node-x20-y18   87T   66T    21T   75%
+/dev/grid/node-x20-y19   88T   71T    17T   80%
+/dev/grid/node-x20-y20   94T   71T    23T   75%
+/dev/grid/node-x20-y21   91T   68T    23T   74%
+/dev/grid/node-x20-y22   92T   71T    21T   77%
+/dev/grid/node-x20-y23   88T   68T    20T   77%
+/dev/grid/node-x20-y24  507T  498T     9T   98%
+/dev/grid/node-x20-y25   87T   71T    16T   81%
+/dev/grid/node-x20-y26   88T   69T    19T   78%
+/dev/grid/node-x20-y27   87T   69T    18T   79%
+/dev/grid/node-x21-y0    92T   70T    22T   76%
+/dev/grid/node-x21-y1    89T   64T    25T   71%
+/dev/grid/node-x21-y2    86T   67T    19T   77%
+/dev/grid/node-x21-y3    88T   66T    22T   75%
+/dev/grid/node-x21-y4    89T   68T    21T   76%
+/dev/grid/node-x21-y5    86T   67T    19T   77%
+/dev/grid/node-x21-y6    87T   68T    19T   78%
+/dev/grid/node-x21-y7    89T   73T    16T   82%
+/dev/grid/node-x21-y8    87T   71T    16T   81%
+/dev/grid/node-x21-y9    90T   71T    19T   78%
+/dev/grid/node-x21-y10   92T   69T    23T   75%
+/dev/grid/node-x21-y11   92T   70T    22T   76%
+/dev/grid/node-x21-y12   92T   64T    28T   69%
+/dev/grid/node-x21-y13   91T   69T    22T   75%
+/dev/grid/node-x21-y14   89T   64T    25T   71%
+/dev/grid/node-x21-y15   92T   67T    25T   72%
+/dev/grid/node-x21-y16   93T   65T    28T   69%
+/dev/grid/node-x21-y17   89T   69T    20T   77%
+/dev/grid/node-x21-y18   86T   73T    13T   84%
+/dev/grid/node-x21-y19   93T   67T    26T   72%
+/dev/grid/node-x21-y20   88T   70T    18T   79%
+/dev/grid/node-x21-y21   93T   68T    25T   73%
+/dev/grid/node-x21-y22   94T   64T    30T   68%
+/dev/grid/node-x21-y23   90T   71T    19T   78%
+/dev/grid/node-x21-y24  504T  496T     8T   98%
+/dev/grid/node-x21-y25   94T   72T    22T   76%
+/dev/grid/node-x21-y26   93T   70T    23T   75%
+/dev/grid/node-x21-y27   88T   71T    17T   80%
+/dev/grid/node-x22-y0    94T   66T    28T   70%
+/dev/grid/node-x22-y1    92T   71T    21T   77%
+/dev/grid/node-x22-y2    92T   66T    26T   71%
+/dev/grid/node-x22-y3    93T   64T    29T   68%
+/dev/grid/node-x22-y4    88T   65T    23T   73%
+/dev/grid/node-x22-y5    91T   67T    24T   73%
+/dev/grid/node-x22-y6    91T   67T    24T   73%
+/dev/grid/node-x22-y7    85T   69T    16T   81%
+/dev/grid/node-x22-y8    85T   69T    16T   81%
+/dev/grid/node-x22-y9    85T   72T    13T   84%
+/dev/grid/node-x22-y10   85T   69T    16T   81%
+/dev/grid/node-x22-y11   87T   73T    14T   83%
+/dev/grid/node-x22-y12   91T   67T    24T   73%
+/dev/grid/node-x22-y13   94T   73T    21T   77%
+/dev/grid/node-x22-y14   91T   73T    18T   80%
+/dev/grid/node-x22-y15   86T   73T    13T   84%
+/dev/grid/node-x22-y16   85T   73T    12T   85%
+/dev/grid/node-x22-y17   92T   66T    26T   71%
+/dev/grid/node-x22-y18   86T   67T    19T   77%
+/dev/grid/node-x22-y19   88T   73T    15T   82%
+/dev/grid/node-x22-y20   91T   72T    19T   79%
+/dev/grid/node-x22-y21   92T   65T    27T   70%
+/dev/grid/node-x22-y22   85T   65T    20T   76%
+/dev/grid/node-x22-y23   93T   69T    24T   74%
+/dev/grid/node-x22-y24  501T  494T     7T   98%
+/dev/grid/node-x22-y25   93T   69T    24T   74%
+/dev/grid/node-x22-y26   89T   72T    17T   80%
+/dev/grid/node-x22-y27   94T   71T    23T   75%
+/dev/grid/node-x23-y0    89T   70T    19T   78%
+/dev/grid/node-x23-y1    93T   64T    29T   68%
+/dev/grid/node-x23-y2    94T   65T    29T   69%
+/dev/grid/node-x23-y3    86T   67T    19T   77%
+/dev/grid/node-x23-y4    91T   72T    19T   79%
+/dev/grid/node-x23-y5    86T   64T    22T   74%
+/dev/grid/node-x23-y6    88T   69T    19T   78%
+/dev/grid/node-x23-y7    88T   66T    22T   75%
+/dev/grid/node-x23-y8    87T   64T    23T   73%
+/dev/grid/node-x23-y9    85T   69T    16T   81%
+/dev/grid/node-x23-y10   85T   68T    17T   80%
+/dev/grid/node-x23-y11   92T   65T    27T   70%
+/dev/grid/node-x23-y12   94T   70T    24T   74%
+/dev/grid/node-x23-y13   88T   67T    21T   76%
+/dev/grid/node-x23-y14   91T   67T    24T   73%
+/dev/grid/node-x23-y15   91T   73T    18T   80%
+/dev/grid/node-x23-y16   91T   73T    18T   80%
+/dev/grid/node-x23-y17   89T   68T    21T   76%
+/dev/grid/node-x23-y18   86T   73T    13T   84%
+/dev/grid/node-x23-y19   87T   72T    15T   82%
+/dev/grid/node-x23-y20   88T   66T    22T   75%
+/dev/grid/node-x23-y21   89T   71T    18T   79%
+/dev/grid/node-x23-y22   89T   66T    23T   74%
+/dev/grid/node-x23-y23   92T   73T    19T   79%
+/dev/grid/node-x23-y24  503T  493T    10T   98%
+/dev/grid/node-x23-y25   86T   68T    18T   79%
+/dev/grid/node-x23-y26   94T   68T    26T   72%
+/dev/grid/node-x23-y27   92T   65T    27T   70%
+/dev/grid/node-x24-y0    91T   70T    21T   76%
+/dev/grid/node-x24-y1    87T   73T    14T   83%
+/dev/grid/node-x24-y2    92T   66T    26T   71%
+/dev/grid/node-x24-y3    86T   72T    14T   83%
+/dev/grid/node-x24-y4    88T   70T    18T   79%
+/dev/grid/node-x24-y5    90T   65T    25T   72%
+/dev/grid/node-x24-y6    88T   67T    21T   76%
+/dev/grid/node-x24-y7    86T   68T    18T   79%
+/dev/grid/node-x24-y8    91T   73T    18T   80%
+/dev/grid/node-x24-y9    93T   71T    22T   76%
+/dev/grid/node-x24-y10   86T   69T    17T   80%
+/dev/grid/node-x24-y11   93T   69T    24T   74%
+/dev/grid/node-x24-y12   89T   72T    17T   80%
+/dev/grid/node-x24-y13   91T   71T    20T   78%
+/dev/grid/node-x24-y14   86T   71T    15T   82%
+/dev/grid/node-x24-y15   87T   67T    20T   77%
+/dev/grid/node-x24-y16   92T   72T    20T   78%
+/dev/grid/node-x24-y17   88T   64T    24T   72%
+/dev/grid/node-x24-y18   91T   67T    24T   73%
+/dev/grid/node-x24-y19   93T   69T    24T   74%
+/dev/grid/node-x24-y20   91T   72T    19T   79%
+/dev/grid/node-x24-y21   87T   66T    21T   75%
+/dev/grid/node-x24-y22   87T   72T    15T   82%
+/dev/grid/node-x24-y23   94T   67T    27T   71%
+/dev/grid/node-x24-y24  504T  497T     7T   98%
+/dev/grid/node-x24-y25   91T   71T    20T   78%
+/dev/grid/node-x24-y26   92T   65T    27T   70%
+/dev/grid/node-x24-y27   85T   67T    18T   78%
+/dev/grid/node-x25-y0    89T   66T    23T   74%
+/dev/grid/node-x25-y1    88T   71T    17T   80%
+/dev/grid/node-x25-y2    93T   72T    21T   77%
+/dev/grid/node-x25-y3    92T   65T    27T   70%
+/dev/grid/node-x25-y4    88T   65T    23T   73%
+/dev/grid/node-x25-y5    89T   64T    25T   71%
+/dev/grid/node-x25-y6    87T   73T    14T   83%
+/dev/grid/node-x25-y7    88T   67T    21T   76%
+/dev/grid/node-x25-y8    92T   68T    24T   73%
+/dev/grid/node-x25-y9    86T   70T    16T   81%
+/dev/grid/node-x25-y10   91T   68T    23T   74%
+/dev/grid/node-x25-y11   90T   65T    25T   72%
+/dev/grid/node-x25-y12   92T   67T    25T   72%
+/dev/grid/node-x25-y13   90T   66T    24T   73%
+/dev/grid/node-x25-y14   93T   66T    27T   70%
+/dev/grid/node-x25-y15   86T   68T    18T   79%
+/dev/grid/node-x25-y16   92T   69T    23T   75%
+/dev/grid/node-x25-y17   88T   66T    22T   75%
+/dev/grid/node-x25-y18   91T   73T    18T   80%
+/dev/grid/node-x25-y19   86T   71T    15T   82%
+/dev/grid/node-x25-y20   88T   70T    18T   79%
+/dev/grid/node-x25-y21   85T   66T    19T   77%
+/dev/grid/node-x25-y22   92T   64T    28T   69%
+/dev/grid/node-x25-y23   87T   72T    15T   82%
+/dev/grid/node-x25-y24  506T  493T    13T   97%
+/dev/grid/node-x25-y25   85T   64T    21T   75%
+/dev/grid/node-x25-y26   87T   64T    23T   73%
+/dev/grid/node-x25-y27   88T   72T    16T   81%
+/dev/grid/node-x26-y0    87T   73T    14T   83%
+/dev/grid/node-x26-y1    91T   72T    19T   79%
+/dev/grid/node-x26-y2    86T   66T    20T   76%
+/dev/grid/node-x26-y3    86T   72T    14T   83%
+/dev/grid/node-x26-y4    90T   67T    23T   74%
+/dev/grid/node-x26-y5    87T   70T    17T   80%
+/dev/grid/node-x26-y6    87T   64T    23T   73%
+/dev/grid/node-x26-y7    90T   64T    26T   71%
+/dev/grid/node-x26-y8    85T   64T    21T   75%
+/dev/grid/node-x26-y9    92T   68T    24T   73%
+/dev/grid/node-x26-y10   92T   65T    27T   70%
+/dev/grid/node-x26-y11   88T   65T    23T   73%
+/dev/grid/node-x26-y12   85T   70T    15T   82%
+/dev/grid/node-x26-y13   86T   68T    18T   79%
+/dev/grid/node-x26-y14   92T   70T    22T   76%
+/dev/grid/node-x26-y15   89T   68T    21T   76%
+/dev/grid/node-x26-y16   89T   66T    23T   74%
+/dev/grid/node-x26-y17   86T   71T    15T   82%
+/dev/grid/node-x26-y18   87T   68T    19T   78%
+/dev/grid/node-x26-y19   88T   69T    19T   78%
+/dev/grid/node-x26-y20   92T   67T    25T   72%
+/dev/grid/node-x26-y21   94T   69T    25T   73%
+/dev/grid/node-x26-y22   86T   68T    18T   79%
+/dev/grid/node-x26-y23   85T   73T    12T   85%
+/dev/grid/node-x26-y24  508T  498T    10T   98%
+/dev/grid/node-x26-y25   85T   73T    12T   85%
+/dev/grid/node-x26-y26   88T   69T    19T   78%
+/dev/grid/node-x26-y27   89T   68T    21T   76%
+/dev/grid/node-x27-y0    86T   64T    22T   74%
+/dev/grid/node-x27-y1    93T   65T    28T   69%
+/dev/grid/node-x27-y2    92T   71T    21T   77%
+/dev/grid/node-x27-y3    87T   68T    19T   78%
+/dev/grid/node-x27-y4    92T   64T    28T   69%
+/dev/grid/node-x27-y5    91T   65T    26T   71%
+/dev/grid/node-x27-y6    86T   64T    22T   74%
+/dev/grid/node-x27-y7    90T   73T    17T   81%
+/dev/grid/node-x27-y8    91T   67T    24T   73%
+/dev/grid/node-x27-y9    85T   69T    16T   81%
+/dev/grid/node-x27-y10   92T   64T    28T   69%
+/dev/grid/node-x27-y11   93T   69T    24T   74%
+/dev/grid/node-x27-y12   90T   69T    21T   76%
+/dev/grid/node-x27-y13   87T   72T    15T   82%
+/dev/grid/node-x27-y14   94T   70T    24T   74%
+/dev/grid/node-x27-y15   91T   72T    19T   79%
+/dev/grid/node-x27-y16   86T   70T    16T   81%
+/dev/grid/node-x27-y17   90T   67T    23T   74%
+/dev/grid/node-x27-y18   86T   73T    13T   84%
+/dev/grid/node-x27-y19   92T   66T    26T   71%
+/dev/grid/node-x27-y20   94T   64T    30T   68%
+/dev/grid/node-x27-y21   89T   70T    19T   78%
+/dev/grid/node-x27-y22   91T   73T    18T   80%
+/dev/grid/node-x27-y23   89T   67T    22T   75%
+/dev/grid/node-x27-y24  503T  490T    13T   97%
+/dev/grid/node-x27-y25   94T   67T    27T   71%
+/dev/grid/node-x27-y26   90T   68T    22T   75%
+/dev/grid/node-x27-y27   87T   72T    15T   82%
+/dev/grid/node-x28-y0    90T   68T    22T   75%
+/dev/grid/node-x28-y1    86T   73T    13T   84%
+/dev/grid/node-x28-y2    88T   73T    15T   82%
+/dev/grid/node-x28-y3    93T   70T    23T   75%
+/dev/grid/node-x28-y4    86T   64T    22T   74%
+/dev/grid/node-x28-y5    86T   69T    17T   80%
+/dev/grid/node-x28-y6    89T   71T    18T   79%
+/dev/grid/node-x28-y7    94T   72T    22T   76%
+/dev/grid/node-x28-y8    85T   68T    17T   80%
+/dev/grid/node-x28-y9    90T   69T    21T   76%
+/dev/grid/node-x28-y10   87T   73T    14T   83%
+/dev/grid/node-x28-y11   86T   64T    22T   74%
+/dev/grid/node-x28-y12   88T   71T    17T   80%
+/dev/grid/node-x28-y13   87T   64T    23T   73%
+/dev/grid/node-x28-y14   94T   71T    23T   75%
+/dev/grid/node-x28-y15   85T   73T    12T   85%
+/dev/grid/node-x28-y16   86T   69T    17T   80%
+/dev/grid/node-x28-y17   92T   72T    20T   78%
+/dev/grid/node-x28-y18   88T   71T    17T   80%
+/dev/grid/node-x28-y19   85T   68T    17T   80%
+/dev/grid/node-x28-y20   94T   65T    29T   69%
+/dev/grid/node-x28-y21   85T   71T    14T   83%
+/dev/grid/node-x28-y22   85T   67T    18T   78%
+/dev/grid/node-x28-y23   94T   65T    29T   69%
+/dev/grid/node-x28-y24  509T  496T    13T   97%
+/dev/grid/node-x28-y25   93T   71T    22T   76%
+/dev/grid/node-x28-y26   87T   72T    15T   82%
+/dev/grid/node-x28-y27   90T   72T    18T   80%
+/dev/grid/node-x29-y0    91T   67T    24T   73%
+/dev/grid/node-x29-y1    90T   66T    24T   73%
+/dev/grid/node-x29-y2    89T   71T    18T   79%
+/dev/grid/node-x29-y3    87T   68T    19T   78%
+/dev/grid/node-x29-y4    86T   64T    22T   74%
+/dev/grid/node-x29-y5    93T   73T    20T   78%
+/dev/grid/node-x29-y6    86T   65T    21T   75%
+/dev/grid/node-x29-y7    94T   70T    24T   74%
+/dev/grid/node-x29-y8    88T   72T    16T   81%
+/dev/grid/node-x29-y9    93T   66T    27T   70%
+/dev/grid/node-x29-y10   89T   65T    24T   73%
+/dev/grid/node-x29-y11   89T   72T    17T   80%
+/dev/grid/node-x29-y12   88T   72T    16T   81%
+/dev/grid/node-x29-y13   94T   71T    23T   75%
+/dev/grid/node-x29-y14   93T   65T    28T   69%
+/dev/grid/node-x29-y15   89T   72T    17T   80%
+/dev/grid/node-x29-y16   85T   71T    14T   83%
+/dev/grid/node-x29-y17   93T   68T    25T   73%
+/dev/grid/node-x29-y18   86T   66T    20T   76%
+/dev/grid/node-x29-y19   90T   65T    25T   72%
+/dev/grid/node-x29-y20   94T   66T    28T   70%
+/dev/grid/node-x29-y21   87T   68T    19T   78%
+/dev/grid/node-x29-y22   92T   70T    22T   76%
+/dev/grid/node-x29-y23   92T   72T    20T   78%
+/dev/grid/node-x29-y24  508T  497T    11T   97%
+/dev/grid/node-x29-y25   87T   64T    23T   73%
+/dev/grid/node-x29-y26   86T   68T    18T   79%
+/dev/grid/node-x29-y27   87T   71T    16T   81%
+/dev/grid/node-x30-y0    89T   71T    18T   79%
+/dev/grid/node-x30-y1    93T   64T    29T   68%
+/dev/grid/node-x30-y2    86T   73T    13T   84%
+/dev/grid/node-x30-y3    89T   71T    18T   79%
+/dev/grid/node-x30-y4    86T   70T    16T   81%
+/dev/grid/node-x30-y5    85T   70T    15T   82%
+/dev/grid/node-x30-y6    85T   72T    13T   84%
+/dev/grid/node-x30-y7    94T   64T    30T   68%
+/dev/grid/node-x30-y8    94T   64T    30T   68%
+/dev/grid/node-x30-y9    89T   65T    24T   73%
+/dev/grid/node-x30-y10   87T   71T    16T   81%
+/dev/grid/node-x30-y11   93T   64T    29T   68%
+/dev/grid/node-x30-y12   91T   67T    24T   73%
+/dev/grid/node-x30-y13   89T   68T    21T   76%
+/dev/grid/node-x30-y14   88T   67T    21T   76%
+/dev/grid/node-x30-y15   85T   71T    14T   83%
+/dev/grid/node-x30-y16   85T   64T    21T   75%
+/dev/grid/node-x30-y17   86T   73T    13T   84%
+/dev/grid/node-x30-y18   89T   65T    24T   73%
+/dev/grid/node-x30-y19   92T   72T    20T   78%
+/dev/grid/node-x30-y20   88T   70T    18T   79%
+/dev/grid/node-x30-y21   94T   66T    28T   70%
+/dev/grid/node-x30-y22   91T   68T    23T   74%
+/dev/grid/node-x30-y23   90T   66T    24T   73%
+/dev/grid/node-x30-y24  509T  494T    15T   97%
+/dev/grid/node-x30-y25   86T   72T    14T   83%
+/dev/grid/node-x30-y26   90T   65T    25T   72%
+/dev/grid/node-x30-y27   85T   69T    16T   81%
+/dev/grid/node-x31-y0    88T   64T    24T   72%
+/dev/grid/node-x31-y1    92T   70T    22T   76%
+/dev/grid/node-x31-y2    90T   69T    21T   76%
+/dev/grid/node-x31-y3    87T   70T    17T   80%
+/dev/grid/node-x31-y4    92T   72T    20T   78%
+/dev/grid/node-x31-y5    94T   72T    22T   76%
+/dev/grid/node-x31-y6    91T   68T    23T   74%
+/dev/grid/node-x31-y7    90T   69T    21T   76%
+/dev/grid/node-x31-y8    91T   64T    27T   70%
+/dev/grid/node-x31-y9    87T   68T    19T   78%
+/dev/grid/node-x31-y10   87T   69T    18T   79%
+/dev/grid/node-x31-y11   90T   68T    22T   75%
+/dev/grid/node-x31-y12   92T   70T    22T   76%
+/dev/grid/node-x31-y13   93T   64T    29T   68%
+/dev/grid/node-x31-y14   91T   66T    25T   72%
+/dev/grid/node-x31-y15   87T   64T    23T   73%
+/dev/grid/node-x31-y16   94T   69T    25T   73%
+/dev/grid/node-x31-y17   89T   70T    19T   78%
+/dev/grid/node-x31-y18   91T   69T    22T   75%
+/dev/grid/node-x31-y19   85T   69T    16T   81%
+/dev/grid/node-x31-y20   86T   67T    19T   77%
+/dev/grid/node-x31-y21   93T   69T    24T   74%
+/dev/grid/node-x31-y22   93T   64T    29T   68%
+/dev/grid/node-x31-y23   87T   73T    14T   83%
+/dev/grid/node-x31-y24  510T  494T    16T   96%
+/dev/grid/node-x31-y25   90T   68T    22T   75%
+/dev/grid/node-x31-y26   89T   73T    16T   82%
+/dev/grid/node-x31-y27   91T   65T    26T   71%
+/dev/grid/node-x32-y0    93T   70T    23T   75%
+/dev/grid/node-x32-y1    90T   71T    19T   78%
+/dev/grid/node-x32-y2    87T   71T    16T   81%
+/dev/grid/node-x32-y3    94T   64T    30T   68%
+/dev/grid/node-x32-y4    90T   64T    26T   71%
+/dev/grid/node-x32-y5    90T   67T    23T   74%
+/dev/grid/node-x32-y6    90T   70T    20T   77%
+/dev/grid/node-x32-y7    94T   64T    30T   68%
+/dev/grid/node-x32-y8    91T   67T    24T   73%
+/dev/grid/node-x32-y9    89T   64T    25T   71%
+/dev/grid/node-x32-y10   88T   70T    18T   79%
+/dev/grid/node-x32-y11   85T   68T    17T   80%
+/dev/grid/node-x32-y12   85T   68T    17T   80%
+/dev/grid/node-x32-y13   86T   68T    18T   79%
+/dev/grid/node-x32-y14   87T   71T    16T   81%
+/dev/grid/node-x32-y15   85T   70T    15T   82%
+/dev/grid/node-x32-y16   92T   71T    21T   77%
+/dev/grid/node-x32-y17   88T   71T    17T   80%
+/dev/grid/node-x32-y18   93T   71T    22T   76%
+/dev/grid/node-x32-y19   89T   67T    22T   75%
+/dev/grid/node-x32-y20   85T   68T    17T   80%
+/dev/grid/node-x32-y21   86T   65T    21T   75%
+/dev/grid/node-x32-y22   91T   70T    21T   76%
+/dev/grid/node-x32-y23   87T   72T    15T   82%
+/dev/grid/node-x32-y24  506T  490T    16T   96%
+/dev/grid/node-x32-y25   94T   68T    26T   72%
+/dev/grid/node-x32-y26   86T   65T    21T   75%
+/dev/grid/node-x32-y27   91T   70T    21T   76%
+/dev/grid/node-x33-y0    90T   72T    18T   80%
+/dev/grid/node-x33-y1    90T   70T    20T   77%
+/dev/grid/node-x33-y2    94T   69T    25T   73%
+/dev/grid/node-x33-y3    86T   67T    19T   77%
+/dev/grid/node-x33-y4    88T   66T    22T   75%
+/dev/grid/node-x33-y5    91T   67T    24T   73%
+/dev/grid/node-x33-y6    94T   65T    29T   69%
+/dev/grid/node-x33-y7    89T   67T    22T   75%
+/dev/grid/node-x33-y8    87T   72T    15T   82%
+/dev/grid/node-x33-y9    93T   68T    25T   73%
+/dev/grid/node-x33-y10   91T   71T    20T   78%
+/dev/grid/node-x33-y11   87T   69T    18T   79%
+/dev/grid/node-x33-y12   88T   65T    23T   73%
+/dev/grid/node-x33-y13   86T   64T    22T   74%
+/dev/grid/node-x33-y14   92T   67T    25T   72%
+/dev/grid/node-x33-y15   94T   67T    27T   71%
+/dev/grid/node-x33-y16   85T   73T    12T   85%
+/dev/grid/node-x33-y17   92T   64T    28T   69%
+/dev/grid/node-x33-y18   87T   65T    22T   74%
+/dev/grid/node-x33-y19   87T   68T    19T   78%
+/dev/grid/node-x33-y20   89T   73T    16T   82%
+/dev/grid/node-x33-y21   87T   65T    22T   74%
+/dev/grid/node-x33-y22   92T   71T    21T   77%
+/dev/grid/node-x33-y23   89T   67T    22T   75%
+/dev/grid/node-x33-y24  505T  497T     8T   98%
+/dev/grid/node-x33-y25   91T   64T    27T   70%
+/dev/grid/node-x33-y26   88T   67T    21T   76%
+/dev/grid/node-x33-y27   93T   68T    25T   73%
+/dev/grid/node-x34-y0    88T   66T    22T   75%
+/dev/grid/node-x34-y1    94T   69T    25T   73%
+/dev/grid/node-x34-y2    89T   66T    23T   74%
+/dev/grid/node-x34-y3    90T   64T    26T   71%
+/dev/grid/node-x34-y4    86T   73T    13T   84%
+/dev/grid/node-x34-y5    93T   67T    26T   72%
+/dev/grid/node-x34-y6    86T   73T    13T   84%
+/dev/grid/node-x34-y7    85T   70T    15T   82%
+/dev/grid/node-x34-y8    92T   70T    22T   76%
+/dev/grid/node-x34-y9    89T   67T    22T   75%
+/dev/grid/node-x34-y10   86T   68T    18T   79%
+/dev/grid/node-x34-y11   91T   65T    26T   71%
+/dev/grid/node-x34-y12   94T   72T    22T   76%
+/dev/grid/node-x34-y13   91T   70T    21T   76%
+/dev/grid/node-x34-y14   91T   72T    19T   79%
+/dev/grid/node-x34-y15   91T   64T    27T   70%
+/dev/grid/node-x34-y16   89T   67T    22T   75%
+/dev/grid/node-x34-y17   92T   67T    25T   72%
+/dev/grid/node-x34-y18   89T   69T    20T   77%
+/dev/grid/node-x34-y19   87T   66T    21T   75%
+/dev/grid/node-x34-y20   94T   71T    23T   75%
+/dev/grid/node-x34-y21   86T   71T    15T   82%
+/dev/grid/node-x34-y22   89T   72T    17T   80%
+/dev/grid/node-x34-y23   87T   73T    14T   83%
+/dev/grid/node-x34-y24  509T  494T    15T   97%
+/dev/grid/node-x34-y25   88T   69T    19T   78%
+/dev/grid/node-x34-y26   87T    0T    87T    0%
+/dev/grid/node-x34-y27   90T   67T    23T   74%
+/dev/grid/node-x35-y0    94T   69T    25T   73%
+/dev/grid/node-x35-y1    90T   71T    19T   78%
+/dev/grid/node-x35-y2    93T   72T    21T   77%
+/dev/grid/node-x35-y3    85T   64T    21T   75%
+/dev/grid/node-x35-y4    91T   69T    22T   75%
+/dev/grid/node-x35-y5    94T   73T    21T   77%
+/dev/grid/node-x35-y6    88T   65T    23T   73%
+/dev/grid/node-x35-y7    91T   67T    24T   73%
+/dev/grid/node-x35-y8    90T   66T    24T   73%
+/dev/grid/node-x35-y9    94T   70T    24T   74%
+/dev/grid/node-x35-y10   92T   68T    24T   73%
+/dev/grid/node-x35-y11   90T   64T    26T   71%
+/dev/grid/node-x35-y12   92T   68T    24T   73%
+/dev/grid/node-x35-y13   94T   64T    30T   68%
+/dev/grid/node-x35-y14   94T   68T    26T   72%
+/dev/grid/node-x35-y15   94T   68T    26T   72%
+/dev/grid/node-x35-y16   94T   70T    24T   74%
+/dev/grid/node-x35-y17   93T   68T    25T   73%
+/dev/grid/node-x35-y18   88T   70T    18T   79%
+/dev/grid/node-x35-y19   89T   66T    23T   74%
+/dev/grid/node-x35-y20   85T   73T    12T   85%
+/dev/grid/node-x35-y21   89T   72T    17T   80%
+/dev/grid/node-x35-y22   86T   72T    14T   83%
+/dev/grid/node-x35-y23   89T   71T    18T   79%
+/dev/grid/node-x35-y24  510T  498T    12T   97%
+/dev/grid/node-x35-y25   93T   69T    24T   74%
+/dev/grid/node-x35-y26   86T   71T    15T   82%
+/dev/grid/node-x35-y27   89T   64T    25T   71%
+/dev/grid/node-x36-y0    87T   64T    23T   73%
+/dev/grid/node-x36-y1    91T   69T    22T   75%
+/dev/grid/node-x36-y2    87T   68T    19T   78%
+/dev/grid/node-x36-y3    90T   65T    25T   72%
+/dev/grid/node-x36-y4    90T   65T    25T   72%
+/dev/grid/node-x36-y5    87T   68T    19T   78%
+/dev/grid/node-x36-y6    94T   70T    24T   74%
+/dev/grid/node-x36-y7    94T   68T    26T   72%
+/dev/grid/node-x36-y8    90T   69T    21T   76%
+/dev/grid/node-x36-y9    88T   67T    21T   76%
+/dev/grid/node-x36-y10   93T   64T    29T   68%
+/dev/grid/node-x36-y11   89T   71T    18T   79%
+/dev/grid/node-x36-y12   88T   65T    23T   73%
+/dev/grid/node-x36-y13   89T   73T    16T   82%
+/dev/grid/node-x36-y14   86T   70T    16T   81%
+/dev/grid/node-x36-y15   87T   64T    23T   73%
+/dev/grid/node-x36-y16   86T   71T    15T   82%
+/dev/grid/node-x36-y17   85T   71T    14T   83%
+/dev/grid/node-x36-y18   90T   72T    18T   80%
+/dev/grid/node-x36-y19   92T   68T    24T   73%
+/dev/grid/node-x36-y20   91T   66T    25T   72%
+/dev/grid/node-x36-y21   87T   67T    20T   77%
+/dev/grid/node-x36-y22   85T   66T    19T   77%
+/dev/grid/node-x36-y23   86T   67T    19T   77%
+/dev/grid/node-x36-y24  502T  499T     3T   99%
+/dev/grid/node-x36-y25   94T   70T    24T   74%
+/dev/grid/node-x36-y26   85T   72T    13T   84%
+/dev/grid/node-x36-y27   87T   68T    19T   78%
+/dev/grid/node-x37-y0    93T   70T    23T   75%
+/dev/grid/node-x37-y1    92T   72T    20T   78%
+/dev/grid/node-x37-y2    89T   73T    16T   82%
+/dev/grid/node-x37-y3    94T   70T    24T   74%
+/dev/grid/node-x37-y4    92T   66T    26T   71%
+/dev/grid/node-x37-y5    91T   64T    27T   70%
+/dev/grid/node-x37-y6    87T   64T    23T   73%
+/dev/grid/node-x37-y7    90T   72T    18T   80%
+/dev/grid/node-x37-y8    91T   66T    25T   72%
+/dev/grid/node-x37-y9    94T   65T    29T   69%
+/dev/grid/node-x37-y10   85T   70T    15T   82%
+/dev/grid/node-x37-y11   89T   69T    20T   77%
+/dev/grid/node-x37-y12   93T   71T    22T   76%
+/dev/grid/node-x37-y13   88T   67T    21T   76%
+/dev/grid/node-x37-y14   94T   67T    27T   71%
+/dev/grid/node-x37-y15   86T   73T    13T   84%
+/dev/grid/node-x37-y16   85T   68T    17T   80%
+/dev/grid/node-x37-y17   89T   72T    17T   80%
+/dev/grid/node-x37-y18   88T   67T    21T   76%
+/dev/grid/node-x37-y19   87T   66T    21T   75%
+/dev/grid/node-x37-y20   88T   69T    19T   78%
+/dev/grid/node-x37-y21   86T   70T    16T   81%
+/dev/grid/node-x37-y22   92T   68T    24T   73%
+/dev/grid/node-x37-y23   87T   70T    17T   80%
+/dev/grid/node-x37-y24  502T  498T     4T   99%
+/dev/grid/node-x37-y25   87T   72T    15T   82%
+/dev/grid/node-x37-y26   90T   64T    26T   71%
+/dev/grid/node-x37-y27   90T   70T    20T   77%
diff --git a/adventofcode16/src/Lib.hs b/adventofcode16/src/Lib.hs
new file mode 100644 (file)
index 0000000..d36ff27
--- /dev/null
@@ -0,0 +1,6 @@
+module Lib
+    ( someFunc
+    ) where
+
+someFunc :: IO ()
+someFunc = putStrLn "someFunc"
diff --git a/adventofcode16/stack.yaml b/adventofcode16/stack.yaml
new file mode 100644 (file)
index 0000000..b77fb38
--- /dev/null
@@ -0,0 +1,10 @@
+flags: {}
+extra-package-dbs: []
+packages:
+- '.'
+system-ghc: true
+extra-deps:
+- astar-0.3.0.0
+- parsec-numbers-0.1.0
+- pqueue-1.3.2
+resolver: lts-6.25
diff --git a/adventofcode16/test/Spec.hs b/adventofcode16/test/Spec.hs
new file mode 100644 (file)
index 0000000..cd4753f
--- /dev/null
@@ -0,0 +1,2 @@
+main :: IO ()
+main = putStrLn "Test suite not yet implemented"
diff --git a/day22.html b/day22.html
new file mode 100644 (file)
index 0000000..3a820ab
--- /dev/null
@@ -0,0 +1,208 @@
+<!DOCTYPE html>
+<html lang="en-us">
+<head>
+<meta charset="utf-8"/>
+<title>Day 22 - Advent of Code 2016</title>
+<!--[if lt IE 9]><script src="/static/html5.js"></script><![endif]-->
+<link href='//fonts.googleapis.com/css?family=Source+Code+Pro:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
+<link rel="stylesheet" type="text/css" href="/static/style.css?9"/>
+<link rel="shortcut icon" href="/favicon.ico?2"/>
+</head><!--
+
+
+
+
+Oh, hello!  Funny seeing you here.
+
+I appreciate your enthusiasm, but you aren't going to find much down here.
+There certainly aren't clues to any of the puzzles.  The best surprises don't
+even appear in the source until you unlock them for real.
+
+Please be careful with automated requests; I'm not Google, and I can only take
+so much traffic.  Please be considerate so that everyone gets to play.
+
+If you're curious about how Advent of Code works, it's running on some custom
+Perl code. Other than a few integrations (auth, analytics, ads, social media),
+I built the whole thing myself, including the design, animations, prose, and
+all of the puzzles.
+
+The puzzles probably took the longest; the easiest ones were around 45 minutes
+each, but the harder ones took 2-3 hours, and a few even longer than that. A
+lot of effort went into building this thing - I hope you're enjoying playing it
+as much as I enjoyed making it for you!
+
+If you'd like to hang out, I'm @ericwastl on Twitter.
+
+- Eric Wastl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-->
+<body>
+<header><div><h1 class="title-global"><a href="/">Advent of Code</a></h1><nav><ul><li><a href="/2016/about">[About]</a></li><li><a href="/2016/support">[AoC++]</a></li><li><a href="/2016/events">[Events]</a></li><li><a href="/2016/settings">[Settings]</a></li><li><a href="/2016/auth/logout">[Log Out]</a></li></ul></nav><div class="user">Neil Smith <span class="supporter">(AoC++)</span> <span class="star-count">44*</span></div></div><div><h1 class="title-event">&nbsp;<span class="title-event-wrap">{'year':</span><a href="/2016">2016</a><span class="title-event-wrap">}</span></h1><nav><ul><li><a href="/2016">[Calendar]</a></li><li><a href="/2016/leaderboard">[Leaderboard]</a></li><li><a href="/2016/stats">[Stats]</a></li><li><a href="/2016/sponsors">[Sponsors]</a></li></ul></nav></div></header>
+
+<div id="sidebar">
+<div id="sponsor"><div class="quiet">Our <a href="/2016/sponsors">sponsors</a> help make AoC possible:</div><p><a href="https://info.esparklearning.com/join-our-team-full-stack-engineer" target="_blank" onclick="if(ga)ga('send','event','sponsor','click',this.href);">eSpark Learning</a> - Solve the greatest puzzle of our day - transform education</p></div>
+<div id="ad">
+<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+<!-- Advent of Code Wide Skyscraper -->
+<ins class="adsbygoogle"
+     style="display:inline-block;width:160px;height:600px"
+     data-ad-client="ca-pub-9420604735624631"
+     data-ad-slot="8014013294"></ins>
+<script>
+(adsbygoogle = window.adsbygoogle || []).push({});
+</script>
+</div><!--/ad-->
+</div><!--/sidebar-->
+
+<main>
+<article class="day-desc"><h2>--- Day 22: Grid Computing ---</h2><p>You gain access to a massive storage cluster arranged in a grid; each storage node is only connected to the four nodes directly adjacent to it (three if the node is on an edge, two if it's in a corner).</p>
+<p>You can directly access data <em>only</em> on node <code>/dev/grid/node-x0-y0</code>, but you can perform some limited actions on the other nodes:</p>
+<ul>
+<li>You can get the disk usage of all nodes (via <a href="https://en.wikipedia.org/wiki/Df_(Unix)#Example"><code>df</code></a>). The result of doing this is in your puzzle input.</li>
+<li>You can instruct a node to <span title="You suspect someone misunderstood the x86 MOV instruction."><em>move</em></span> (not copy) <em>all</em> of its data to an adjacent node (if the destination node has enough space to receive the data). The sending node is left empty after this operation.</li>
+</ul>
+<p>Nodes are named by their position: the node named <code>node-x10-y10</code> is adjacent to nodes <code>node-x9-y10</code>, <code>node-x11-y10</code>, <code>node-x10-y9</code>, and <code>node-x10-y11</code>.</p>
+<p>Before you begin, you need to understand the arrangement of data on these nodes. Even though you can only move data between directly connected nodes, you're going to need to rearrange a lot of the data to get access to the data you need.  Therefore, you need to work out how you might be able to shift data around.</p>
+<p>To do this, you'd like to count the number of <em>viable pairs</em> of nodes.  A viable pair is any two nodes (A,B), <em>regardless of whether they are directly connected</em>, such that:</p>
+<ul>
+<li>Node A is <em>not</em> empty (its <code>Used</code> is not zero).</li>
+<li>Nodes A and B are <em>not the same</em> node.</li>
+<li>The data on node A (its <code>Used</code>) <em>would fit</em> on node B (its <code>Avail</code>).</li>
+</ul>
+<p><em>How many viable pairs</em> of nodes are there?</p>
+</article>
+<p>Your puzzle answer was <code>1034</code>.</p><article class="day-desc"><h2>--- Part Two ---</h2><p>Now that you have a better understanding of the grid, it's time to get to work.</p>
+<p>Your goal is to gain access to the data which begins in the node with <code>y=0</code> and the <em>highest <code>x</code></em> (that is, the node in the top-right corner).</p>
+<p>For example, suppose you have the following grid:</p>
+<pre><code>Filesystem            Size  Used  Avail  Use%
+/dev/grid/node-x0-y0   10T    8T     2T   80%
+/dev/grid/node-x0-y1   11T    6T     5T   54%
+/dev/grid/node-x0-y2   32T   28T     4T   87%
+/dev/grid/node-x1-y0    9T    7T     2T   77%
+/dev/grid/node-x1-y1    8T    0T     8T    0%
+/dev/grid/node-x1-y2   11T    7T     4T   63%
+/dev/grid/node-x2-y0   10T    6T     4T   60%
+/dev/grid/node-x2-y1    9T    8T     1T   88%
+/dev/grid/node-x2-y2    9T    6T     3T   66%
+</code></pre>
+<p>In this example, you have a storage grid <code>3</code> nodes wide and <code>3</code> nodes tall.  The node you can access directly, <code>node-x0-y0</code>, is almost full. The node containing the data you want to access, <code>node-x2-y0</code> (because it has <code>y=0</code> and the highest <code>x</code> value), contains 6 <a href="https://en.wikipedia.org/wiki/Terabyte">terabytes</a> of data - enough to fit on your node, if only you could make enough space to move it there.</p>
+<p>Fortunately, <code>node-x1-y1</code> looks like it has enough free space to enable you to move some of this data around.  In fact, it seems like all of the nodes have enough space to hold any node's data (except <code>node-x0-y2</code>, which is much larger, very full, and not moving any time soon). So, initially, the grid's capacities and connections look like this:</p>
+<pre><code>( 8T/10T) --  7T/ 9T -- [ 6T/10T]
+    |           |           |
+  6T/11T  --  0T/ 8T --   8T/ 9T
+    |           |           |
+ 28T/32T  --  7T/11T --   6T/ 9T
+</code></pre>
+<p>The node you can access directly is in parentheses; the data you want starts in the node marked by square brackets.</p>
+<p>In this example, most of the nodes are interchangable: they're full enough that no other node's data would fit, but small enough that their data could be moved around. Let's draw these nodes as <code>.</code>. The exceptions are the empty node, which we'll draw as <code>_</code>, and the very large, very full node, which we'll draw as <code>#</code>. Let's also draw the goal data as <code>G</code>. Then, it looks like this:</p>
+<pre><code>(.) .  G
+ .  _  .
+ #  .  .
+</code></pre>
+<p>The goal is to move the data in the top right, <code>G</code>, to the node in parentheses. To do this, we can issue some commands to the grid and rearrange the data:</p>
+<ul>
+<li><p>Move data from <code>node-y0-x1</code> to <code>node-y1-x1</code>, leaving node <code>node-y0-x1</code> empty:</p><pre><code>(.) _  G
+ .  .  .
+ #  .  .
+</code></pre>
+<li><p>Move the goal data from <code>node-y0-x2</code> to <code>node-y0-x1</code>:</p><pre><code>(.) G  _
+ .  .  .
+ #  .  .
+</code></pre>
+<li><p>At this point, we're quite close. However, we have no deletion command, so we have to move some more data around. So, next, we move the data from <code>node-y1-x2</code> to <code>node-y0-x2</code>:</p><pre><code>(.) G  .
+ .  .  _
+ #  .  .
+</code></pre>
+<li><p>Move the data from <code>node-y1-x1</code> to <code>node-y1-x2</code>:</p><pre><code>(.) G  .
+ .  _  .
+ #  .  .
+</code></pre>
+<li><p>Move the data from <code>node-y1-x0</code> to <code>node-y1-x1</code>:</p><pre><code>(.) G  .
+ _  .  .
+ #  .  .
+</code></pre>
+<li><p>Next, we can free up space on our node by moving the data from <code>node-y0-x0</code> to <code>node-y1-x0</code>:</p><pre><code>(_) G  .
+ .  .  .
+ #  .  .
+</code></pre>
+</li>
+<li><p>Finally, we can access the goal data by moving the it from <code>node-y0-x1</code> to <code>node-y0-x0</code>:</p><pre><code>(G) _  .
+ .  .  .
+ #  .  .
+</code></pre>
+</li>
+</ul>
+<p>So, after <code>7</code> steps, we've accessed the data we want. Unfortunately, each of these moves takes time, and we need to be efficient:</p>
+<p><em>What is the fewest number of steps</em> required to move your goal data to <code>node-x0-y0</code>?</p>
+</article>
+<p>Your puzzle answer was <code>261</code>.</p><p class="day-success">Both parts of this puzzle are complete! They provide two gold stars: **</p>
+<p>At this point, you should <a href="/2016">return to your advent calendar</a> and try another puzzle.</p>
+<p>If you still want to see it, you can <a href="22/input" target="_blank">get your puzzle input</a>.</p>
+<p>You can also <span class="share">[Share<span class="share-content">on
+  <a href="https://twitter.com/intent/tweet?text=I%27ve+completed+%22Grid+Computing%22+%2D+Day+22+%2D+Advent+of+Code+2016&amp;url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F22&amp;related=ericwastl&amp;hashtags=AdventOfCode" target="_blank">Twitter</a>
+  <a href="https://plus.google.com/share?url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F22" target="_blank">Google+</a>
+  <a href="http://www.reddit.com/submit?url=http%3A%2F%2Fadventofcode%2Ecom%2F2016%2Fday%2F22&amp;title=I%27ve+completed+%22Grid+Computing%22+%2D+Day+22+%2D+Advent+of+Code+2016" target="_blank">Reddit</a
+></span>]</span> this puzzle.</p>
+</main>
+
+<!-- ga -->
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-69522494-1', 'auto');
+ga('send', 'pageview');
+</script>
+<!-- /ga -->
+</body>
+</html>
\ No newline at end of file